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 8df7d78641100b05b9b99f573e86aeb42f1a9abb..51228b41255cb0217c72fb62e504a01995a1a456 100644 |
| --- a/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp |
| +++ b/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilderTest.cpp |
| @@ -2009,7 +2009,7 @@ TEST_P(PaintPropertyTreeBuilderTest, SVGRootNoClip) |
| EXPECT_FALSE(getLayoutObjectByElementId("svg")->objectPaintProperties()->overflowClip()); |
| } |
| -TEST_P(PaintPropertyTreeBuilderTest, MainThreadScrollReasonsWithNestedScrollers) |
| +TEST_P(PaintPropertyTreeBuilderTest, BackgroundAttachmentFixedMainThreadScrollReasonsWithNestedScrollers) |
| { |
| setBodyInnerHTML( |
| "<style>" |
| @@ -2062,7 +2062,7 @@ TEST_P(PaintPropertyTreeBuilderTest, MainThreadScrollReasonsWithNestedScrollers) |
| EXPECT_FALSE(overflowB->layoutObject()->objectPaintProperties()->scroll()->hasMainThreadScrollingReasons(MainThreadScrollingReason::kHasBackgroundAttachmentFixedObjects)); |
| } |
| -TEST_P(PaintPropertyTreeBuilderTest, MainThreadScrollReasonsWithFixedScroller) |
| +TEST_P(PaintPropertyTreeBuilderTest, BackgroundAttachmentFixedMainThreadScrollReasonsWithFixedScroller) |
| { |
| setBodyInnerHTML( |
| "<style>" |
| @@ -2108,4 +2108,56 @@ TEST_P(PaintPropertyTreeBuilderTest, MainThreadScrollReasonsWithFixedScroller) |
| EXPECT_FALSE(overflowB->layoutObject()->objectPaintProperties()->scroll()->hasMainThreadScrollingReasons(MainThreadScrollingReason::kHasBackgroundAttachmentFixedObjects)); |
| } |
| +TEST_P(PaintPropertyTreeBuilderTest, PositionStickyMainThreadScrollReasonsWithNestedScrollers) |
| +{ |
| + setBodyInnerHTML( |
| + "<style>" |
| + " #overflowA {" |
| + " overflow: scroll;" |
| + " width: 20px;" |
| + " height: 20px;" |
| + " }" |
| + " #overflowB {" |
| + " overflow: scroll;" |
| + " width: 5px;" |
| + " height: 3px;" |
| + " }" |
| + " .positionSticky {" |
| + " position: sticky;" |
| + " top: 0;" |
| + " left: 0;" |
| + " }" |
| + " .forceScroll {" |
| + " height: 4000px;" |
| + " }" |
| + "</style>" |
| + "<div id='overflowA'>" |
| + " <div id='overflowB' class='positionSticky'>" |
|
chrishtr
2016/09/20 19:45:57
It's a little weird that you put position:sticky o
pdr.
2016/09/20 20:16:57
It is weird and I doubt anyone will do it, but I t
chrishtr
2016/09/20 20:29:35
Ok makes sense. Please also add a test for an elem
|
| + " <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()->hasMainThreadScrollingReasons(MainThreadScrollingReason::kHasStickyPositionObjects)); |
| + EXPECT_TRUE(overflowA->layoutObject()->objectPaintProperties()->scroll()->hasMainThreadScrollingReasons(MainThreadScrollingReason::kHasStickyPositionObjects)); |
| + EXPECT_FALSE(overflowB->layoutObject()->objectPaintProperties()->scroll()->hasMainThreadScrollingReasons(MainThreadScrollingReason::kHasStickyPositionObjects)); |
| + |
| + // Removing a main thread scrolling reason should update the entire tree. |
| + overflowB->removeAttribute("class"); |
| + document().view()->updateAllLifecyclePhases(); |
| + EXPECT_FALSE(frameScroll()->hasMainThreadScrollingReasons(MainThreadScrollingReason::kHasStickyPositionObjects)); |
| + EXPECT_FALSE(overflowA->layoutObject()->objectPaintProperties()->scroll()->hasMainThreadScrollingReasons(MainThreadScrollingReason::kHasStickyPositionObjects)); |
| + EXPECT_FALSE(overflowB->layoutObject()->objectPaintProperties()->scroll()->hasMainThreadScrollingReasons(MainThreadScrollingReason::kHasStickyPositionObjects)); |
| + |
| + // Adding a main thread scrolling reason should update the entire tree. |
| + overflowB->setAttribute(HTMLNames::classAttr, "positionSticky"); |
| + document().view()->updateAllLifecyclePhases(); |
| + EXPECT_TRUE(frameScroll()->hasMainThreadScrollingReasons(MainThreadScrollingReason::kHasStickyPositionObjects)); |
| + EXPECT_TRUE(overflowA->layoutObject()->objectPaintProperties()->scroll()->hasMainThreadScrollingReasons(MainThreadScrollingReason::kHasStickyPositionObjects)); |
| + EXPECT_FALSE(overflowB->layoutObject()->objectPaintProperties()->scroll()->hasMainThreadScrollingReasons(MainThreadScrollingReason::kHasStickyPositionObjects)); |
| +} |
| + |
| } // namespace blink |