| 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 f137b1c4470ed5d0ded0c5611d4fc2b56cfc2ce6..aa3d293a52bb1e73c5251e9081c6f6abcf280cb4 100644
|
| --- a/third_party/WebKit/Source/core/paint/PaintLayerTest.cpp
|
| +++ b/third_party/WebKit/Source/core/paint/PaintLayerTest.cpp
|
| @@ -345,4 +345,59 @@ TEST_P(PaintLayerTest, DescendantDependentFlagsStopsAtThrottledFrames) {
|
| ->m_needsDescendantDependentFlagsUpdate);
|
| }
|
|
|
| +TEST_P(PaintLayerTest, PaintInvalidationOnNonCompositedScroll) {
|
| + if (RuntimeEnabledFeatures::slimmingPaintV2Enabled())
|
| + return;
|
| +
|
| + setBodyInnerHTML(
|
| + "<style>* { margin: 0 } ::-webkit-scrollbar { display: none }</style>"
|
| + "<div id='scroller' style='overflow: scroll; width: 50px; height: 50px'>"
|
| + " <div style='height: 400px'>"
|
| + " <div id='content-layer' style='position: relative; height: 10px;"
|
| + " top: 30px; background: blue'>"
|
| + " <div id='content' style='height: 5px; background: yellow'></div>"
|
| + " </div>"
|
| + " </div>"
|
| + "</div>");
|
| +
|
| + LayoutBox* scroller = toLayoutBox(getLayoutObjectByElementId("scroller"));
|
| + LayoutObject* contentLayer = getLayoutObjectByElementId("content-layer");
|
| + LayoutObject* content = getLayoutObjectByElementId("content");
|
| + EXPECT_EQ(LayoutRect(0, 30, 50, 10), contentLayer->visualRect());
|
| + EXPECT_EQ(LayoutRect(0, 30, 50, 5), content->visualRect());
|
| +
|
| + scroller->getScrollableArea()->setScrollOffset(ScrollOffset(0, 20),
|
| + ProgrammaticScroll);
|
| + document().view()->updateAllLifecyclePhases();
|
| + EXPECT_EQ(LayoutRect(0, 10, 50, 10), contentLayer->visualRect());
|
| + EXPECT_EQ(LayoutRect(0, 10, 50, 5), content->visualRect());
|
| +}
|
| +
|
| +TEST_P(PaintLayerTest, PaintInvalidationOnCompositedScroll) {
|
| + enableCompositing();
|
| + setBodyInnerHTML(
|
| + "<style>* { margin: 0 } ::-webkit-scrollbar { display: none }</style>"
|
| + "<div id='scroller' style='overflow: scroll; width: 50px; height: 50px;"
|
| + " will-change: transform'>"
|
| + " <div style='height: 400px'>"
|
| + " <div id='content-layer' style='position: relative; height: 10px;"
|
| + " top: 30px; background: blue'>"
|
| + " <div id='content' style='height: 5px; background: yellow'></div>"
|
| + " </div>"
|
| + " </div>"
|
| + "</div>");
|
| +
|
| + LayoutBox* scroller = toLayoutBox(getLayoutObjectByElementId("scroller"));
|
| + LayoutObject* contentLayer = getLayoutObjectByElementId("content-layer");
|
| + LayoutObject* content = getLayoutObjectByElementId("content");
|
| + EXPECT_EQ(LayoutRect(0, 30, 50, 10), contentLayer->visualRect());
|
| + EXPECT_EQ(LayoutRect(0, 30, 50, 5), content->visualRect());
|
| +
|
| + scroller->getScrollableArea()->setScrollOffset(ScrollOffset(0, 20),
|
| + ProgrammaticScroll);
|
| + document().view()->updateAllLifecyclePhases();
|
| + EXPECT_EQ(LayoutRect(0, 30, 50, 10), contentLayer->visualRect());
|
| + EXPECT_EQ(LayoutRect(0, 30, 50, 5), content->visualRect());
|
| +}
|
| +
|
| } // namespace blink
|
|
|