| Index: third_party/WebKit/Source/core/layout/ImageQualityControllerTest.cpp
|
| diff --git a/third_party/WebKit/Source/core/layout/ImageQualityControllerTest.cpp b/third_party/WebKit/Source/core/layout/ImageQualityControllerTest.cpp
|
| index cefe8ee758deabd9ca1bab26ffefbc611b4082af..6a8b62f95ca0a1e3bb8a700f1645ff50c94397c8 100644
|
| --- a/third_party/WebKit/Source/core/layout/ImageQualityControllerTest.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/ImageQualityControllerTest.cpp
|
| @@ -177,6 +177,36 @@ TEST_F(ImageQualityControllerTest, LowQualityFilterForResizingImage)
|
| EXPECT_EQ(InterpolationMedium, controller()->chooseInterpolationQuality(*img, testImage.get(), testImage.get(), LayoutSize(4, 4)));
|
| }
|
|
|
| +TEST_F(ImageQualityControllerTest, MediumQualityFilterForNotAnimatedWhileAnotherAnimates)
|
| +{
|
| + MockTimer* mockTimer = new MockTimer(controller(), &ImageQualityController::highQualityRepaintTimerFired);
|
| + controller()->setTimer(mockTimer);
|
| + setBodyInnerHTML("<img id='myAnimatingImage' src='myimage'></img> <img id='myNonAnimatingImage' src='myimage2'></img>");
|
| + LayoutImage* animatingImage = toLayoutImage(document().getElementById("myAnimatingImage")->layoutObject());
|
| + LayoutImage* nonAnimatingImage = toLayoutImage(document().getElementById("myNonAnimatingImage")->layoutObject());
|
| +
|
| + RefPtr<TestImageLowQuality> testImage = adoptRef(new TestImageLowQuality);
|
| + OwnPtr<PaintController> paintController = PaintController::create();
|
| + GraphicsContext context(*paintController);
|
| +
|
| + // Paint once. This will kick off a timer to see if we resize it during that timer's execution.
|
| + EXPECT_EQ(InterpolationMedium, controller()->chooseInterpolationQuality(*animatingImage, testImage.get(), testImage.get(), LayoutSize(2, 2)));
|
| +
|
| + // Go into low-quality mode now that the size changed.
|
| + EXPECT_EQ(InterpolationLow, controller()->chooseInterpolationQuality(*animatingImage, testImage.get(), testImage.get(), LayoutSize(3, 3)));
|
| +
|
| + // The non-animating image receives a medium-quality filter, even though the other one is animating.
|
| + EXPECT_EQ(InterpolationMedium, controller()->chooseInterpolationQuality(*nonAnimatingImage, testImage.get(), testImage.get(), LayoutSize(4, 4)));
|
| +
|
| + // Now the second image has animated, so it also gets painted with a low-quality filter.
|
| + EXPECT_EQ(InterpolationLow, controller()->chooseInterpolationQuality(*nonAnimatingImage, testImage.get(), testImage.get(), LayoutSize(3, 3)));
|
| +
|
| + mockTimer->fire();
|
| + // The timer fired before painting at another size, so this doesn't count as animation. Therefore not painting at low quality for any image.
|
| + EXPECT_EQ(InterpolationMedium, controller()->chooseInterpolationQuality(*animatingImage, testImage.get(), testImage.get(), LayoutSize(4, 4)));
|
| + EXPECT_EQ(InterpolationMedium, controller()->chooseInterpolationQuality(*nonAnimatingImage, testImage.get(), testImage.get(), LayoutSize(4, 4)));
|
| +}
|
| +
|
| TEST_F(ImageQualityControllerTest, DontKickTheAnimationTimerWhenPaintingAtTheSameSize)
|
| {
|
| MockTimer* mockTimer = new MockTimer(controller(), &ImageQualityController::highQualityRepaintTimerFired);
|
|
|