| 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) {
|
|
|