Index: ui/gfx/image/image_skia_unittest.cc |
diff --git a/ui/gfx/image/image_skia_unittest.cc b/ui/gfx/image/image_skia_unittest.cc |
index e3e93c73b78989d832203c2b075319e1581979a3..b178a04724ba9d9f9c6f6ba8f0913beca1130a29 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) { |