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

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

Issue 2745063005: Remove document.rootScroller compositing clipping effects. (Closed)
Patch Set: Fix Rebase Created 3 years, 9 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 | « third_party/WebKit/Source/core/paint/PaintLayer.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/web/tests/RootScrollerTest.cpp
diff --git a/third_party/WebKit/Source/web/tests/RootScrollerTest.cpp b/third_party/WebKit/Source/web/tests/RootScrollerTest.cpp
index 8a75f24ef34a273c65fd24b965cb2c0deef5b40f..a90ecc8c0ea6a2658ec4c3f9073bf82cbcba5a3c 100644
--- a/third_party/WebKit/Source/web/tests/RootScrollerTest.cpp
+++ b/third_party/WebKit/Source/web/tests/RootScrollerTest.cpp
@@ -742,194 +742,6 @@ TEST_F(RootScrollerTest, RemoteMainFrame) {
m_helper.reset();
}
-GraphicsLayer* scrollingLayer(LayoutView& layoutView) {
- if (RuntimeEnabledFeatures::rootLayerScrollingEnabled())
- return layoutView.layer()->compositedLayerMapping()->scrollingLayer();
- return layoutView.compositor()->rootContentLayer();
-}
-
-// Tests that clipping layers belonging to any compositors in the ancestor chain
-// of the global root scroller have their masking bit removed.
-TEST_F(RootScrollerTest, RemoveClippingOnCompositorLayers) {
- initialize("root-scroller-iframe.html");
-
- HTMLFrameOwnerElement* iframe = toHTMLFrameOwnerElement(
- mainFrame()->document()->getElementById("iframe"));
- Element* container = iframe->contentDocument()->getElementById("container");
-
- RootScrollerController& mainController =
- mainFrame()->document()->rootScrollerController();
- RootScrollerController& childController =
- iframe->contentDocument()->rootScrollerController();
- TopDocumentRootScrollerController& globalController =
- page().globalRootScrollerController();
-
- LayoutView* mainLayoutView = mainFrameView()->layoutView();
- LayoutView* childLayoutView = iframe->contentDocument()->layoutView();
- PaintLayerCompositor* mainCompositor = mainLayoutView->compositor();
- PaintLayerCompositor* childCompositor = childLayoutView->compositor();
-
- NonThrowableExceptionState nonThrow;
-
- // No root scroller set, on the main frame the root content layer should
- // clip. Additionally, on the child frame, the overflow controls host and
- // container layers should also clip.
- {
- EXPECT_TRUE(
- scrollingLayer(*mainLayoutView)->platformLayer()->masksToBounds());
- EXPECT_FALSE(
- mainCompositor->rootGraphicsLayer()->platformLayer()->masksToBounds());
- EXPECT_FALSE(
- mainCompositor->containerLayer()->platformLayer()->masksToBounds());
-
- EXPECT_TRUE(
- scrollingLayer(*childLayoutView)->platformLayer()->masksToBounds());
- EXPECT_TRUE(
- childCompositor->rootGraphicsLayer()->platformLayer()->masksToBounds());
- EXPECT_TRUE(
- childCompositor->containerLayer()->platformLayer()->masksToBounds());
- }
-
- // Now set the root scrollers such that the container in the iframe is the
- // global root scroller. All the previously clipping layers in both paint
- // layer compositors should no longer clip.
- {
- iframe->contentDocument()->setRootScroller(container, nonThrow);
- mainFrame()->document()->setRootScroller(iframe, nonThrow);
- mainFrameView()->updateAllLifecyclePhases();
-
- ASSERT_EQ(iframe, &mainController.effectiveRootScroller());
- ASSERT_EQ(container, &childController.effectiveRootScroller());
-
- EXPECT_FALSE(
- scrollingLayer(*mainLayoutView)->platformLayer()->masksToBounds());
- EXPECT_FALSE(
- mainCompositor->rootGraphicsLayer()->platformLayer()->masksToBounds());
- EXPECT_FALSE(
- mainCompositor->containerLayer()->platformLayer()->masksToBounds());
-
- EXPECT_FALSE(
- scrollingLayer(*childLayoutView)->platformLayer()->masksToBounds());
- EXPECT_FALSE(
- childCompositor->rootGraphicsLayer()->platformLayer()->masksToBounds());
- EXPECT_FALSE(
- childCompositor->containerLayer()->platformLayer()->masksToBounds());
- }
-
- // Now reset the iframe's root scroller. Since the iframe itself is now the
- // global root scroller we want it to behave as if it were the main frame,
- // which means it should clip only on its root content layer.
- {
- iframe->contentDocument()->setRootScroller(nullptr, nonThrow);
- mainFrameView()->updateAllLifecyclePhases();
-
- ASSERT_EQ(iframe, &mainController.effectiveRootScroller());
- ASSERT_EQ(iframe->contentDocument(),
- &childController.effectiveRootScroller());
- ASSERT_EQ(iframe->contentDocument()->documentElement(),
- globalController.globalRootScroller());
-
- EXPECT_FALSE(
- scrollingLayer(*mainLayoutView)->platformLayer()->masksToBounds());
- EXPECT_FALSE(
- mainCompositor->rootGraphicsLayer()->platformLayer()->masksToBounds());
- EXPECT_FALSE(
- mainCompositor->containerLayer()->platformLayer()->masksToBounds());
-
- EXPECT_TRUE(
- scrollingLayer(*childLayoutView)->platformLayer()->masksToBounds());
- EXPECT_FALSE(
- childCompositor->rootGraphicsLayer()->platformLayer()->masksToBounds());
- EXPECT_FALSE(
- childCompositor->containerLayer()->platformLayer()->masksToBounds());
- }
-
- // Now reset the main frame's root scroller. Its compositor should go back
- // to clipping as well. Because the iframe is now no longer the global root
- // scroller, it should go back to clipping its overflow host and container
- // layers. This checks that we invalidate the compositing state even though
- // the iframe's effective root scroller hasn't changed.
-
- {
- mainFrame()->document()->setRootScroller(nullptr, nonThrow);
- mainFrameView()->updateAllLifecyclePhases();
-
- ASSERT_EQ(mainFrame()->document(), &mainController.effectiveRootScroller());
- ASSERT_EQ(iframe->contentDocument(),
- &childController.effectiveRootScroller());
- ASSERT_EQ(mainFrame()->document()->documentElement(),
- globalController.globalRootScroller());
-
- EXPECT_TRUE(
- scrollingLayer(*mainLayoutView)->platformLayer()->masksToBounds());
- EXPECT_FALSE(
- mainCompositor->rootGraphicsLayer()->platformLayer()->masksToBounds());
- EXPECT_FALSE(
- mainCompositor->containerLayer()->platformLayer()->masksToBounds());
-
- EXPECT_TRUE(
- scrollingLayer(*childLayoutView)->platformLayer()->masksToBounds());
- EXPECT_TRUE(
- childCompositor->rootGraphicsLayer()->platformLayer()->masksToBounds());
- EXPECT_TRUE(
- childCompositor->containerLayer()->platformLayer()->masksToBounds());
- }
-
- // Set the iframe back as the main frame's root scroller. Since its the
- // global root scroller again, it should clip like the root frame. This
- // checks that we invalidate the compositing state even though the iframe's
- // effective root scroller hasn't changed.
- {
- mainFrame()->document()->setRootScroller(iframe, nonThrow);
- mainFrameView()->updateAllLifecyclePhases();
-
- ASSERT_EQ(iframe, &mainController.effectiveRootScroller());
- ASSERT_EQ(iframe->contentDocument(),
- &childController.effectiveRootScroller());
- ASSERT_EQ(iframe->contentDocument()->documentElement(),
- globalController.globalRootScroller());
-
- EXPECT_FALSE(
- scrollingLayer(*mainLayoutView)->platformLayer()->masksToBounds());
- EXPECT_FALSE(
- mainCompositor->rootGraphicsLayer()->platformLayer()->masksToBounds());
- EXPECT_FALSE(
- mainCompositor->containerLayer()->platformLayer()->masksToBounds());
-
- EXPECT_TRUE(
- scrollingLayer(*childLayoutView)->platformLayer()->masksToBounds());
- EXPECT_FALSE(
- childCompositor->rootGraphicsLayer()->platformLayer()->masksToBounds());
- EXPECT_FALSE(
- childCompositor->containerLayer()->platformLayer()->masksToBounds());
- }
-
- // Set just the iframe's root scroller. We should stop clipping the
- // iframe's compositor's layers but not the main frame's.
- {
- mainFrame()->document()->setRootScroller(nullptr, nonThrow);
- iframe->contentDocument()->setRootScroller(container, nonThrow);
- mainFrameView()->updateAllLifecyclePhases();
-
- ASSERT_EQ(mainFrame()->document(), &mainController.effectiveRootScroller());
- ASSERT_EQ(container, &childController.effectiveRootScroller());
-
- EXPECT_TRUE(
- scrollingLayer(*mainLayoutView)->platformLayer()->masksToBounds());
- EXPECT_FALSE(
- mainCompositor->rootGraphicsLayer()->platformLayer()->masksToBounds());
- EXPECT_FALSE(
- mainCompositor->containerLayer()->platformLayer()->masksToBounds());
-
- EXPECT_FALSE(
- scrollingLayer(*childLayoutView)->platformLayer()->masksToBounds());
- EXPECT_FALSE(
- childCompositor->rootGraphicsLayer()->platformLayer()->masksToBounds());
- EXPECT_FALSE(
- childCompositor->containerLayer()->platformLayer()->masksToBounds());
- }
-}
-
// Tests that the clipping layer is resized on the root scroller element even
// if the layout height doesn't change.
TEST_F(RootScrollerTest, BrowserControlsResizeClippingLayer) {
« no previous file with comments | « third_party/WebKit/Source/core/paint/PaintLayer.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698