| Index: third_party/WebKit/Source/core/layout/LayoutBoxModelObjectTest.cpp
|
| diff --git a/third_party/WebKit/Source/core/layout/LayoutBoxModelObjectTest.cpp b/third_party/WebKit/Source/core/layout/LayoutBoxModelObjectTest.cpp
|
| index 2075455464a254e8ad6aab65699330b30d5f2476..0001d9c90b14bcf3cadb4d33c634c714cf74f57e 100644
|
| --- a/third_party/WebKit/Source/core/layout/LayoutBoxModelObjectTest.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/LayoutBoxModelObjectTest.cpp
|
| @@ -339,11 +339,18 @@ TEST_F(LayoutBoxModelObjectTest, StickyPositionConstraintInvalidation) {
|
| TEST_F(LayoutBoxModelObjectTest,
|
| StickyPositionFindsCorrectStickyBoxShiftingAncestor) {
|
| setBodyInnerHTML(
|
| - "<style>#stickyOuterDiv { position: sticky; }"
|
| - "#stickyOuterInline { position: sticky; display: inline; }"
|
| - "#stickyInnerInline { position: sticky; display: inline; }</style>"
|
| - "<div id='stickyOuterDiv'><div id='stickyOuterInline'>"
|
| - "<div id='stickyInnerInline'></div></div></div>");
|
| + "<style>#stickyOuterDiv { position: sticky; top: 0;}"
|
| + "#stickyOuterInline { position: sticky; top: 0; display: inline; }"
|
| + "#unanchoredSticky { position: sticky; display: inline; }"
|
| + "#stickyInnerInline { position: sticky; top: 0; display: inline; "
|
| + "}</style>"
|
| + "<div id='stickyOuterDiv'>"
|
| + " <div id='stickyOuterInline'>"
|
| + " <div id='unanchoredSticky'>"
|
| + " <div id='stickyInnerInline'></div>"
|
| + " </div>"
|
| + " </div>"
|
| + "</div>");
|
|
|
| LayoutBoxModelObject* stickyOuterDiv =
|
| toLayoutBoxModelObject(getLayoutObjectByElementId("stickyOuterDiv"));
|
| @@ -386,12 +393,19 @@ TEST_F(LayoutBoxModelObjectTest,
|
| // We make the scroller itself sticky in order to check that elements do not
|
| // detect it as their containing-block shifting ancestor.
|
| setBodyInnerHTML(
|
| - "<style>#scroller { overflow-y: scroll; position: sticky; }"
|
| - "#stickyParent { position: sticky; }"
|
| - "#stickyChild { position: sticky; }"
|
| - "#stickyNestedChild { position: sticky; }</style>"
|
| - "<div id='scroller'><div id='stickyParent'><div id='stickyChild'></div>"
|
| - "<div><div id='stickyNestedChild'></div></div></div></div>");
|
| + "<style>#scroller { overflow-y: scroll; position: sticky; top: 0;}"
|
| + "#stickyParent { position: sticky; top: 0;}"
|
| + "#stickyChild { position: sticky; top: 0;}"
|
| + "#unanchoredSticky { position: sticky; }"
|
| + "#stickyNestedChild { position: sticky; top: 0;}</style>"
|
| + "<div id='scroller'>"
|
| + " <div id='stickyParent'>"
|
| + " <div id='unanchoredSticky'>"
|
| + " <div id='stickyChild'></div>"
|
| + " <div><div id='stickyNestedChild'></div></div>"
|
| + " </div>"
|
| + " </div>"
|
| + "</div>");
|
|
|
| LayoutBoxModelObject* scroller =
|
| toLayoutBoxModelObject(getLayoutObjectByElementId("scroller"));
|
| @@ -418,7 +432,8 @@ TEST_F(LayoutBoxModelObjectTest,
|
| .nearestStickyBoxShiftingContainingBlock());
|
|
|
| // Both inner children should detect the parent <div> as their
|
| - // containing-block shifting ancestor.
|
| + // containing-block shifting ancestor. They skip past unanchored sticky
|
| + // because it will never have a non-zero offset.
|
| EXPECT_EQ(stickyParent,
|
| constraintsMap.at(stickyChild->layer())
|
| .nearestStickyBoxShiftingContainingBlock());
|
| @@ -435,8 +450,8 @@ TEST_F(LayoutBoxModelObjectTest,
|
| TEST_F(LayoutBoxModelObjectTest,
|
| StickyPositionFindsCorrectContainingBlockShiftingAncestorRoot) {
|
| setBodyInnerHTML(
|
| - "<style>#stickyParent { position: sticky; }"
|
| - "#stickyGrandchild { position: sticky; }</style>"
|
| + "<style>#stickyParent { position: sticky; top: 0;}"
|
| + "#stickyGrandchild { position: sticky; top: 0;}</style>"
|
| "<div id='stickyParent'><div><div id='stickyGrandchild'></div></div>"
|
| "</div>");
|
|
|
| @@ -468,8 +483,8 @@ TEST_F(LayoutBoxModelObjectTest,
|
| StickyPositionFindsCorrectContainingBlockShiftingAncestorTable) {
|
| setBodyInnerHTML(
|
| "<style>#scroller { overflow-y: scroll; }"
|
| - "#stickyOuter { position: sticky; }"
|
| - "#stickyTh { position: sticky; }</style>"
|
| + "#stickyOuter { position: sticky; top: 0;}"
|
| + "#stickyTh { position: sticky; top: 0;}</style>"
|
| "<div id='scroller'><div id='stickyOuter'><table><thead><tr>"
|
| "<th id='stickyTh'></th></tr></thead></table></div></div>");
|
|
|
| @@ -843,10 +858,18 @@ TEST_F(LayoutBoxModelObjectTest, StickyPositionNestedInlineElements) {
|
| "<style>#scroller { width: 100px; height: 100px; overflow-y: scroll; }"
|
| "#paddingBefore { height: 50px; }"
|
| "#outerInline { display: inline; position: sticky; top: 0; }"
|
| + "#unanchoredSticky { position: sticky; display: inline; }"
|
| "#innerInline { display: inline; position: sticky; top: 25px; }"
|
| "#paddingAfter { height: 200px; }</style>"
|
| - "<div id='scroller'><div id='paddingBefore'></div><div id='outerInline'>"
|
| - "<div id='innerInline'></div></div><div id='paddingAfter'></div></div>");
|
| + "<div id='scroller'>"
|
| + " <div id='paddingBefore'></div>"
|
| + " <div id='outerInline'>"
|
| + " <div id='unanchoredSticky'>"
|
| + " <div id='innerInline'></div>"
|
| + " </div>"
|
| + " </div>"
|
| + " <div id='paddingAfter'></div>"
|
| + "</div>");
|
|
|
| LayoutBoxModelObject* outerInline =
|
| toLayoutBoxModelObject(getLayoutObjectByElementId("outerInline"));
|
|
|