Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(62)

Side by Side Diff: third_party/WebKit/Source/core/layout/ImageQualityControllerTest.cpp

Issue 2701993002: DO NOT COMMIT: Results of running new (proposed) clang-format on Blink (Closed)
Patch Set: Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/layout/ImageQualityController.h" 5 #include "core/layout/ImageQualityController.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include "core/layout/LayoutImage.h" 8 #include "core/layout/LayoutImage.h"
9 #include "core/layout/LayoutTestHelper.h" 9 #include "core/layout/LayoutTestHelper.h"
10 #include "platform/graphics/GraphicsContext.h" 10 #include "platform/graphics/GraphicsContext.h"
(...skipping 14 matching lines...) Expand all
25 RenderingTest::SetUp(); 25 RenderingTest::SetUp();
26 } 26 }
27 27
28 ImageQualityController* m_controller; 28 ImageQualityController* m_controller;
29 }; 29 };
30 30
31 TEST_F(ImageQualityControllerTest, RegularImage) { 31 TEST_F(ImageQualityControllerTest, RegularImage) {
32 setBodyInnerHTML("<img src='myimage'></img>"); 32 setBodyInnerHTML("<img src='myimage'></img>");
33 LayoutObject* obj = document().body()->firstChild()->layoutObject(); 33 LayoutObject* obj = document().body()->firstChild()->layoutObject();
34 34
35 EXPECT_EQ(InterpolationDefault, controller()->chooseInterpolationQuality( 35 EXPECT_EQ(InterpolationDefault,
36 *obj, nullptr, nullptr, LayoutSize())); 36 controller()->chooseInterpolationQuality(*obj, nullptr, nullptr,
37 LayoutSize()));
37 } 38 }
38 39
39 TEST_F(ImageQualityControllerTest, ImageRenderingPixelated) { 40 TEST_F(ImageQualityControllerTest, ImageRenderingPixelated) {
40 setBodyInnerHTML( 41 setBodyInnerHTML(
41 "<img src='myimage' style='image-rendering: pixelated'></img>"); 42 "<img src='myimage' style='image-rendering: pixelated'></img>");
42 LayoutObject* obj = document().body()->firstChild()->layoutObject(); 43 LayoutObject* obj = document().body()->firstChild()->layoutObject();
43 44
44 EXPECT_EQ(InterpolationNone, controller()->chooseInterpolationQuality( 45 EXPECT_EQ(InterpolationNone,
45 *obj, nullptr, nullptr, LayoutSize())); 46 controller()->chooseInterpolationQuality(*obj, nullptr, nullptr,
47 LayoutSize()));
46 } 48 }
47 49
48 #if !USE(LOW_QUALITY_IMAGE_INTERPOLATION) 50 #if !USE(LOW_QUALITY_IMAGE_INTERPOLATION)
49 51
50 class TestImageAnimated : public Image { 52 class TestImageAnimated : public Image {
51 public: 53 public:
52 bool maybeAnimated() override { return true; } 54 bool maybeAnimated() override { return true; }
53 bool currentFrameKnownToBeOpaque(MetadataMode = UseCurrentMetadata) override { 55 bool currentFrameKnownToBeOpaque(MetadataMode = UseCurrentMetadata) override {
54 return false; 56 return false;
55 } 57 }
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 document().getElementById("myAnimatingImage")->layoutObject()); 231 document().getElementById("myAnimatingImage")->layoutObject());
230 LayoutImage* nonAnimatingImage = toLayoutImage( 232 LayoutImage* nonAnimatingImage = toLayoutImage(
231 document().getElementById("myNonAnimatingImage")->layoutObject()); 233 document().getElementById("myNonAnimatingImage")->layoutObject());
232 234
233 RefPtr<TestImageLowQuality> testImage = adoptRef(new TestImageLowQuality); 235 RefPtr<TestImageLowQuality> testImage = adoptRef(new TestImageLowQuality);
234 std::unique_ptr<PaintController> paintController = PaintController::create(); 236 std::unique_ptr<PaintController> paintController = PaintController::create();
235 GraphicsContext context(*paintController); 237 GraphicsContext context(*paintController);
236 238
237 // Paint once. This will kick off a timer to see if we resize it during that 239 // Paint once. This will kick off a timer to see if we resize it during that
238 // timer's execution. 240 // timer's execution.
239 EXPECT_EQ(InterpolationMedium, controller()->chooseInterpolationQuality( 241 EXPECT_EQ(
240 *animatingImage, testImage.get(), 242 InterpolationMedium,
241 testImage.get(), LayoutSize(2, 2))); 243 controller()->chooseInterpolationQuality(
244 *animatingImage, testImage.get(), testImage.get(), LayoutSize(2, 2)));
242 245
243 // Go into low-quality mode now that the size changed. 246 // Go into low-quality mode now that the size changed.
244 EXPECT_EQ(InterpolationLow, controller()->chooseInterpolationQuality( 247 EXPECT_EQ(
245 *animatingImage, testImage.get(), 248 InterpolationLow,
246 testImage.get(), LayoutSize(3, 3))); 249 controller()->chooseInterpolationQuality(
250 *animatingImage, testImage.get(), testImage.get(), LayoutSize(3, 3)));
247 251
248 // The non-animating image receives a medium-quality filter, even though the 252 // The non-animating image receives a medium-quality filter, even though the
249 // other one is animating. 253 // other one is animating.
250 EXPECT_EQ(InterpolationMedium, controller()->chooseInterpolationQuality( 254 EXPECT_EQ(InterpolationMedium,
251 *nonAnimatingImage, testImage.get(), 255 controller()->chooseInterpolationQuality(
252 testImage.get(), LayoutSize(4, 4))); 256 *nonAnimatingImage, testImage.get(), testImage.get(),
257 LayoutSize(4, 4)));
253 258
254 // Now the second image has animated, so it also gets painted with a 259 // Now the second image has animated, so it also gets painted with a
255 // low-quality filter. 260 // low-quality filter.
256 EXPECT_EQ(InterpolationLow, controller()->chooseInterpolationQuality( 261 EXPECT_EQ(InterpolationLow,
257 *nonAnimatingImage, testImage.get(), 262 controller()->chooseInterpolationQuality(
258 testImage.get(), LayoutSize(3, 3))); 263 *nonAnimatingImage, testImage.get(), testImage.get(),
264 LayoutSize(3, 3)));
259 265
260 mockTimer->fire(); 266 mockTimer->fire();
261 // The timer fired before painting at another size, so this doesn't count as 267 // The timer fired before painting at another size, so this doesn't count as
262 // animation. Therefore not painting at low quality for any image. 268 // animation. Therefore not painting at low quality for any image.
263 EXPECT_EQ(InterpolationMedium, controller()->chooseInterpolationQuality( 269 EXPECT_EQ(
264 *animatingImage, testImage.get(), 270 InterpolationMedium,
265 testImage.get(), LayoutSize(4, 4))); 271 controller()->chooseInterpolationQuality(
266 EXPECT_EQ(InterpolationMedium, controller()->chooseInterpolationQuality( 272 *animatingImage, testImage.get(), testImage.get(), LayoutSize(4, 4)));
267 *nonAnimatingImage, testImage.get(), 273 EXPECT_EQ(InterpolationMedium,
268 testImage.get(), LayoutSize(4, 4))); 274 controller()->chooseInterpolationQuality(
275 *nonAnimatingImage, testImage.get(), testImage.get(),
276 LayoutSize(4, 4)));
269 } 277 }
270 278
271 TEST_F(ImageQualityControllerTest, 279 TEST_F(ImageQualityControllerTest,
272 DontKickTheAnimationTimerWhenPaintingAtTheSameSize) { 280 DontKickTheAnimationTimerWhenPaintingAtTheSameSize) {
273 MockTimer* mockTimer = 281 MockTimer* mockTimer =
274 MockTimer::create(controller(), 282 MockTimer::create(controller(),
275 &ImageQualityController::highQualityRepaintTimerFired) 283 &ImageQualityController::highQualityRepaintTimerFired)
276 .release(); 284 .release();
277 controller()->setTimer(WTF::wrapUnique(mockTimer)); 285 controller()->setTimer(WTF::wrapUnique(mockTimer));
278 setBodyInnerHTML("<img src='myimage'></img>"); 286 setBodyInnerHTML("<img src='myimage'></img>");
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 // timer's execution. 333 // timer's execution.
326 mockTimer->setTime(0.1); 334 mockTimer->setTime(0.1);
327 EXPECT_FALSE(controller()->shouldPaintAtLowQuality( 335 EXPECT_FALSE(controller()->shouldPaintAtLowQuality(
328 *img, testImage.get(), testImage.get(), LayoutSize(2, 2), 0.1)); 336 *img, testImage.get(), testImage.get(), LayoutSize(2, 2), 0.1));
329 EXPECT_EQ(ImageQualityController::cLowQualityTimeThreshold, 337 EXPECT_EQ(ImageQualityController::cLowQualityTimeThreshold,
330 mockTimer->nextFireInterval()); 338 mockTimer->nextFireInterval());
331 339
332 // Go into low-quality mode now that the size changed. 340 // Go into low-quality mode now that the size changed.
333 double nextTime = 0.1 + ImageQualityController::cTimerRestartThreshold / 2.0; 341 double nextTime = 0.1 + ImageQualityController::cTimerRestartThreshold / 2.0;
334 mockTimer->setTime(nextTime); 342 mockTimer->setTime(nextTime);
335 EXPECT_EQ(true, controller()->shouldPaintAtLowQuality( 343 EXPECT_EQ(
336 *img, testImage.get(), testImage.get(), LayoutSize(3, 3), 344 true,
337 nextTime)); 345 controller()->shouldPaintAtLowQuality(
346 *img, testImage.get(), testImage.get(), LayoutSize(3, 3), nextTime));
338 // The fire interval has decreased, because we have not restarted the timer. 347 // The fire interval has decreased, because we have not restarted the timer.
339 EXPECT_EQ(ImageQualityController::cLowQualityTimeThreshold - 348 EXPECT_EQ(ImageQualityController::cLowQualityTimeThreshold -
340 ImageQualityController::cTimerRestartThreshold / 2.0, 349 ImageQualityController::cTimerRestartThreshold / 2.0,
341 mockTimer->nextFireInterval()); 350 mockTimer->nextFireInterval());
342 351
343 // This animation is far enough in the future to make the timer restart, since 352 // This animation is far enough in the future to make the timer restart, since
344 // it is half over. 353 // it is half over.
345 nextTime = 0.1 + ImageQualityController::cTimerRestartThreshold + 0.01; 354 nextTime = 0.1 + ImageQualityController::cTimerRestartThreshold + 0.01;
346 EXPECT_EQ(true, controller()->shouldPaintAtLowQuality( 355 EXPECT_EQ(
347 *img, testImage.get(), testImage.get(), LayoutSize(4, 4), 356 true,
348 nextTime)); 357 controller()->shouldPaintAtLowQuality(
358 *img, testImage.get(), testImage.get(), LayoutSize(4, 4), nextTime));
349 // Now the timer has restarted, leading to a larger fire interval. 359 // Now the timer has restarted, leading to a larger fire interval.
350 EXPECT_EQ(ImageQualityController::cLowQualityTimeThreshold, 360 EXPECT_EQ(ImageQualityController::cLowQualityTimeThreshold,
351 mockTimer->nextFireInterval()); 361 mockTimer->nextFireInterval());
352 } 362 }
353 363
354 #endif 364 #endif
355 365
356 } // namespace blink 366 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698