| Index: third_party/WebKit/Source/core/layout/compositing/CompositingReasonFinderTest.cpp
|
| diff --git a/third_party/WebKit/Source/core/layout/compositing/CompositingReasonFinderTest.cpp b/third_party/WebKit/Source/core/layout/compositing/CompositingReasonFinderTest.cpp
|
| index ce5ddb73319dffff4ac917288477a1df61a414b2..fbcca8a4a29118b7b0bf5969bc343276692db480 100644
|
| --- a/third_party/WebKit/Source/core/layout/compositing/CompositingReasonFinderTest.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/compositing/CompositingReasonFinderTest.cpp
|
| @@ -303,4 +303,56 @@ TEST_F(CompositingReasonFinderTest, DoNotCompositeNestedSticky) {
|
| EXPECT_EQ(NotComposited, innerStickyLayer->compositingState());
|
| }
|
|
|
| +TEST_F(CompositingReasonFinderTest, CompositeSkewWithPromotedSkewedAncestor) {
|
| + setBodyInnerHTML(
|
| + "<style>.skew { transform: skew(20deg);}"
|
| + ".counter-skew { transform: skew(-20deg); }"
|
| + ".composited { will-change: transform; }</style>"
|
| + "<div class='skew'>"
|
| + " <div id='non-composited' class='counter-skew'></div>"
|
| + "</div>"
|
| + "<div id='skew' class='skew'>"
|
| + " <div id='should-composite' class='counter-skew'></div>"
|
| + " <div id='composited' class='composited counter-skew'></div>"
|
| + "</div>");
|
| + document().view()->updateAllLifecyclePhases();
|
| +
|
| + // Skewed element is not composited automatically.
|
| + Element* nonComposited = document().getElementById("non-composited");
|
| + PaintLayer* nonCompositedLayer =
|
| + toLayoutBoxModelObject(nonComposited->layoutObject())->layer();
|
| + ASSERT_TRUE(nonCompositedLayer);
|
| + EXPECT_EQ(NotComposited, nonCompositedLayer->compositingState());
|
| +
|
| + // Composite as it has composited descendant.
|
| + Element* compositedElement = document().getElementById("skew");
|
| + PaintLayer* compositedLayer =
|
| + toLayoutBoxModelObject(compositedElement->layoutObject())->layer();
|
| + ASSERT_TRUE(compositedLayer);
|
| + EXPECT_EQ(PaintsIntoOwnBacking, compositedLayer->compositingState());
|
| +
|
| + // Skewed element with promoted skewed ancestor gets promoted as well.
|
| + compositedElement = document().getElementById("should-composite");
|
| + compositedLayer =
|
| + toLayoutBoxModelObject(compositedElement->layoutObject())->layer();
|
| + ASSERT_TRUE(compositedLayer);
|
| + EXPECT_EQ(PaintsIntoOwnBacking, compositedLayer->compositingState());
|
| +
|
| + // Skewed element without promoted ancestor does not composite.
|
| + document().getElementById("composited")->removeAttribute("class");
|
| + document().view()->updateAllLifecyclePhases();
|
| + ASSERT_TRUE(compositedLayer);
|
| + EXPECT_EQ(NotComposited, compositedLayer->compositingState());
|
| +
|
| + // Skewed element with promoted ancestor which is not skewed does not
|
| + // composite.
|
| + document()
|
| + .getElementById("composited")
|
| + ->setAttribute(HTMLNames::classAttr, "composited");
|
| + document().getElementById("skew")->removeAttribute("class");
|
| + document().view()->updateAllLifecyclePhases();
|
| + ASSERT_TRUE(compositedLayer);
|
| + EXPECT_EQ(NotComposited, compositedLayer->compositingState());
|
| +}
|
| +
|
| } // namespace blink
|
|
|