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

Unified Diff: third_party/WebKit/Source/core/layout/compositing/CompositingReasonFinderTest.cpp

Issue 2708883005: Handle nested position:sticky elements correctly (main thread) (Closed)
Patch Set: Rebase 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 side-by-side diff with in-line comments
Download patch
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 49f8ffe7a5ffdcefa859c2eb07a6179c8460a5f2..932784d791769c47dd0cffc94f0dc80a62c01bc2 100644
--- a/third_party/WebKit/Source/core/layout/compositing/CompositingReasonFinderTest.cpp
+++ b/third_party/WebKit/Source/core/layout/compositing/CompositingReasonFinderTest.cpp
@@ -271,4 +271,36 @@ TEST_F(CompositingReasonFinderTest, RequiresCompositingForEffectAnimation) {
CompositingReasonFinder::requiresCompositingForEffectAnimation(*style));
}
+TEST_F(CompositingReasonFinderTest, DoNotCompositeNestedSticky) {
+ ScopedCompositeFixedPositionForTest compositeFixedPosition(true);
+
+ setBodyInnerHTML(
+ "<style>.scroller { overflow: scroll; height: 200px; width: 100px; }"
+ ".container { height: 500px; }"
+ ".opaque { background-color: white; contain: paint; }"
+ "#outerSticky { height: 50px; position: sticky; top: 0px; }"
+ "#innerSticky { height: 20px; position: sticky; top: 25px; }</style>"
+ "<div class='scroller'>"
+ " <div class='container'>"
+ " <div id='outerSticky' class='opaque'>"
+ " <div id='innerSticky' class='opaque'></div>"
+ " </div>"
+ " </div>"
+ "</div>");
+ document().view()->updateAllLifecyclePhases();
+
+ Element* outerSticky = document().getElementById("outerSticky");
+ PaintLayer* outerStickyLayer =
+ toLayoutBoxModelObject(outerSticky->layoutObject())->layer();
+ ASSERT_TRUE(outerStickyLayer);
+
+ Element* innerSticky = document().getElementById("innerSticky");
+ PaintLayer* innerStickyLayer =
+ toLayoutBoxModelObject(innerSticky->layoutObject())->layer();
+ ASSERT_TRUE(innerStickyLayer);
+
+ EXPECT_EQ(PaintsIntoOwnBacking, outerStickyLayer->compositingState());
+ EXPECT_EQ(NotComposited, innerStickyLayer->compositingState());
+}
+
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698