| 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 60819254e5a9a48e517e02f7d7766203130d5b4c..7857e57cce733d27878f8cc0105b78cae09185a8 100644
|
| --- a/third_party/WebKit/Source/web/tests/ScrollingCoordinatorTest.cpp
|
| +++ b/third_party/WebKit/Source/web/tests/ScrollingCoordinatorTest.cpp
|
| @@ -1056,45 +1056,57 @@ class StyleRelatedMainThreadScrollingReasonTest
|
| webViewImpl()->settings()->setPreferCompositingToLCDTextEnabled(false);
|
| Document* document = frame()->document();
|
| Element* container = document->getElementById("scroller1");
|
| - container->setAttribute("class", target.c_str(), ASSERT_NO_EXCEPTION);
|
| - container = document->getElementById("scroller2");
|
| + DCHECK(container);
|
| container->setAttribute("class", target.c_str(), ASSERT_NO_EXCEPTION);
|
| forceFullCompositingUpdate();
|
|
|
| + // Add or remove style related attribute from a scroller shouldn't
|
| + // affect the main frame which is supposed to scroll on impl during
|
| + // this test.
|
| + PaintLayerScrollableArea* scrollableArea =
|
| + toLayoutBoxModelObject(container->layoutObject())->getScrollableArea();
|
| + ASSERT_TRUE(scrollableArea);
|
| + ASSERT_TRUE(scrollableArea->getStyleRelatedMainThreadScrollingReasons() &
|
| + reason);
|
| +
|
| + container = document->getElementById("scroller2");
|
| + scrollableArea =
|
| + toLayoutBoxModelObject(container->layoutObject())->getScrollableArea();
|
| + ASSERT_TRUE(scrollableArea);
|
| + // Different scrollable area should keep unaffected.
|
| + ASSERT_FALSE(scrollableArea->getStyleRelatedMainThreadScrollingReasons() &
|
| + reason);
|
| +
|
| FrameView* frameView = frame()->view();
|
| ASSERT_TRUE(frameView);
|
| - ASSERT_TRUE(frameView->mainThreadScrollingReasons() & reason);
|
| + ASSERT_FALSE(frameView->mainThreadScrollingReasons() & reason);
|
|
|
| - // Remove the target attribute from one of the scrollers.
|
| - // Still need to scroll on main thread.
|
| + // Remove attribute from the scroller would lead to scroll on impl.
|
| container = document->getElementById("scroller1");
|
| - DCHECK(container);
|
| -
|
| - container->removeAttribute("class");
|
| - forceFullCompositingUpdate();
|
| -
|
| - ASSERT_TRUE(frameView->mainThreadScrollingReasons() & reason);
|
| -
|
| - // Remove attribute from the other scroller would lead to
|
| - // scroll on impl.
|
| - container = document->getElementById("scroller2");
|
| - DCHECK(container);
|
| -
|
| container->removeAttribute("class");
|
| forceFullCompositingUpdate();
|
|
|
| + scrollableArea =
|
| + toLayoutBoxModelObject(container->layoutObject())->getScrollableArea();
|
| + ASSERT_TRUE(scrollableArea);
|
| + ASSERT_FALSE(scrollableArea->getStyleRelatedMainThreadScrollingReasons() &
|
| + reason);
|
| ASSERT_FALSE(frameView->mainThreadScrollingReasons() & reason);
|
|
|
| // Add target attribute would again lead to scroll on main thread
|
| container->setAttribute("class", target.c_str(), ASSERT_NO_EXCEPTION);
|
| forceFullCompositingUpdate();
|
|
|
| - ASSERT_TRUE(frameView->mainThreadScrollingReasons() & reason);
|
| + ASSERT_TRUE(scrollableArea->getStyleRelatedMainThreadScrollingReasons() &
|
| + reason);
|
| + ASSERT_FALSE(frameView->mainThreadScrollingReasons() & reason);
|
|
|
| if ((reason & m_LCDTextRelatedReasons) &&
|
| !(reason & ~m_LCDTextRelatedReasons)) {
|
| webViewImpl()->settings()->setPreferCompositingToLCDTextEnabled(true);
|
| forceFullCompositingUpdate();
|
| + ASSERT_FALSE(scrollableArea->getStyleRelatedMainThreadScrollingReasons() &
|
| + reason);
|
| ASSERT_FALSE(frameView->mainThreadScrollingReasons());
|
| }
|
| }
|
| @@ -1104,31 +1116,28 @@ INSTANTIATE_TEST_CASE_P(All,
|
| StyleRelatedMainThreadScrollingReasonTest,
|
| ::testing::Bool());
|
|
|
| -// TODO(yigu): This test and all other style realted main thread scrolling
|
| -// reason tests below have been disabled due to https://crbug.com/701355.
|
| -TEST_P(StyleRelatedMainThreadScrollingReasonTest, DISABLED_TransparentTest) {
|
| +TEST_P(StyleRelatedMainThreadScrollingReasonTest, TransparentTest) {
|
| testStyle("transparent", MainThreadScrollingReason::kHasOpacityAndLCDText);
|
| }
|
|
|
| -TEST_P(StyleRelatedMainThreadScrollingReasonTest, DISABLED_TransformTest) {
|
| +TEST_P(StyleRelatedMainThreadScrollingReasonTest, TransformTest) {
|
| testStyle("transform", MainThreadScrollingReason::kHasTransformAndLCDText);
|
| }
|
|
|
| -TEST_P(StyleRelatedMainThreadScrollingReasonTest,
|
| - DISABLED_BackgroundNotOpaqueTest) {
|
| +TEST_P(StyleRelatedMainThreadScrollingReasonTest, BackgroundNotOpaqueTest) {
|
| testStyle("background-not-opaque",
|
| MainThreadScrollingReason::kBackgroundNotOpaqueInRectAndLCDText);
|
| }
|
|
|
| -TEST_P(StyleRelatedMainThreadScrollingReasonTest, DISABLED_BorderRadiusTest) {
|
| +TEST_P(StyleRelatedMainThreadScrollingReasonTest, BorderRadiusTest) {
|
| testStyle("border-radius", MainThreadScrollingReason::kHasBorderRadius);
|
| }
|
|
|
| -TEST_P(StyleRelatedMainThreadScrollingReasonTest, DISABLED_ClipTest) {
|
| +TEST_P(StyleRelatedMainThreadScrollingReasonTest, ClipTest) {
|
| testStyle("clip", MainThreadScrollingReason::kHasClipRelatedProperty);
|
| }
|
|
|
| -TEST_P(StyleRelatedMainThreadScrollingReasonTest, DISABLED_ClipPathTest) {
|
| +TEST_P(StyleRelatedMainThreadScrollingReasonTest, ClipPathTest) {
|
| uint32_t reason = MainThreadScrollingReason::kHasClipRelatedProperty;
|
| webViewImpl()->settings()->setPreferCompositingToLCDTextEnabled(false);
|
| Document* document = frame()->document();
|
| @@ -1137,16 +1146,26 @@ TEST_P(StyleRelatedMainThreadScrollingReasonTest, DISABLED_ClipPathTest) {
|
| DCHECK(element);
|
| element->setAttribute(HTMLNames::styleAttr,
|
| "clip-path:circle(115px at 20px 20px);");
|
| + Element* container = document->getElementById("scroller1");
|
| + DCHECK(container);
|
| forceFullCompositingUpdate();
|
|
|
| + PaintLayerScrollableArea* scrollableArea =
|
| + toLayoutBoxModelObject(container->layoutObject())->getScrollableArea();
|
| + ASSERT_TRUE(scrollableArea);
|
| + ASSERT_TRUE(scrollableArea->getStyleRelatedMainThreadScrollingReasons() &
|
| + reason);
|
| +
|
| FrameView* frameView = frame()->view();
|
| ASSERT_TRUE(frameView);
|
| - ASSERT_TRUE(frameView->mainThreadScrollingReasons() & reason);
|
| + ASSERT_FALSE(frameView->mainThreadScrollingReasons() & reason);
|
|
|
| // Remove clip path from ancestor.
|
| element->removeAttribute(HTMLNames::styleAttr);
|
| forceFullCompositingUpdate();
|
|
|
| + ASSERT_FALSE(scrollableArea->getStyleRelatedMainThreadScrollingReasons() &
|
| + reason);
|
| ASSERT_FALSE(frameView->mainThreadScrollingReasons() & reason);
|
|
|
| // Test descendant with ClipPath
|
| @@ -1155,21 +1174,25 @@ TEST_P(StyleRelatedMainThreadScrollingReasonTest, DISABLED_ClipPathTest) {
|
| element->setAttribute(HTMLNames::styleAttr,
|
| "clip-path:circle(115px at 20px 20px);");
|
| forceFullCompositingUpdate();
|
| - ASSERT_TRUE(frameView->mainThreadScrollingReasons() & reason);
|
| + ASSERT_TRUE(scrollableArea->getStyleRelatedMainThreadScrollingReasons() &
|
| + reason);
|
| + ASSERT_FALSE(frameView->mainThreadScrollingReasons() & reason);
|
|
|
| // Remove clip path from descendant.
|
| element->removeAttribute(HTMLNames::styleAttr);
|
| forceFullCompositingUpdate();
|
| + ASSERT_FALSE(scrollableArea->getStyleRelatedMainThreadScrollingReasons() &
|
| + reason);
|
| ASSERT_FALSE(frameView->mainThreadScrollingReasons() & reason);
|
| }
|
|
|
| -TEST_P(StyleRelatedMainThreadScrollingReasonTest, DISABLED_LCDTextEnabledTest) {
|
| +TEST_P(StyleRelatedMainThreadScrollingReasonTest, LCDTextEnabledTest) {
|
| testStyle("transparent border-radius",
|
| MainThreadScrollingReason::kHasOpacityAndLCDText |
|
| MainThreadScrollingReason::kHasBorderRadius);
|
| }
|
|
|
| -TEST_P(StyleRelatedMainThreadScrollingReasonTest, DISABLED_BoxShadowTest) {
|
| +TEST_P(StyleRelatedMainThreadScrollingReasonTest, BoxShadowTest) {
|
| testStyle("box-shadow",
|
| MainThreadScrollingReason::kHasBoxShadowFromNonRootLayer);
|
| }
|
|
|