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

Unified Diff: third_party/WebKit/Source/core/paint/PaintLayerTest.cpp

Issue 2716583005: Do not promote position sticky or fixed elements unless they move with scroll. (Closed)
Patch Set: Create a stacking context for sticky. 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/paint/PaintLayerTest.cpp
diff --git a/third_party/WebKit/Source/core/paint/PaintLayerTest.cpp b/third_party/WebKit/Source/core/paint/PaintLayerTest.cpp
index 4bd7a6dc5be2de4d405d04501d540134de615b0e..c4f79ee1944169aaaaafac1729906957793dd75a 100644
--- a/third_party/WebKit/Source/core/paint/PaintLayerTest.cpp
+++ b/third_party/WebKit/Source/core/paint/PaintLayerTest.cpp
@@ -116,7 +116,7 @@ TEST_P(PaintLayerTest, ScrollsWithViewportRelativePosition) {
PaintLayer* layer =
toLayoutBoxModelObject(getLayoutObjectByElementId("target"))->layer();
- EXPECT_FALSE(layer->sticksToViewport());
+ EXPECT_FALSE(layer->fixedToViewport());
}
TEST_P(PaintLayerTest, ScrollsWithViewportFixedPosition) {
@@ -124,7 +124,7 @@ TEST_P(PaintLayerTest, ScrollsWithViewportFixedPosition) {
PaintLayer* layer =
toLayoutBoxModelObject(getLayoutObjectByElementId("target"))->layer();
- EXPECT_TRUE(layer->sticksToViewport());
+ EXPECT_TRUE(layer->fixedToViewport());
}
TEST_P(PaintLayerTest, ScrollsWithViewportFixedPositionInsideTransform) {
@@ -140,7 +140,7 @@ TEST_P(PaintLayerTest, ScrollsWithViewportFixedPositionInsideTransform) {
"<div style='width: 10px; height: 1000px'></div>");
PaintLayer* layer =
toLayoutBoxModelObject(getLayoutObjectByElementId("target"))->layer();
- EXPECT_FALSE(layer->sticksToViewport());
+ EXPECT_FALSE(layer->fixedToViewport());
}
TEST_P(PaintLayerTest,
@@ -155,44 +155,56 @@ TEST_P(PaintLayerTest,
// In SPv2 mode, we correctly determine that the frame doesn't scroll at all,
// and so return true.
if (RuntimeEnabledFeatures::slimmingPaintV2Enabled())
- EXPECT_TRUE(layer->sticksToViewport());
+ EXPECT_TRUE(layer->fixedToViewport());
else
- EXPECT_FALSE(layer->sticksToViewport());
+ EXPECT_FALSE(layer->fixedToViewport());
}
-TEST_P(PaintLayerTest, ScrollsWithViewportStickyPosition) {
+TEST_P(PaintLayerTest, SticksToScrollerStickyPosition) {
setBodyInnerHTML(
"<div style='transform: translateZ(0)'>"
- " <div id='target' style='position: sticky'></div>"
+ " <div id='target' style='position: sticky; top: 0;'></div>"
"</div>"
"<div style='width: 10px; height: 1000px'></div>");
PaintLayer* layer =
toLayoutBoxModelObject(getLayoutObjectByElementId("target"))->layer();
- EXPECT_TRUE(layer->sticksToViewport());
+ EXPECT_TRUE(layer->sticksToScroller());
}
-TEST_P(PaintLayerTest, ScrollsWithViewportStickyPositionNoScroll) {
+TEST_P(PaintLayerTest, SticksToScrollerNoAnchor) {
setBodyInnerHTML(
"<div style='transform: translateZ(0)'>"
" <div id='target' style='position: sticky'></div>"
+ "</div>"
+ "<div style='width: 10px; height: 1000px'></div>");
+
+ PaintLayer* layer =
+ toLayoutBoxModelObject(getLayoutObjectByElementId("target"))->layer();
+ EXPECT_FALSE(layer->sticksToScroller());
+}
+
+TEST_P(PaintLayerTest, SticksToScrollerStickyPositionNoScroll) {
+ setBodyInnerHTML(
+ "<div style='transform: translateZ(0)'>"
+ " <div id='target' style='position: sticky; top: 0;'></div>"
"</div>");
PaintLayer* layer =
toLayoutBoxModelObject(getLayoutObjectByElementId("target"))->layer();
- EXPECT_TRUE(layer->sticksToViewport());
+ EXPECT_TRUE(layer->sticksToScroller());
}
-TEST_P(PaintLayerTest, ScrollsWithViewportStickyPositionInsideScroller) {
+TEST_P(PaintLayerTest, SticksToScrollerStickyPositionInsideScroller) {
setBodyInnerHTML(
"<div style='overflow:scroll; width: 100px; height: 100px;'>"
- " <div id='target' style='position: sticky'></div>"
+ " <div id='target' style='position: sticky; top: 0;'></div>"
" <div style='width: 50px; height: 1000px;'></div>"
"</div>");
PaintLayer* layer =
toLayoutBoxModelObject(getLayoutObjectByElementId("target"))->layer();
- EXPECT_FALSE(layer->sticksToViewport());
+ EXPECT_TRUE(layer->sticksToScroller());
}
TEST_P(PaintLayerTest, CompositedScrollingNoNeedsRepaint) {

Powered by Google App Engine
This is Rietveld 408576698