diff options
author | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-07-12 02:03:34 +0000 |
---|---|---|
committer | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-07-12 02:03:34 +0000 |
commit | 7bfaf229c4d1f6dc1450ec3cb8f46e062785dd56 (patch) | |
tree | ef9d59fc874fe73728cba1168af40ff934bd68c9 | |
parent | 088ec725b2d7d2b77f0b7e5a80872b5325e28bea (diff) | |
download | chromium_src-7bfaf229c4d1f6dc1450ec3cb8f46e062785dd56.zip chromium_src-7bfaf229c4d1f6dc1450ec3cb8f46e062785dd56.tar.gz chromium_src-7bfaf229c4d1f6dc1450ec3cb8f46e062785dd56.tar.bz2 |
Use 2x resources for 1.25
BUG=372212
R=mukai@chromium.org
Review URL: https://codereview.chromium.org/372883002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@282777 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | ui/gfx/image/image_skia.cc | 4 | ||||
-rw-r--r-- | ui/gfx/image/image_skia_unittest.cc | 68 |
2 files changed, 47 insertions, 25 deletions
diff --git a/ui/gfx/image/image_skia.cc b/ui/gfx/image/image_skia.cc index 21d08de..737d9f4 100644 --- a/ui/gfx/image/image_skia.cc +++ b/ui/gfx/image/image_skia.cc @@ -32,10 +32,10 @@ gfx::ImageSkiaRep& NullImageRep() { std::vector<float>* g_supported_scales = NULL; // The difference to fall back to the smaller scale factor rather than the -// larger one. For example, assume 1.25 is requested but only 1.0 and 2.0 are +// larger one. For example, assume 1.20 is requested but only 1.0 and 2.0 are // supported. In that case, not fall back to 2.0 but 1.0, and then expand // the image to 1.25. -const float kFallbackToSmallerScaleDiff = 0.25f; +const float kFallbackToSmallerScaleDiff = 0.20f; } // namespace diff --git a/ui/gfx/image/image_skia_unittest.cc b/ui/gfx/image/image_skia_unittest.cc index e3e93c7..b178a04 100644 --- a/ui/gfx/image/image_skia_unittest.cc +++ b/ui/gfx/image/image_skia_unittest.cc @@ -423,6 +423,20 @@ TEST_F(ImageSkiaTest, Unscaled) { EXPECT_FALSE(image_skia.GetRepresentation(2.0f).unscaled()); } +namespace { + +std::vector<float> GetSortedScaleFactors(const gfx::ImageSkia& image) { + const std::vector<ImageSkiaRep>& image_reps = image.image_reps(); + std::vector<float> scale_factors; + for (size_t i = 0; i < image_reps.size(); ++i) { + scale_factors.push_back(image_reps[i].scale()); + } + std::sort(scale_factors.begin(), scale_factors.end()); + return scale_factors; +} + +} // namespace + TEST_F(ImageSkiaTest, ArbitraryScaleFactor) { // Do not test if the ImageSkia doesn't support arbitrary scale factors. if (!ImageSkia::IsDSFScalingInImageSkiaEnabled()) @@ -437,11 +451,7 @@ TEST_F(ImageSkiaTest, ArbitraryScaleFactor) { std::vector<ImageSkiaRep> image_reps = image.image_reps(); EXPECT_EQ(2u, image_reps.size()); - std::vector<float> scale_factors; - for (size_t i = 0; i < image_reps.size(); ++i) { - scale_factors.push_back(image_reps[i].scale()); - } - std::sort(scale_factors.begin(), scale_factors.end()); + std::vector<float> scale_factors = GetSortedScaleFactors(image); EXPECT_EQ(1.5f, scale_factors[0]); EXPECT_EQ(2.0f, scale_factors[1]); @@ -452,45 +462,57 @@ TEST_F(ImageSkiaTest, ArbitraryScaleFactor) { image_reps = image.image_reps(); EXPECT_EQ(3u, image_reps.size()); - scale_factors.clear(); - for (size_t i = 0; i < image_reps.size(); ++i) { - scale_factors.push_back(image_reps[i].scale()); - } - std::sort(scale_factors.begin(), scale_factors.end()); + scale_factors = GetSortedScaleFactors(image); EXPECT_EQ(1.5f, scale_factors[0]); EXPECT_EQ(1.75f, scale_factors[1]); EXPECT_EQ(2.0f, scale_factors[2]); - // 1.25 is falled back to 1.0. + // Requesting 1.25 scale factor also falls back to 2.0f and rescale. + // However, the image already has the 2.0f data, so it won't fetch again. image.GetRepresentation(1.25f); + EXPECT_EQ(0.0f, source->GetLastRequestedScaleAndReset()); + image_reps = image.image_reps(); + EXPECT_EQ(4u, image_reps.size()); + scale_factors = GetSortedScaleFactors(image); + EXPECT_EQ(1.25f, scale_factors[0]); + EXPECT_EQ(1.5f, scale_factors[1]); + EXPECT_EQ(1.75f, scale_factors[2]); + EXPECT_EQ(2.0f, scale_factors[3]); + + // 1.20 is falled back to 1.0. + image.GetRepresentation(1.20f); EXPECT_EQ(1.0f, source->GetLastRequestedScaleAndReset()); image_reps = image.image_reps(); - EXPECT_EQ(5u, image_reps.size()); + EXPECT_EQ(6u, image_reps.size()); + scale_factors = GetSortedScaleFactors(image); + EXPECT_EQ(1.0f, scale_factors[0]); + EXPECT_EQ(1.2f, scale_factors[1]); + EXPECT_EQ(1.25f, scale_factors[2]); + EXPECT_EQ(1.5f, scale_factors[3]); + EXPECT_EQ(1.75f, scale_factors[4]); + EXPECT_EQ(2.0f, scale_factors[5]); // Scale factor less than 1.0f will be falled back to 1.0f image.GetRepresentation(0.75f); EXPECT_EQ(0.0f, source->GetLastRequestedScaleAndReset()); image_reps = image.image_reps(); - EXPECT_EQ(6u, image_reps.size()); + EXPECT_EQ(7u, image_reps.size()); - scale_factors.clear(); - for (size_t i = 0; i < image_reps.size(); ++i) { - scale_factors.push_back(image_reps[i].scale()); - } - std::sort(scale_factors.begin(), scale_factors.end()); + scale_factors = GetSortedScaleFactors(image); EXPECT_EQ(0.75f, scale_factors[0]); EXPECT_EQ(1.0f, scale_factors[1]); - EXPECT_EQ(1.25f, scale_factors[2]); - EXPECT_EQ(1.5f, scale_factors[3]); - EXPECT_EQ(1.75f, scale_factors[4]); - EXPECT_EQ(2.0f, scale_factors[5]); + EXPECT_EQ(1.2f, scale_factors[2]); + EXPECT_EQ(1.25f, scale_factors[3]); + EXPECT_EQ(1.5f, scale_factors[4]); + EXPECT_EQ(1.75f, scale_factors[5]); + EXPECT_EQ(2.0f, scale_factors[6]); // Scale factor greater than 2.0f is falled back to 2.0f because it's not // supported. image.GetRepresentation(3.0f); EXPECT_EQ(0.0f, source->GetLastRequestedScaleAndReset()); image_reps = image.image_reps(); - EXPECT_EQ(7u, image_reps.size()); + EXPECT_EQ(8u, image_reps.size()); } TEST_F(ImageSkiaTest, ArbitraryScaleFactorWithMissingResource) { |