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

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

Issue 2776563003: Only automatically promote sticky position elements which move with scroll. (Closed)
Patch Set: Merge with master Created 3 years, 9 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 2bd494decfda4c01ef7d4887b77edf117c14051a..8c146c3e4034b49b8f2629be24d8e1c8d73b71b8 100644
--- a/third_party/WebKit/Source/core/layout/compositing/CompositingReasonFinderTest.cpp
+++ b/third_party/WebKit/Source/core/layout/compositing/CompositingReasonFinderTest.cpp
@@ -61,6 +61,56 @@ TEST_F(CompositingReasonFinderTest, PromoteOpaqueFixedPosition) {
EXPECT_EQ(NotComposited, paintLayer->compositingState());
}
+TEST_F(CompositingReasonFinderTest, OnlyAnchoredStickyPositionPromoted) {
+ setBodyInnerHTML(
+ "<style>"
+ ".scroller {contain: paint; width: 400px; height: 400px; overflow: auto; "
+ "will-change: transform;}"
+ ".sticky { position: sticky; width: 10px; height: 10px;}</style>"
+ "<div class='scroller'>"
+ " <div id='sticky-top' class='sticky' style='top: 0px;'></div>"
+ " <div id='sticky-no-anchor' class='sticky'></div>"
+ " <div style='height: 2000px;'></div>"
+ "</div>");
+ document().view()->updateAllLifecyclePhases();
+
+ EXPECT_EQ(PaintsIntoOwnBacking,
+ toLayoutBoxModelObject(getLayoutObjectByElementId("sticky-top"))
+ ->layer()
+ ->compositingState());
+ EXPECT_EQ(NotComposited, toLayoutBoxModelObject(
+ getLayoutObjectByElementId("sticky-no-anchor"))
+ ->layer()
+ ->compositingState());
+}
+
+TEST_F(CompositingReasonFinderTest, OnlyScrollingStickyPositionPromoted) {
+ setBodyInnerHTML(
+ "<style>.scroller {width: 400px; height: 400px; overflow: auto; "
+ "will-change: transform;}"
+ ".sticky { position: sticky; top: 0; width: 10px; height: 10px;}"
+ "</style>"
+ "<div class='scroller'>"
+ " <div id='sticky-scrolling' class='sticky'></div>"
+ " <div style='height: 2000px;'></div>"
+ "</div>"
+ "<div class='scroller'>"
+ " <div id='sticky-no-scrolling' class='sticky'></div>"
+ "</div>");
+ document().view()->updateAllLifecyclePhases();
+
+ EXPECT_EQ(
+ PaintsIntoOwnBacking,
+ toLayoutBoxModelObject(getLayoutObjectByElementId("sticky-scrolling"))
+ ->layer()
+ ->compositingState());
+ EXPECT_EQ(
+ NotComposited,
+ toLayoutBoxModelObject(getLayoutObjectByElementId("sticky-no-scrolling"))
+ ->layer()
+ ->compositingState());
+}
+
// Tests that a transform on the fixed or an ancestor will prevent promotion
// TODO(flackr): Allow integer transforms as long as all of the ancestor
// transforms are also integer.

Powered by Google App Engine
This is Rietveld 408576698