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

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: Avoid computing constraints for non-anchored sticky and add/update tests. 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 d5b41edcb04b25396b1dfabef29843576cdc7096..4f5767a7d4c46201756d5622ba201f2f7d90164f 100644
--- a/third_party/WebKit/Source/core/paint/PaintLayerTest.cpp
+++ b/third_party/WebKit/Source/core/paint/PaintLayerTest.cpp
@@ -129,7 +129,7 @@ TEST_P(PaintLayerTest, ScrollsWithViewportRelativePosition) {
PaintLayer* layer =
toLayoutBoxModelObject(getLayoutObjectByElementId("target"))->layer();
- EXPECT_FALSE(layer->sticksToViewport());
+ EXPECT_FALSE(layer->fixedToViewport());
}
TEST_P(PaintLayerTest, ScrollsWithViewportFixedPosition) {
@@ -137,7 +137,7 @@ TEST_P(PaintLayerTest, ScrollsWithViewportFixedPosition) {
PaintLayer* layer =
toLayoutBoxModelObject(getLayoutObjectByElementId("target"))->layer();
- EXPECT_TRUE(layer->sticksToViewport());
+ EXPECT_TRUE(layer->fixedToViewport());
}
TEST_P(PaintLayerTest, ScrollsWithViewportFixedPositionInsideTransform) {
@@ -153,7 +153,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,
@@ -168,44 +168,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