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

Side by Side Diff: third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp

Issue 2608543002: Store compositor element id in paint properties for animated objects. (Closed)
Patch Set: Move element id to paint property nodes. Created 3 years, 11 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/paint/PaintPropertyTreeBuilderTest.h" 5 #include "core/paint/PaintPropertyTreeBuilderTest.h"
6 6
7 #include "core/html/HTMLIFrameElement.h" 7 #include "core/html/HTMLIFrameElement.h"
8 #include "core/layout/LayoutTreeAsText.h" 8 #include "core/layout/LayoutTreeAsText.h"
9 #include "core/paint/ObjectPaintProperties.h" 9 #include "core/paint/ObjectPaintProperties.h"
10 #include "core/paint/PaintPropertyTreePrinter.h" 10 #include "core/paint/PaintPropertyTreePrinter.h"
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 if (RuntimeEnabledFeatures::rootLayerScrollingEnabled()) 50 if (RuntimeEnabledFeatures::rootLayerScrollingEnabled())
51 return frameView->layoutView()->paintProperties()->scroll(); 51 return frameView->layoutView()->paintProperties()->scroll();
52 return frameView->scroll(); 52 return frameView->scroll();
53 } 53 }
54 54
55 LayoutPoint PaintPropertyTreeBuilderTest::paintOffset( 55 LayoutPoint PaintPropertyTreeBuilderTest::paintOffset(
56 const LayoutObject* object) { 56 const LayoutObject* object) {
57 return object->paintProperties()->localBorderBoxProperties()->paintOffset; 57 return object->paintProperties()->localBorderBoxProperties()->paintOffset;
58 } 58 }
59 59
60 const ObjectPaintProperties*
61 PaintPropertyTreeBuilderTest::paintPropertiesForElement(const char* name) {
62 return document().getElementById(name)->layoutObject()->paintProperties();
63 }
64
60 void PaintPropertyTreeBuilderTest::SetUp() { 65 void PaintPropertyTreeBuilderTest::SetUp() {
61 Settings::setMockScrollbarsEnabled(true); 66 Settings::setMockScrollbarsEnabled(true);
62 67
63 RenderingTest::SetUp(); 68 RenderingTest::SetUp();
64 enableCompositing(); 69 enableCompositing();
65 } 70 }
66 71
67 void PaintPropertyTreeBuilderTest::TearDown() { 72 void PaintPropertyTreeBuilderTest::TearDown() {
68 RenderingTest::TearDown(); 73 RenderingTest::TearDown();
69 74
(...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after
414 const ObjectPaintProperties* perspectiveProperties = 419 const ObjectPaintProperties* perspectiveProperties =
415 perspective->layoutObject()->paintProperties(); 420 perspective->layoutObject()->paintProperties();
416 421
417 EXPECT_TRUE(perspectiveProperties->transform()); 422 EXPECT_TRUE(perspectiveProperties->transform());
418 EXPECT_TRUE( 423 EXPECT_TRUE(
419 perspectiveProperties->transform()->hasDirectCompositingReasons()); 424 perspectiveProperties->transform()->hasDirectCompositingReasons());
420 } 425 }
421 426
422 TEST_P(PaintPropertyTreeBuilderTest, 427 TEST_P(PaintPropertyTreeBuilderTest,
423 TransformNodeWithActiveAnimationHasDirectCompositingReason) { 428 TransformNodeWithActiveAnimationHasDirectCompositingReason) {
424 setBodyInnerHTML( 429 loadTestData("transform-animation.html");
Xianzhu 2016/12/29 20:40:38 I would prefer inlined html to separate test file
wkorman 2016/12/29 20:59:15 But we already use similar test data fixture in ot
425 "<style>" 430 EXPECT_TRUE(paintPropertiesForElement("target")
426 "@keyframes test {" 431 ->transform()
427 " 0% { transform: translate(1em, 1em) } " 432 ->hasDirectCompositingReasons());
428 " 100% { transform: translate(2em, 2em) } "
429 "} "
430 ".animate { "
431 " animation-name: test; "
432 " animation-duration: 1s "
433 "}"
434 "</style>"
435 "<div id='target' class='animate'></div>");
436 Element* target = document().getElementById("target");
437 const ObjectPaintProperties* properties =
438 target->layoutObject()->paintProperties();
439 EXPECT_TRUE(properties->transform()->hasDirectCompositingReasons());
440 } 433 }
441 434
442 namespace {
443
444 const char* kSimpleOpacityExampleHTML =
445 "<style>"
446 "div {"
447 " width: 100px;"
448 " height: 100px;"
449 " background-color: red;"
450 " animation-name: example;"
451 " animation-duration: 4s;"
452 "}"
453 "@keyframes example {"
454 " from { opacity: 0.0;}"
455 " to { opacity: 1.0;}"
456 "}"
457 "</style>"
458 "<div id='target'></div>";
459
460 } // namespace
461
462 TEST_P(PaintPropertyTreeBuilderTest, 435 TEST_P(PaintPropertyTreeBuilderTest,
463 OpacityAnimationDoesNotCreateTransformNode) { 436 OpacityAnimationDoesNotCreateTransformNode) {
464 setBodyInnerHTML(kSimpleOpacityExampleHTML); 437 loadTestData("opacity-animation.html");
465 Element* target = document().getElementById("target"); 438 EXPECT_EQ(nullptr, paintPropertiesForElement("target")->transform());
466 const ObjectPaintProperties* properties =
467 target->layoutObject()->paintProperties();
468 EXPECT_EQ(nullptr, properties->transform());
469 } 439 }
470 440
471 TEST_P(PaintPropertyTreeBuilderTest, 441 TEST_P(PaintPropertyTreeBuilderTest,
472 EffectNodeWithActiveAnimationHasDirectCompositingReason) { 442 EffectNodeWithActiveAnimationHasDirectCompositingReason) {
473 setBodyInnerHTML(kSimpleOpacityExampleHTML); 443 loadTestData("opacity-animation.html");
474 Element* target = document().getElementById("target"); 444 EXPECT_TRUE(paintPropertiesForElement("target")
475 const ObjectPaintProperties* properties = 445 ->effect()
476 target->layoutObject()->paintProperties(); 446 ->hasDirectCompositingReasons());
477 EXPECT_TRUE(properties->effect()->hasDirectCompositingReasons());
478 } 447 }
479 448
480 TEST_P(PaintPropertyTreeBuilderTest, WillChangeTransform) { 449 TEST_P(PaintPropertyTreeBuilderTest, WillChangeTransform) {
481 setBodyInnerHTML( 450 setBodyInnerHTML(
482 "<style> body { margin: 0 } </style>" 451 "<style> body { margin: 0 } </style>"
483 "<div id='transform' style='margin-left: 50px; margin-top: 100px;" 452 "<div id='transform' style='margin-left: 50px; margin-top: 100px;"
484 " width: 400px; height: 300px;" 453 " width: 400px; height: 300px;"
485 " will-change: transform'>" 454 " will-change: transform'>"
486 "</div>"); 455 "</div>");
487 456
(...skipping 2699 matching lines...) Expand 10 before | Expand all | Expand 10 after
3187 3156
3188 toElement(ancestor->node()) 3157 toElement(ancestor->node())
3189 ->setAttribute(HTMLNames::styleAttr, "position: static"); 3158 ->setAttribute(HTMLNames::styleAttr, "position: static");
3190 document().view()->updateAllLifecyclePhases(); 3159 document().view()->updateAllLifecyclePhases();
3191 EXPECT_NE(ancestor->paintProperties()->overflowClip(), 3160 EXPECT_NE(ancestor->paintProperties()->overflowClip(),
3192 descendant->paintProperties() 3161 descendant->paintProperties()
3193 ->localBorderBoxProperties() 3162 ->localBorderBoxProperties()
3194 ->propertyTreeState.clip()); 3163 ->propertyTreeState.clip());
3195 } 3164 }
3196 3165
3166 TEST_P(PaintPropertyTreeBuilderTest,
3167 TransformNodeNotAnimatedHasNoCompositorElementId) {
3168 setBodyInnerHTML("<div id='target' style='transform: translateX(2em)'></div");
3169 const ObjectPaintProperties* properties = paintPropertiesForElement("target");
3170 EXPECT_TRUE(properties->transform());
3171 EXPECT_EQ(CompositorElementId(),
3172 properties->transform()->compositorElementId());
3173 }
3174
3175 TEST_P(PaintPropertyTreeBuilderTest,
3176 EffectNodeNotAnimatedHasNoCompositorElementId) {
3177 setBodyInnerHTML("<div id='target' style='opacity: 0.5'></div");
3178 const ObjectPaintProperties* properties = paintPropertiesForElement("target");
3179 EXPECT_TRUE(properties->effect());
3180 EXPECT_EQ(CompositorElementId(), properties->effect()->compositorElementId());
3181 }
3182
3183 TEST_P(PaintPropertyTreeBuilderTest,
3184 TransformNodeAnimatedHasCompositorElementId) {
3185 loadTestData("transform-animation.html");
3186 const ObjectPaintProperties* properties = paintPropertiesForElement("target");
3187 EXPECT_TRUE(properties->transform());
3188 EXPECT_NE(CompositorElementId(),
3189 properties->transform()->compositorElementId());
3190 }
3191
3192 TEST_P(PaintPropertyTreeBuilderTest, EffectNodeAnimatedHasCompositorElementId) {
3193 loadTestData("opacity-animation.html");
3194 const ObjectPaintProperties* properties = paintPropertiesForElement("target");
3195 EXPECT_TRUE(properties->effect());
3196 EXPECT_NE(CompositorElementId(), properties->effect()->compositorElementId());
3197 }
3198
3197 } // namespace blink 3199 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698