Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1717)

Unified Diff: third_party/WebKit/Source/web/tests/ScrollingCoordinatorTest.cpp

Issue 2658253003: [RootLayerScrolls] Fix ScrollingCoordinatorTest (Closed)
Patch Set: Remove unused function Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | third_party/WebKit/Source/web/tests/WebFrameTest.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 85f01cb06c32d8b18fb0a53df78cddd1f5f3f1ff..43055affa5f004f524c21be0cf87c70e4b90c6af 100644
--- a/third_party/WebKit/Source/web/tests/ScrollingCoordinatorTest.cpp
+++ b/third_party/WebKit/Source/web/tests/ScrollingCoordinatorTest.cpp
@@ -38,6 +38,7 @@
#include "platform/geometry/IntPoint.h"
#include "platform/geometry/IntRect.h"
#include "platform/graphics/GraphicsLayer.h"
+#include "platform/testing/RuntimeEnabledFeaturesTestHelpers.h"
#include "platform/testing/URLTestHelpers.h"
#include "public/platform/Platform.h"
#include "public/platform/WebLayer.h"
@@ -54,9 +55,13 @@
namespace blink {
-class ScrollingCoordinatorTest : public testing::Test {
+class ScrollingCoordinatorTest : public testing::Test,
+ public testing::WithParamInterface<bool>,
+ private ScopedRootLayerScrollingForTest {
public:
- ScrollingCoordinatorTest() : m_baseURL("http://www.test.com/") {
+ ScrollingCoordinatorTest()
+ : ScopedRootLayerScrollingForTest(GetParam()),
+ m_baseURL("http://www.test.com/") {
m_helper.initialize(true, nullptr, &m_mockWebViewClient, nullptr,
&configureSettings);
webViewImpl()->resize(IntSize(320, 240));
@@ -84,6 +89,11 @@ class ScrollingCoordinatorTest : public testing::Test {
FrameTestHelpers::loadFrame(webViewImpl()->mainFrame(), url);
}
+ void loadHTML(const std::string& html) {
+ FrameTestHelpers::loadHTMLString(webViewImpl()->mainFrame(), html,
+ URLTestHelpers::toKURL("about:blank"));
+ }
+
void forceFullCompositingUpdate() {
webViewImpl()->updateAllLifecyclePhases();
}
@@ -95,13 +105,9 @@ class ScrollingCoordinatorTest : public testing::Test {
}
WebLayer* getRootScrollLayer() {
- PaintLayerCompositor* compositor =
- frame()->contentLayoutItem().compositor();
- DCHECK(compositor);
- DCHECK(compositor->scrollLayer());
-
- WebLayer* webScrollLayer = compositor->scrollLayer()->platformLayer();
- return webScrollLayer;
+ GraphicsLayer* layer =
+ frame()->view()->layoutViewportScrollableArea()->layerForScrolling();
+ return layer ? layer->platformLayer() : nullptr;
}
WebViewImpl* webViewImpl() const { return m_helper.webView(); }
@@ -113,9 +119,6 @@ class ScrollingCoordinatorTest : public testing::Test {
return webViewImpl()->layerTreeView();
}
- void styleRelatedMainThreadScrollingReasonTest(const std::string&,
- const uint32_t);
-
protected:
std::string m_baseURL;
FrameTestHelpers::TestWebViewClient m_mockWebViewClient;
@@ -130,8 +133,11 @@ class ScrollingCoordinatorTest : public testing::Test {
FrameTestHelpers::WebViewHelper m_helper;
};
-TEST_F(ScrollingCoordinatorTest, fastScrollingByDefault) {
- navigateTo("about:blank");
+INSTANTIATE_TEST_CASE_P(All, ScrollingCoordinatorTest, ::testing::Bool());
+
+TEST_P(ScrollingCoordinatorTest, fastScrollingByDefault) {
+ webViewImpl()->resize(WebSize(800, 600));
+ loadHTML("<div id='spacer' style='height: 1000px'></div>");
forceFullCompositingUpdate();
// Make sure the scrolling coordinator is active.
@@ -143,6 +149,7 @@ TEST_F(ScrollingCoordinatorTest, fastScrollingByDefault) {
// Fast scrolling should be enabled by default.
WebLayer* rootScrollLayer = getRootScrollLayer();
+ ASSERT_TRUE(rootScrollLayer);
ASSERT_TRUE(rootScrollLayer->scrollable());
ASSERT_FALSE(rootScrollLayer->shouldScrollOnMainThread());
ASSERT_EQ(WebEventListenerProperties::Nothing,
@@ -158,8 +165,9 @@ TEST_F(ScrollingCoordinatorTest, fastScrollingByDefault) {
ASSERT_FALSE(innerViewportScrollLayer->shouldScrollOnMainThread());
}
-TEST_F(ScrollingCoordinatorTest, fastScrollingCanBeDisabledWithSetting) {
- navigateTo("about:blank");
+TEST_P(ScrollingCoordinatorTest, fastScrollingCanBeDisabledWithSetting) {
+ webViewImpl()->resize(WebSize(800, 600));
+ loadHTML("<div id='spacer' style='height: 1000px'></div>");
webViewImpl()->settings()->setThreadedScrollingEnabled(false);
forceFullCompositingUpdate();
@@ -172,6 +180,7 @@ TEST_F(ScrollingCoordinatorTest, fastScrollingCanBeDisabledWithSetting) {
// Main scrolling should be enabled with the setting override.
WebLayer* rootScrollLayer = getRootScrollLayer();
+ ASSERT_TRUE(rootScrollLayer);
ASSERT_TRUE(rootScrollLayer->scrollable());
ASSERT_TRUE(rootScrollLayer->shouldScrollOnMainThread());
@@ -182,7 +191,7 @@ TEST_F(ScrollingCoordinatorTest, fastScrollingCanBeDisabledWithSetting) {
ASSERT_TRUE(innerViewportScrollLayer->shouldScrollOnMainThread());
}
-TEST_F(ScrollingCoordinatorTest, fastFractionalScrollingDiv) {
+TEST_P(ScrollingCoordinatorTest, fastFractionalScrollingDiv) {
bool origFractionalOffsetsEnabled =
RuntimeEnabledFeatures::fractionalScrollOffsetsEnabled();
RuntimeEnabledFeatures::setFractionalScrollOffsetsEnabled(true);
@@ -242,13 +251,14 @@ static WebLayer* webLayerFromElement(Element* element) {
return graphicsLayer->platformLayer();
}
-TEST_F(ScrollingCoordinatorTest, fastScrollingForFixedPosition) {
+TEST_P(ScrollingCoordinatorTest, fastScrollingForFixedPosition) {
registerMockedHttpURLLoad("fixed-position.html");
navigateTo(m_baseURL + "fixed-position.html");
forceFullCompositingUpdate();
// Fixed position should not fall back to main thread scrolling.
WebLayer* rootScrollLayer = getRootScrollLayer();
+ ASSERT_TRUE(rootScrollLayer);
ASSERT_FALSE(rootScrollLayer->shouldScrollOnMainThread());
Document* document = frame()->document();
@@ -334,13 +344,14 @@ TEST_F(ScrollingCoordinatorTest, fastScrollingForFixedPosition) {
}
}
-TEST_F(ScrollingCoordinatorTest, fastScrollingForStickyPosition) {
+TEST_P(ScrollingCoordinatorTest, fastScrollingForStickyPosition) {
registerMockedHttpURLLoad("sticky-position.html");
navigateTo(m_baseURL + "sticky-position.html");
forceFullCompositingUpdate();
// Sticky position should not fall back to main thread scrolling.
WebLayer* rootScrollLayer = getRootScrollLayer();
+ ASSERT_TRUE(rootScrollLayer);
EXPECT_FALSE(rootScrollLayer->shouldScrollOnMainThread());
Document* document = frame()->document();
@@ -440,7 +451,7 @@ TEST_F(ScrollingCoordinatorTest, fastScrollingForStickyPosition) {
}
}
-TEST_F(ScrollingCoordinatorTest, touchEventHandler) {
+TEST_P(ScrollingCoordinatorTest, touchEventHandler) {
registerMockedHttpURLLoad("touch-event-handler.html");
navigateTo(m_baseURL + "touch-event-handler.html");
forceFullCompositingUpdate();
@@ -450,7 +461,7 @@ TEST_F(ScrollingCoordinatorTest, touchEventHandler) {
WebEventListenerClass::TouchStartOrMove));
}
-TEST_F(ScrollingCoordinatorTest, touchEventHandlerPassive) {
+TEST_P(ScrollingCoordinatorTest, touchEventHandlerPassive) {
registerMockedHttpURLLoad("touch-event-handler-passive.html");
navigateTo(m_baseURL + "touch-event-handler-passive.html");
forceFullCompositingUpdate();
@@ -460,7 +471,7 @@ TEST_F(ScrollingCoordinatorTest, touchEventHandlerPassive) {
WebEventListenerClass::TouchStartOrMove));
}
-TEST_F(ScrollingCoordinatorTest, touchEventHandlerBoth) {
+TEST_P(ScrollingCoordinatorTest, touchEventHandlerBoth) {
registerMockedHttpURLLoad("touch-event-handler-both.html");
navigateTo(m_baseURL + "touch-event-handler-both.html");
forceFullCompositingUpdate();
@@ -470,7 +481,7 @@ TEST_F(ScrollingCoordinatorTest, touchEventHandlerBoth) {
WebEventListenerClass::TouchStartOrMove));
}
-TEST_F(ScrollingCoordinatorTest, wheelEventHandler) {
+TEST_P(ScrollingCoordinatorTest, wheelEventHandler) {
registerMockedHttpURLLoad("wheel-event-handler.html");
navigateTo(m_baseURL + "wheel-event-handler.html");
forceFullCompositingUpdate();
@@ -480,7 +491,7 @@ TEST_F(ScrollingCoordinatorTest, wheelEventHandler) {
WebEventListenerClass::MouseWheel));
}
-TEST_F(ScrollingCoordinatorTest, wheelEventHandlerPassive) {
+TEST_P(ScrollingCoordinatorTest, wheelEventHandlerPassive) {
registerMockedHttpURLLoad("wheel-event-handler-passive.html");
navigateTo(m_baseURL + "wheel-event-handler-passive.html");
forceFullCompositingUpdate();
@@ -490,7 +501,7 @@ TEST_F(ScrollingCoordinatorTest, wheelEventHandlerPassive) {
WebEventListenerClass::MouseWheel));
}
-TEST_F(ScrollingCoordinatorTest, wheelEventHandlerBoth) {
+TEST_P(ScrollingCoordinatorTest, wheelEventHandlerBoth) {
registerMockedHttpURLLoad("wheel-event-handler-both.html");
navigateTo(m_baseURL + "wheel-event-handler-both.html");
forceFullCompositingUpdate();
@@ -500,7 +511,7 @@ TEST_F(ScrollingCoordinatorTest, wheelEventHandlerBoth) {
WebEventListenerClass::MouseWheel));
}
-TEST_F(ScrollingCoordinatorTest, scrollEventHandler) {
+TEST_P(ScrollingCoordinatorTest, scrollEventHandler) {
registerMockedHttpURLLoad("scroll-event-handler.html");
navigateTo(m_baseURL + "scroll-event-handler.html");
forceFullCompositingUpdate();
@@ -508,7 +519,7 @@ TEST_F(ScrollingCoordinatorTest, scrollEventHandler) {
ASSERT_TRUE(webLayerTreeView()->haveScrollEventHandlers());
}
-TEST_F(ScrollingCoordinatorTest, updateEventHandlersDuringTeardown) {
+TEST_P(ScrollingCoordinatorTest, updateEventHandlersDuringTeardown) {
registerMockedHttpURLLoad("scroll-event-handler-window.html");
navigateTo(m_baseURL + "scroll-event-handler-window.html");
forceFullCompositingUpdate();
@@ -518,16 +529,17 @@ TEST_F(ScrollingCoordinatorTest, updateEventHandlersDuringTeardown) {
frame()->document()->shutdown();
}
-TEST_F(ScrollingCoordinatorTest, clippedBodyTest) {
+TEST_P(ScrollingCoordinatorTest, clippedBodyTest) {
registerMockedHttpURLLoad("clipped-body.html");
navigateTo(m_baseURL + "clipped-body.html");
forceFullCompositingUpdate();
WebLayer* rootScrollLayer = getRootScrollLayer();
+ ASSERT_TRUE(rootScrollLayer);
ASSERT_EQ(0u, rootScrollLayer->nonFastScrollableRegion().size());
}
-TEST_F(ScrollingCoordinatorTest, overflowScrolling) {
+TEST_P(ScrollingCoordinatorTest, overflowScrolling) {
registerMockedHttpURLLoad("overflow-scrolling.html");
navigateTo(m_baseURL + "overflow-scrolling.html");
forceFullCompositingUpdate();
@@ -573,7 +585,7 @@ TEST_F(ScrollingCoordinatorTest, overflowScrolling) {
#endif
}
-TEST_F(ScrollingCoordinatorTest, overflowHidden) {
+TEST_P(ScrollingCoordinatorTest, overflowHidden) {
registerMockedHttpURLLoad("overflow-hidden.html");
navigateTo(m_baseURL + "overflow-hidden.html");
forceFullCompositingUpdate();
@@ -634,7 +646,7 @@ TEST_F(ScrollingCoordinatorTest, overflowHidden) {
ASSERT_TRUE(webScrollLayer->userScrollableVertical());
}
-TEST_F(ScrollingCoordinatorTest, iframeScrolling) {
+TEST_P(ScrollingCoordinatorTest, iframeScrolling) {
registerMockedHttpURLLoad("iframe-scrolling.html");
registerMockedHttpURLLoad("iframe-scrolling-inner.html");
navigateTo(m_baseURL + "iframe-scrolling.html");
@@ -660,10 +672,12 @@ TEST_F(ScrollingCoordinatorTest, iframeScrolling) {
PaintLayerCompositor* innerCompositor = innerLayoutViewItem.compositor();
ASSERT_TRUE(innerCompositor->inCompositingMode());
- ASSERT_TRUE(innerCompositor->scrollLayer());
- GraphicsLayer* scrollLayer = innerCompositor->scrollLayer();
- ASSERT_EQ(innerFrameView, scrollLayer->getScrollableArea());
+ GraphicsLayer* scrollLayer =
+ innerFrameView->layoutViewportScrollableArea()->layerForScrolling();
+ ASSERT_TRUE(scrollLayer);
+ ASSERT_EQ(innerFrameView->layoutViewportScrollableArea(),
+ scrollLayer->getScrollableArea());
WebLayer* webScrollLayer = scrollLayer->platformLayer();
ASSERT_TRUE(webScrollLayer->scrollable());
@@ -678,7 +692,7 @@ TEST_F(ScrollingCoordinatorTest, iframeScrolling) {
#endif
}
-TEST_F(ScrollingCoordinatorTest, rtlIframe) {
+TEST_P(ScrollingCoordinatorTest, rtlIframe) {
registerMockedHttpURLLoad("rtl-iframe.html");
registerMockedHttpURLLoad("rtl-iframe-inner.html");
navigateTo(m_baseURL + "rtl-iframe.html");
@@ -704,21 +718,26 @@ TEST_F(ScrollingCoordinatorTest, rtlIframe) {
PaintLayerCompositor* innerCompositor = innerLayoutViewItem.compositor();
ASSERT_TRUE(innerCompositor->inCompositingMode());
- ASSERT_TRUE(innerCompositor->scrollLayer());
- GraphicsLayer* scrollLayer = innerCompositor->scrollLayer();
- ASSERT_EQ(innerFrameView, scrollLayer->getScrollableArea());
+ GraphicsLayer* scrollLayer =
+ innerFrameView->layoutViewportScrollableArea()->layerForScrolling();
+ ASSERT_TRUE(scrollLayer);
+ ASSERT_EQ(innerFrameView->layoutViewportScrollableArea(),
+ scrollLayer->getScrollableArea());
WebLayer* webScrollLayer = scrollLayer->platformLayer();
ASSERT_TRUE(webScrollLayer->scrollable());
int expectedScrollPosition =
- 958 +
- (innerFrameView->verticalScrollbar()->isOverlayScrollbar() ? 0 : 15);
+ 958 + (innerFrameView->layoutViewportScrollableArea()
+ ->verticalScrollbar()
+ ->isOverlayScrollbar()
+ ? 0
+ : 15);
ASSERT_EQ(expectedScrollPosition, webScrollLayer->scrollPositionDouble().x);
}
-TEST_F(ScrollingCoordinatorTest, setupScrollbarLayerShouldNotCrash) {
+TEST_P(ScrollingCoordinatorTest, setupScrollbarLayerShouldNotCrash) {
registerMockedHttpURLLoad("setup_scrollbar_layer_crash.html");
navigateTo(m_baseURL + "setup_scrollbar_layer_crash.html");
forceFullCompositingUpdate();
@@ -726,7 +745,7 @@ TEST_F(ScrollingCoordinatorTest, setupScrollbarLayerShouldNotCrash) {
// an empty document by javascript.
}
-TEST_F(ScrollingCoordinatorTest,
+TEST_P(ScrollingCoordinatorTest,
scrollbarsForceMainThreadOrHaveWebScrollbarLayer) {
registerMockedHttpURLLoad("trivial-scroller.html");
navigateTo(m_baseURL + "trivial-scroller.html");
@@ -753,10 +772,10 @@ TEST_F(ScrollingCoordinatorTest,
}
#if OS(MACOSX) || OS(ANDROID)
-TEST_F(ScrollingCoordinatorTest,
+TEST_P(ScrollingCoordinatorTest,
DISABLED_setupScrollbarLayerShouldSetScrollLayerOpaque)
#else
-TEST_F(ScrollingCoordinatorTest, setupScrollbarLayerShouldSetScrollLayerOpaque)
+TEST_P(ScrollingCoordinatorTest, setupScrollbarLayerShouldSetScrollLayerOpaque)
#endif
{
registerMockedHttpURLLoad("wide_document.html");
@@ -767,7 +786,7 @@ TEST_F(ScrollingCoordinatorTest, setupScrollbarLayerShouldSetScrollLayerOpaque)
ASSERT_TRUE(frameView);
GraphicsLayer* scrollbarGraphicsLayer =
- frameView->layerForHorizontalScrollbar();
+ frameView->layoutViewportScrollableArea()->layerForHorizontalScrollbar();
ASSERT_TRUE(scrollbarGraphicsLayer);
WebLayer* platformLayer = scrollbarGraphicsLayer->platformLayer();
@@ -782,19 +801,16 @@ TEST_F(ScrollingCoordinatorTest, setupScrollbarLayerShouldSetScrollLayerOpaque)
ASSERT_EQ(platformLayer->opaque(), contentsLayer->opaque());
}
-TEST_F(ScrollingCoordinatorTest,
+TEST_P(ScrollingCoordinatorTest,
FixedPositionLosingBackingShouldTriggerMainThreadScroll) {
webViewImpl()->settings()->setPreferCompositingToLCDTextEnabled(false);
registerMockedHttpURLLoad("fixed-position-losing-backing.html");
navigateTo(m_baseURL + "fixed-position-losing-backing.html");
forceFullCompositingUpdate();
- WebLayer* scrollLayer = frame()
- ->page()
- ->deprecatedLocalMainFrame()
- ->view()
- ->layerForScrolling()
- ->platformLayer();
+ WebLayer* scrollLayer = getRootScrollLayer();
+ ASSERT_TRUE(scrollLayer);
+
Document* document = frame()->document();
Element* fixedPos = document->getElementById("fixed");
@@ -812,7 +828,7 @@ TEST_F(ScrollingCoordinatorTest,
EXPECT_TRUE(scrollLayer->shouldScrollOnMainThread());
}
-TEST_F(ScrollingCoordinatorTest, CustomScrollbarShouldTriggerMainThreadScroll) {
+TEST_P(ScrollingCoordinatorTest, CustomScrollbarShouldTriggerMainThreadScroll) {
webViewImpl()->settings()->setPreferCompositingToLCDTextEnabled(true);
webViewImpl()->setDeviceScaleFactor(2.f);
registerMockedHttpURLLoad("custom_scrollbar.html");
@@ -853,7 +869,7 @@ TEST_F(ScrollingCoordinatorTest, CustomScrollbarShouldTriggerMainThreadScroll) {
MainThreadScrollingReason::kCustomScrollbarScrolling);
}
-TEST_F(ScrollingCoordinatorTest,
+TEST_P(ScrollingCoordinatorTest,
BackgroundAttachmentFixedShouldTriggerMainThreadScroll) {
registerMockedHttpURLLoad("iframe-background-attachment-fixed.html");
registerMockedHttpURLLoad("iframe-background-attachment-fixed-inner.html");
@@ -879,10 +895,12 @@ TEST_F(ScrollingCoordinatorTest,
PaintLayerCompositor* innerCompositor = innerLayoutViewItem.compositor();
ASSERT_TRUE(innerCompositor->inCompositingMode());
- ASSERT_TRUE(innerCompositor->scrollLayer());
- GraphicsLayer* scrollLayer = innerCompositor->scrollLayer();
- ASSERT_EQ(innerFrameView, scrollLayer->getScrollableArea());
+ GraphicsLayer* scrollLayer =
+ innerFrameView->layoutViewportScrollableArea()->layerForScrolling();
+ ASSERT_TRUE(scrollLayer);
+ ASSERT_EQ(innerFrameView->layoutViewportScrollableArea(),
+ scrollLayer->getScrollableArea());
WebLayer* webScrollLayer = scrollLayer->platformLayer();
ASSERT_TRUE(webScrollLayer->scrollable());
@@ -901,7 +919,9 @@ TEST_F(ScrollingCoordinatorTest,
layoutObject = iframe->layoutObject();
ASSERT_TRUE(layoutObject);
- scrollLayer = layoutObject->frameView()->layerForScrolling();
+ scrollLayer = layoutObject->frameView()
+ ->layoutViewportScrollableArea()
+ ->layerForScrolling();
ASSERT_TRUE(scrollLayer);
webScrollLayer = scrollLayer->platformLayer();
@@ -922,7 +942,9 @@ TEST_F(ScrollingCoordinatorTest,
layoutObject = iframe->layoutObject();
ASSERT_TRUE(layoutObject);
- scrollLayer = layoutObject->frameView()->layerForScrolling();
+ scrollLayer = layoutObject->frameView()
+ ->layoutViewportScrollableArea()
+ ->layerForScrolling();
ASSERT_TRUE(scrollLayer);
webScrollLayer = scrollLayer->platformLayer();
@@ -933,7 +955,7 @@ TEST_F(ScrollingCoordinatorTest,
// Upon resizing the content size, the main thread scrolling reason
// kHasNonLayerViewportConstrainedObject should be updated on all frames
-TEST_F(ScrollingCoordinatorTest,
+TEST_P(ScrollingCoordinatorTest,
RecalculateMainThreadScrollingReasonsUponResize) {
webViewImpl()->settings()->setPreferCompositingToLCDTextEnabled(false);
registerMockedHttpURLLoad("has-non-layer-viewport-constrained-objects.html");
@@ -947,29 +969,23 @@ TEST_F(ScrollingCoordinatorTest,
LayoutObject* layoutObject = element->layoutObject();
ASSERT_TRUE(layoutObject);
- GraphicsLayer* scrollLayer = layoutObject->frameView()->layerForScrolling();
- ASSERT_TRUE(scrollLayer);
-
- WebLayer* webScrollLayer = scrollLayer->platformLayer();
- ASSERT_TRUE(webScrollLayer->scrollable());
- ASSERT_FALSE(
- webScrollLayer->mainThreadScrollingReasons() &
- MainThreadScrollingReason::kHasNonLayerViewportConstrainedObjects);
-
- Element* iframe = frame()->document()->getElementById("iframe");
- ASSERT_TRUE(iframe);
-
- layoutObject = iframe->layoutObject();
- ASSERT_TRUE(layoutObject);
-
- scrollLayer = layoutObject->frameView()->layerForScrolling();
- ASSERT_TRUE(scrollLayer);
-
- webScrollLayer = scrollLayer->platformLayer();
- ASSERT_TRUE(webScrollLayer->scrollable());
- ASSERT_FALSE(
- webScrollLayer->mainThreadScrollingReasons() &
- MainThreadScrollingReason::kHasNonLayerViewportConstrainedObjects);
+ GraphicsLayer* scrollLayer = layoutObject->frameView()
+ ->layoutViewportScrollableArea()
+ ->layerForScrolling();
+ WebLayer* webScrollLayer;
+
+ if (RuntimeEnabledFeatures::rootLayerScrollingEnabled()) {
+ // When RLS is enabled, the LayoutView won't have a scrolling contents
+ // because it does not overflow.
+ ASSERT_FALSE(scrollLayer);
+ } else {
+ ASSERT_TRUE(scrollLayer);
+ webScrollLayer = scrollLayer->platformLayer();
+ ASSERT_TRUE(webScrollLayer->scrollable());
+ ASSERT_FALSE(
+ webScrollLayer->mainThreadScrollingReasons() &
+ MainThreadScrollingReason::kHasNonLayerViewportConstrainedObjects);
+ }
// When the div becomes to scrollable it should scroll on main thread
element->setAttribute("style",
@@ -980,19 +996,9 @@ TEST_F(ScrollingCoordinatorTest,
layoutObject = element->layoutObject();
ASSERT_TRUE(layoutObject);
- scrollLayer = layoutObject->frameView()->layerForScrolling();
- ASSERT_TRUE(scrollLayer);
-
- webScrollLayer = scrollLayer->platformLayer();
- ASSERT_TRUE(webScrollLayer->scrollable());
- ASSERT_TRUE(
- webScrollLayer->mainThreadScrollingReasons() &
- MainThreadScrollingReason::kHasNonLayerViewportConstrainedObjects);
-
- layoutObject = iframe->layoutObject();
- ASSERT_TRUE(layoutObject);
-
- scrollLayer = layoutObject->frameView()->layerForScrolling();
+ scrollLayer = layoutObject->frameView()
+ ->layoutViewportScrollableArea()
+ ->layerForScrolling();
ASSERT_TRUE(scrollLayer);
webScrollLayer = scrollLayer->platformLayer();
@@ -1010,26 +1016,21 @@ TEST_F(ScrollingCoordinatorTest,
layoutObject = element->layoutObject();
ASSERT_TRUE(layoutObject);
- scrollLayer = layoutObject->frameView()->layerForScrolling();
- ASSERT_TRUE(scrollLayer);
-
- webScrollLayer = scrollLayer->platformLayer();
- ASSERT_TRUE(webScrollLayer->scrollable());
- ASSERT_FALSE(
- webScrollLayer->mainThreadScrollingReasons() &
- MainThreadScrollingReason::kHasNonLayerViewportConstrainedObjects);
-
- layoutObject = iframe->layoutObject();
- ASSERT_TRUE(layoutObject);
-
- scrollLayer = layoutObject->frameView()->layerForScrolling();
- ASSERT_TRUE(scrollLayer);
-
- webScrollLayer = scrollLayer->platformLayer();
- ASSERT_TRUE(webScrollLayer->scrollable());
- ASSERT_FALSE(
- webScrollLayer->mainThreadScrollingReasons() &
- MainThreadScrollingReason::kHasNonLayerViewportConstrainedObjects);
+ scrollLayer = layoutObject->frameView()
+ ->layoutViewportScrollableArea()
+ ->layerForScrolling();
+ if (RuntimeEnabledFeatures::rootLayerScrollingEnabled()) {
+ // When RLS is enabled, the LayoutView won't have a scrolling contents
+ // because it does not overflow.
+ ASSERT_FALSE(scrollLayer);
+ } else {
+ ASSERT_TRUE(scrollLayer);
+ webScrollLayer = scrollLayer->platformLayer();
+ ASSERT_TRUE(webScrollLayer->scrollable());
+ ASSERT_FALSE(
+ webScrollLayer->mainThreadScrollingReasons() &
+ MainThreadScrollingReason::kHasNonLayerViewportConstrainedObjects);
+ }
}
class StyleRelatedMainThreadScrollingReasonTest
@@ -1092,28 +1093,32 @@ class StyleRelatedMainThreadScrollingReasonTest
}
};
-TEST_F(StyleRelatedMainThreadScrollingReasonTest, TransparentTest) {
+INSTANTIATE_TEST_CASE_P(All,
+ StyleRelatedMainThreadScrollingReasonTest,
+ ::testing::Bool());
+
+TEST_P(StyleRelatedMainThreadScrollingReasonTest, TransparentTest) {
testStyle("transparent", MainThreadScrollingReason::kHasOpacityAndLCDText);
}
-TEST_F(StyleRelatedMainThreadScrollingReasonTest, TransformTest) {
+TEST_P(StyleRelatedMainThreadScrollingReasonTest, TransformTest) {
testStyle("transform", MainThreadScrollingReason::kHasTransformAndLCDText);
}
-TEST_F(StyleRelatedMainThreadScrollingReasonTest, BackgroundNotOpaqueTest) {
+TEST_P(StyleRelatedMainThreadScrollingReasonTest, BackgroundNotOpaqueTest) {
testStyle("background-not-opaque",
MainThreadScrollingReason::kBackgroundNotOpaqueInRectAndLCDText);
}
-TEST_F(StyleRelatedMainThreadScrollingReasonTest, BorderRadiusTest) {
+TEST_P(StyleRelatedMainThreadScrollingReasonTest, BorderRadiusTest) {
testStyle("border-radius", MainThreadScrollingReason::kHasBorderRadius);
}
-TEST_F(StyleRelatedMainThreadScrollingReasonTest, ClipTest) {
+TEST_P(StyleRelatedMainThreadScrollingReasonTest, ClipTest) {
testStyle("clip", MainThreadScrollingReason::kHasClipRelatedProperty);
}
-TEST_F(StyleRelatedMainThreadScrollingReasonTest, ClipPathTest) {
+TEST_P(StyleRelatedMainThreadScrollingReasonTest, ClipPathTest) {
uint32_t reason = MainThreadScrollingReason::kHasClipRelatedProperty;
webViewImpl()->settings()->setPreferCompositingToLCDTextEnabled(false);
Document* document = frame()->document();
@@ -1148,13 +1153,13 @@ TEST_F(StyleRelatedMainThreadScrollingReasonTest, ClipPathTest) {
ASSERT_FALSE(frameView->mainThreadScrollingReasons() & reason);
}
-TEST_F(StyleRelatedMainThreadScrollingReasonTest, LCDTextEnabledTest) {
+TEST_P(StyleRelatedMainThreadScrollingReasonTest, LCDTextEnabledTest) {
testStyle("transparent border-radius",
MainThreadScrollingReason::kHasOpacityAndLCDText |
MainThreadScrollingReason::kHasBorderRadius);
}
-TEST_F(StyleRelatedMainThreadScrollingReasonTest, BoxShadowTest) {
+TEST_P(StyleRelatedMainThreadScrollingReasonTest, BoxShadowTest) {
testStyle("box-shadow",
MainThreadScrollingReason::kHasBoxShadowFromNonRootLayer);
}
« no previous file with comments | « no previous file | third_party/WebKit/Source/web/tests/WebFrameTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698