Chromium Code Reviews| Index: third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp |
| diff --git a/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp b/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp |
| index 9b0078b2988c83d2c87d32eee6253cc5e495c07c..dfda5678ef2018e2f3ff54e2bc14a913e3de35e6 100644 |
| --- a/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp |
| +++ b/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp |
| @@ -2009,4 +2009,103 @@ TEST_P(PaintPropertyTreeBuilderTest, SVGRootNoClip) |
| EXPECT_FALSE(getLayoutObjectByElementId("svg")->objectPaintProperties()->overflowClip()); |
| } |
| +TEST_P(PaintPropertyTreeBuilderTest, MainThreadScrollReasonsWithNestedScrollers) |
| +{ |
| + setBodyInnerHTML( |
| + "<style>" |
| + " #overflowA {" |
| + " position: absolute;" |
| + " overflow: scroll;" |
| + " width: 20px;" |
| + " height: 20px;" |
| + " }" |
| + " #overflowB {" |
| + " position: absolute;" |
| + " overflow: scroll;" |
| + " width: 5px;" |
| + " height: 3px;" |
| + " }" |
| + " .backgroundAttachmentFixed {" |
| + " background-image: url('foo');" |
| + " background-attachment: fixed;" |
| + " }" |
| + " .forceScroll {" |
| + " height: 4000px;" |
| + " }" |
| + "</style>" |
| + "<div id='overflowA'>" |
| + " <div id='overflowB' class='backgroundAttachmentFixed'>" |
| + " <div class='forceScroll'></div>" |
| + " </div>" |
| + " <div class='forceScroll'></div>" |
| + "</div>" |
| + "<div class='forceScroll'></div>"); |
| + Element* overflowA = document().getElementById("overflowA"); |
| + Element* overflowB = document().getElementById("overflowB"); |
| + |
| + EXPECT_TRUE(frameScroll()->hasBackgroundAttachmentFixedMainThreadScrollingReason()); |
| + EXPECT_TRUE(overflowA->layoutObject()->objectPaintProperties()->scroll()->hasBackgroundAttachmentFixedMainThreadScrollingReason()); |
| + EXPECT_FALSE(overflowB->layoutObject()->objectPaintProperties()->scroll()->hasBackgroundAttachmentFixedMainThreadScrollingReason()); |
|
ajuma
2016/09/19 14:38:02
Should overflowB also have a main-thread scrolling
pdr.
2016/09/19 20:25:50
Good question! The background of overflowB is pain
|
| + |
| + // Removing a main thread scrolling reason should update the entire tree. |
| + overflowB->removeAttribute("class"); |
| + document().view()->updateAllLifecyclePhases(); |
| + EXPECT_FALSE(frameScroll()->hasBackgroundAttachmentFixedMainThreadScrollingReason()); |
| + EXPECT_FALSE(overflowA->layoutObject()->objectPaintProperties()->scroll()->hasBackgroundAttachmentFixedMainThreadScrollingReason()); |
| + EXPECT_FALSE(overflowB->layoutObject()->objectPaintProperties()->scroll()->hasBackgroundAttachmentFixedMainThreadScrollingReason()); |
| + |
| + // Adding a main thread scrolling reason should update the entire tree. |
| + overflowB->setAttribute(HTMLNames::classAttr, "backgroundAttachmentFixed"); |
| + document().view()->updateAllLifecyclePhases(); |
| + EXPECT_TRUE(frameScroll()->hasBackgroundAttachmentFixedMainThreadScrollingReason()); |
| + EXPECT_TRUE(overflowA->layoutObject()->objectPaintProperties()->scroll()->hasBackgroundAttachmentFixedMainThreadScrollingReason()); |
| + EXPECT_FALSE(overflowB->layoutObject()->objectPaintProperties()->scroll()->hasBackgroundAttachmentFixedMainThreadScrollingReason()); |
| +} |
| + |
| +TEST_P(PaintPropertyTreeBuilderTest, MainThreadScrollReasonsWithFixedScroller) |
| +{ |
| + setBodyInnerHTML( |
| + "<style>" |
| + " #overflowA {" |
| + " position: absolute;" |
| + " overflow: scroll;" |
| + " width: 20px;" |
| + " height: 20px;" |
| + " }" |
| + " #overflowB {" |
| + " position: fixed;" |
| + " overflow: scroll;" |
| + " width: 5px;" |
| + " height: 3px;" |
| + " }" |
| + " .backgroundAttachmentFixed {" |
| + " background-image: url('foo');" |
| + " background-attachment: fixed;" |
| + " }" |
| + " .forceScroll {" |
| + " height: 4000px;" |
| + " }" |
| + "</style>" |
| + "<div id='overflowA'>" |
| + " <div id='overflowB' class='backgroundAttachmentFixed'>" |
| + " <div class='forceScroll'></div>" |
| + " </div>" |
| + " <div class='forceScroll'></div>" |
| + "</div>" |
| + "<div class='forceScroll'></div>"); |
| + Element* overflowA = document().getElementById("overflowA"); |
| + Element* overflowB = document().getElementById("overflowB"); |
| + |
| + EXPECT_TRUE(rootScroll()->hasBackgroundAttachmentFixedMainThreadScrollingReason()); |
| + EXPECT_FALSE(overflowA->layoutObject()->objectPaintProperties()->scroll()->hasBackgroundAttachmentFixedMainThreadScrollingReason()); |
| + EXPECT_FALSE(overflowB->layoutObject()->objectPaintProperties()->scroll()->hasBackgroundAttachmentFixedMainThreadScrollingReason()); |
| + |
| + // Removing a main thread scrolling reason should update the entire tree. |
| + overflowB->removeAttribute("class"); |
| + document().view()->updateAllLifecyclePhases(); |
| + EXPECT_FALSE(rootScroll()->hasBackgroundAttachmentFixedMainThreadScrollingReason()); |
| + EXPECT_FALSE(overflowA->layoutObject()->objectPaintProperties()->scroll()->hasBackgroundAttachmentFixedMainThreadScrollingReason()); |
| + EXPECT_FALSE(overflowB->layoutObject()->objectPaintProperties()->scroll()->hasBackgroundAttachmentFixedMainThreadScrollingReason()); |
| +} |
| + |
| } // namespace blink |