| Index: third_party/WebKit/Source/core/layout/ScrollAnchorTest.cpp
|
| diff --git a/third_party/WebKit/Source/core/layout/ScrollAnchorTest.cpp b/third_party/WebKit/Source/core/layout/ScrollAnchorTest.cpp
|
| index 84a7c4024be401ca6710f1845a4ee5d9ae25493d..2f64fedaea09b47d616641862722dc27a2398dab 100644
|
| --- a/third_party/WebKit/Source/core/layout/ScrollAnchorTest.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/ScrollAnchorTest.cpp
|
| @@ -640,6 +640,35 @@ TEST_F(ScrollAnchorTest, OptOutScrollingDiv)
|
| scrollAnchor(viewport).anchorObject());
|
| }
|
|
|
| +TEST_F(ScrollAnchorTest, ExcludeAnchoringIfAncestorChangesPaddingOrMargin)
|
| +{
|
| + setBodyInnerHTML(
|
| + "<style> body { height: 1000px; margin: 0px; } div { height: 100px } </style>"
|
| + "<div id='block1'>abc</div>"
|
| + "<div id='block2'>def</div>");
|
| +
|
| + ScrollableArea* viewport = layoutViewport();
|
| + scrollLayoutViewport(DoubleSize(0, 150));
|
| +
|
| + // Padding change on anchor's ancestor shouldn't trigger anchoring.
|
| + document().body()->setAttribute(HTMLNames::styleAttr,
|
| + AtomicString(String::format("padding: %dpx", 10)));
|
| + update();
|
| + EXPECT_EQ(150, viewport->scrollPosition().y());
|
| +
|
| + // Margin change on anchor's ancestor shouldn't trigger anchoring.
|
| + document().body()->setAttribute(HTMLNames::styleAttr,
|
| + AtomicString(String::format("margin: %dpx", 10)));
|
| + update();
|
| + EXPECT_EQ(150, viewport->scrollPosition().y());
|
| +
|
| + // Padding change on other elements should trigger anchoring.
|
| + document().getElementById("block1")->setAttribute(HTMLNames::styleAttr,
|
| + AtomicString(String::format("padding: %dpx", 10)));
|
| + update();
|
| + EXPECT_EQ(170, viewport->scrollPosition().y());
|
| +}
|
| +
|
| class ScrollAnchorCornerTest : public ScrollAnchorTest {
|
| protected:
|
| void checkCorner(const AtomicString& id, Corner corner, DoublePoint startPos, DoubleSize expectedAdjustment)
|
|
|