Chromium Code Reviews| 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..86ce5e2d0d1ec7b6cc062f112c9d3fafb5dc9197 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>div.skew { transform: skew(20deg);}" |
| + "div.skew > div { transform: skew(-20deg); }" |
| + "div.composited { will-change: transform; }</style>" |
| + "<div class='skew'>" |
| + " <div id='non-composited'></div>" |
| + "</div>" |
| + "<div id='skew' class='skew'>" |
| + " <div id='should-composite'></div>" |
| + " <div id='composited' class='composited'></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()); |
|
flackr
2017/02/28 21:40:14
This should not automatically be composited, it's
|
| + |
| + // 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 |