| Index: third_party/WebKit/Source/web/tests/ScrollingCoordinatorTest.cpp
|
| diff --git a/third_party/WebKit/Source/web/tests/ScrollingCoordinatorTest.cpp b/third_party/WebKit/Source/web/tests/ScrollingCoordinatorTest.cpp
|
| index bf4d5f94d7e483844291ba36cdf590f5834104d1..a902836934bb69ec27191017dd08bb24338dc522 100644
|
| --- a/third_party/WebKit/Source/web/tests/ScrollingCoordinatorTest.cpp
|
| +++ b/third_party/WebKit/Source/web/tests/ScrollingCoordinatorTest.cpp
|
| @@ -1052,7 +1052,10 @@ class NonCompositedMainThreadScrollingReasonTest
|
| static const uint32_t kLCDTextRelatedReasons =
|
| MainThreadScrollingReason::kHasOpacityAndLCDText |
|
| MainThreadScrollingReason::kHasTransformAndLCDText |
|
| - MainThreadScrollingReason::kBackgroundNotOpaqueInRectAndLCDText;
|
| + MainThreadScrollingReason::kBackgroundNotOpaqueInRectAndLCDText |
|
| + MainThreadScrollingReason::kIsNotStackingContextAndLCDText |
|
| + MainThreadScrollingReason::
|
| + kHasOverflowClipAndLayoutObjectBackgroundNotOpaqueAndLCDText;
|
|
|
| protected:
|
| NonCompositedMainThreadScrollingReasonTest() {
|
| @@ -1134,7 +1137,9 @@ TEST_P(NonCompositedMainThreadScrollingReasonTest, TransformTest) {
|
| TEST_P(NonCompositedMainThreadScrollingReasonTest, BackgroundNotOpaqueTest) {
|
| TestNonCompositedReasons(
|
| "background-not-opaque",
|
| - MainThreadScrollingReason::kBackgroundNotOpaqueInRectAndLCDText);
|
| + MainThreadScrollingReason::kBackgroundNotOpaqueInRectAndLCDText |
|
| + MainThreadScrollingReason::
|
| + kHasOverflowClipAndLayoutObjectBackgroundNotOpaqueAndLCDText);
|
| }
|
|
|
| TEST_P(NonCompositedMainThreadScrollingReasonTest, BorderRadiusTest) {
|
| @@ -1207,6 +1212,35 @@ TEST_P(NonCompositedMainThreadScrollingReasonTest, BoxShadowTest) {
|
| "box-shadow", MainThreadScrollingReason::kHasBoxShadowFromNonRootLayer);
|
| }
|
|
|
| +TEST_P(NonCompositedMainThreadScrollingReasonTest, StackingContextTest) {
|
| + GetWebViewImpl()->GetSettings()->SetPreferCompositingToLCDTextEnabled(false);
|
| +
|
| + Document* document = GetFrame()->GetDocument();
|
| + Element* container = document->getElementById("scroller1");
|
| + ASSERT_TRUE(container);
|
| +
|
| + ForceFullCompositingUpdate();
|
| +
|
| + // If a scroller contains all its children, it's not a stacking context.
|
| + PaintLayerScrollableArea* scrollable_area =
|
| + ToLayoutBoxModelObject(container->GetLayoutObject())->GetScrollableArea();
|
| + ASSERT_TRUE(scrollable_area);
|
| + EXPECT_TRUE(scrollable_area->GetNonCompositedMainThreadScrollingReasons() &
|
| + MainThreadScrollingReason::kIsNotStackingContextAndLCDText);
|
| +
|
| + GetWebViewImpl()->GetSettings()->SetPreferCompositingToLCDTextEnabled(true);
|
| + ForceFullCompositingUpdate();
|
| + EXPECT_FALSE(scrollable_area->GetNonCompositedMainThreadScrollingReasons() &
|
| + MainThreadScrollingReason::kIsNotStackingContextAndLCDText);
|
| + GetWebViewImpl()->GetSettings()->SetPreferCompositingToLCDTextEnabled(false);
|
| +
|
| + // Adding "contain: paint" to force a stacking context leads to promotion.
|
| + container->setAttribute("style", "contain: paint", ASSERT_NO_EXCEPTION);
|
| + ForceFullCompositingUpdate();
|
| +
|
| + EXPECT_FALSE(scrollable_area->GetNonCompositedMainThreadScrollingReasons());
|
| +}
|
| +
|
| TEST_P(NonCompositedMainThreadScrollingReasonTest,
|
| CompositedWithLCDTextRelatedReasonsTest) {
|
| // With "will-change:transform" we composite elements with
|
|
|