Index: third_party/WebKit/Source/core/layout/compositing/CompositedLayerMappingTest.cpp |
diff --git a/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMappingTest.cpp b/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMappingTest.cpp |
index 45d65c050b8fe16887cb9cba07653e41c14699ea..2328a074e1ea273a7cefc507a184623829d9ce95 100644 |
--- a/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMappingTest.cpp |
+++ b/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMappingTest.cpp |
@@ -45,6 +45,12 @@ protected: |
return graphicsLayer->m_previousInterestRect; |
} |
+ bool shouldPaintBackgroundOntoScrollingContentsLayer(const char* elementId) |
+ { |
+ CompositedLayerMapping* mapping = toLayoutBlock(getLayoutObjectByElementId(elementId))->layer()->compositedLayerMapping(); |
+ return mapping->shouldPaintBackgroundOntoScrollingContentsLayer(); |
+ } |
+ |
private: |
void SetUp() override |
{ |
@@ -626,4 +632,31 @@ TEST_F(CompositedLayerMappingTest, ScrollingContentsAndForegroundLayerPaintingPh |
EXPECT_FALSE(mapping->foregroundLayer()); |
} |
+TEST_F(CompositedLayerMappingTest, ShouldPaintBackgroundOntoScrollingContentsLayer) |
+{ |
+ document().frame()->settings()->setPreferCompositingToLCDTextEnabled(true); |
+ setBodyInnerHTML( |
+ "<style>.scroller { overflow: scroll; will-change: transform; width: 300px; height: 300px;} .spacer { height: 1000px; }</style>" |
+ "<div id='scroller1' class='scroller' style='background: white local;'>" |
+ " <div id='negative-composited-child' style='background-color: red; width: 1px; height: 1px; position: absolute; backface-visibility: hidden; z-index: -1'></div>" |
+ " <div class='spacer'></div>" |
+ "</div>" |
+ "<div id='scroller2' class='scroller' style='background: white content-box; padding: 10px;'>" |
+ " <div class='spacer'></div>" |
+ "</div>" |
+ "<div id='scroller3' class='scroller' style='background: white local content-box; padding: 10px;'>" |
+ " <div class='spacer'></div>" |
+ "</div>" |
+ ); |
+ |
+ // First scroller cannot paint background into scrolling contents layer because it has a negative z-index child. |
+ EXPECT_FALSE(shouldPaintBackgroundOntoScrollingContentsLayer("scroller1")); |
+ |
+ // Second scroller cannot paint background into scrolling contents layer because it has a content-box clip without local attachment. |
+ EXPECT_FALSE(shouldPaintBackgroundOntoScrollingContentsLayer("scroller2")); |
+ |
+ // Third scroller can paint background into scrolling contents layer. |
+ EXPECT_TRUE(shouldPaintBackgroundOntoScrollingContentsLayer("scroller3")); |
+} |
+ |
} // namespace blink |