Index: third_party/WebKit/Source/core/paint/PaintLayerScrollableAreaTest.cpp |
diff --git a/third_party/WebKit/Source/core/paint/PaintLayerScrollableAreaTest.cpp b/third_party/WebKit/Source/core/paint/PaintLayerScrollableAreaTest.cpp |
index d0cb1b8e53f0a5ddc75b17cd19446bc846e7de66..c633a7f2d337723e829fa19201af03fdede1adfa 100644 |
--- a/third_party/WebKit/Source/core/paint/PaintLayerScrollableAreaTest.cpp |
+++ b/third_party/WebKit/Source/core/paint/PaintLayerScrollableAreaTest.cpp |
@@ -28,7 +28,7 @@ class MockChromeClient : public EmptyChromeClient { |
} |
}; |
-} // namespace { |
+} // namespace |
class PaintLayerScrollableAreaTest : public RenderingTest { |
public: |
@@ -548,4 +548,31 @@ TEST_F(PaintLayerScrollableAreaTest, HideTooltipWhenScrollPositionChanges) { |
.Times(0); |
scrollableArea->setScrollOffset(ScrollOffset(2, 2), ProgrammaticScroll); |
} |
+ |
+TEST_F(PaintLayerScrollableAreaTest, |
+ StickyPositionConstraintsInvalidatedByLayout) { |
+ setBodyInnerHTML( |
+ "<style>#scroller { overflow-y: scroll; height: 100px; }" |
+ "#sticky { height: 25px; position: sticky; top: 0; }" |
+ "#padding { height: 500px; }</style>" |
+ "<div id='scroller'><div id='sticky'></div><div id='padding'></div>" |
+ "</div>"); |
+ |
+ LayoutBoxModelObject* scroller = |
+ toLayoutBoxModelObject(getLayoutObjectByElementId("scroller")); |
+ LayoutBoxModelObject* sticky = |
+ toLayoutBoxModelObject(getLayoutObjectByElementId("sticky")); |
+ |
+ EXPECT_FALSE(sticky->layer()->needsCompositingInputsUpdate()); |
+ |
+ PaintLayerScrollableArea* scrollableArea = scroller->getScrollableArea(); |
+ ASSERT_TRUE(scrollableArea); |
+ |
+ // Fake layout. |
+ scrollableArea->updateAfterLayout(); |
+ |
+ EXPECT_TRUE(sticky->layer()->needsCompositingInputsUpdate()); |
+ EXPECT_EQ(0u, scrollableArea->stickyConstraintsMap().size()); |
} |
+ |
+} // namespace blink |