WebKit Bugzilla
Attachment 360265 Details for
Bug 193879
: Have composited RenderIFrame layers make FrameHosting scrolling tree nodes to parent the iframe's scrolling node
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-193879-20190126210836.patch (text/plain), 70.69 KB, created by
Simon Fraser (smfr)
on 2019-01-26 21:08:38 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Simon Fraser (smfr)
Created:
2019-01-26 21:08:38 PST
Size:
70.69 KB
patch
obsolete
>Subversion Revision: 240551 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index aaa113994d607050cafb0e90b26bcb69e95e3225..a1c7f3e6fed53da177a2c03998ce23e7e1afa67f 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,47 @@ >+2019-01-26 Simon Fraser <simon.fraser@apple.com> >+ >+ Have composited RenderIFrame layers make FrameHosting scrolling tree nodes to parent the iframe's scrolling node >+ https://bugs.webkit.org/show_bug.cgi?id=193879 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Currently we parent iframe scrolling tree nodes by finding the closest ancestor layer with a scrolling tree node. >+ This results in scrolling tree nodes being connected across iframe boundaries in some arbitrary ancestor. This >+ makes updating scrolling tree geometry very error-prone, since changes in the parent document will need to trigger >+ updates of the scrolling tree node in an iframe. >+ >+ To address this, I already added a new "FrameHosting" scrolling node type. This patch actually instantiates these >+ nodes, which are owned by the RenderIFrame's composited layer. Connecting across frame boundaries is theforefore >+ simply a case of getting the FrameHosting node from the ownerElement's renderer; this is very similar to how we >+ connect GraphicsLayers together. >+ >+ RenderLayerBacking gains another scrolling role for FrameHosting and ScrollingNodeID. >+ >+ Tested by existing tests. >+ >+ * page/FrameView.h: >+ * rendering/RenderLayer.cpp: >+ (WebCore::outputPaintOrderTreeRecursive): >+ * rendering/RenderLayerBacking.cpp: >+ (WebCore::RenderLayerBacking::updateConfiguration): >+ (WebCore::RenderLayerBacking::detachFromScrollingCoordinator): >+ * rendering/RenderLayerCompositor.cpp: >+ (WebCore::frameContentsRenderView): >+ (WebCore::RenderLayerCompositor::frameContentsCompositor): >+ (WebCore::RenderLayerCompositor::parentFrameContentLayers): >+ (WebCore::RenderLayerCompositor::isLayerForIFrameWithScrollCoordinatedContents const): >+ (WebCore::RenderLayerCompositor::detachRootLayer): >+ (WebCore::RenderLayerCompositor::updateScrollCoordinatedStatus): >+ (WebCore::RenderLayerCompositor::removeFromScrollCoordinatedLayers): >+ (WebCore::scrollCoordinatedAncestorInParentOfFrame): >+ (WebCore::RenderLayerCompositor::reattachSubframeScrollLayers): >+ (WebCore::RenderLayerCompositor::attachScrollingNode): >+ (WebCore::RenderLayerCompositor::updateScrollCoordinationForThisFrame): >+ (WebCore::RenderLayerCompositor::updateScrollCoordinatedLayer): >+ * rendering/RenderLayerCompositor.h: >+ * testing/Internals.cpp: >+ (WebCore::Internals::scrollingStateTreeAsText const): >+ > 2019-01-26 Simon Fraser <simon.fraser@apple.com> > > Allow scrolling tree nodes to exist in a detached state >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index 03a1013b6dcc3be10fd251b1ca4d7d97914c3e1d..19b77a8d0cdc52aa50ac5f70a44773613d0702a8 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,15 @@ >+2019-01-26 Simon Fraser <simon.fraser@apple.com> >+ >+ Have composited RenderIFrame layers make FrameHosting scrolling tree nodes to parent the iframe's scrolling node >+ https://bugs.webkit.org/show_bug.cgi?id=193879 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Need a specialization of dump() for ScrollingStateFrameHostingNode to avoid infinite recursion. >+ >+ * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp: >+ (WebKit::dump): >+ > 2019-01-26 Simon Fraser <simon.fraser@apple.com> > > Allow scrolling tree nodes to exist in a detached state >diff --git a/Source/WebCore/page/FrameView.h b/Source/WebCore/page/FrameView.h >index 1b2fe100b5c7e5e9a41bd1bed18b101978ef6950..6a97102976af4d6693ad100cf51ba1f28fd82bdf 100644 >--- a/Source/WebCore/page/FrameView.h >+++ b/Source/WebCore/page/FrameView.h >@@ -152,10 +152,9 @@ public: > > WEBCORE_EXPORT TiledBacking* tiledBacking() const final; > >- // In the future when any ScrollableArea can have a node in th ScrollingTree, this should >- // become a virtual function on ScrollableArea. > uint64_t scrollLayerID() const override; > ScrollableArea* scrollableAreaForScrollLayerID(uint64_t) const; >+ bool usesAsyncScrolling() const final; > > WEBCORE_EXPORT void enterCompositingMode(); > WEBCORE_EXPORT bool isEnclosedInCompositingLayer() const; >@@ -746,7 +745,6 @@ private: > #endif > > bool usesCompositedScrolling() const final; >- bool usesAsyncScrolling() const final; > bool usesMockScrollAnimator() const final; > void logMockScrollAnimatorMessage(const String&) const final; > >diff --git a/Source/WebCore/rendering/RenderLayer.cpp b/Source/WebCore/rendering/RenderLayer.cpp >index 2d275fb5aad48ac83ab24814dd03a2471c2e459f..8c4d7f1ea565418098c62474fa5668dcf49d627d 100644 >--- a/Source/WebCore/rendering/RenderLayer.cpp >+++ b/Source/WebCore/rendering/RenderLayer.cpp >@@ -6690,8 +6690,38 @@ static void outputPaintOrderTreeRecursive(TextStream& stream, const WebCore::Ren > auto layerRect = layer.rect(); > > stream << &layer << " " << layerRect; >- if (layer.isComposited()) >- stream << " (layerID " << layer.backing()->graphicsLayer()->primaryLayerID() << ")"; >+ if (layer.isComposited()) { >+ auto& backing = *layer.backing(); >+ stream << " (layerID " << backing.graphicsLayer()->primaryLayerID() << ")"; >+ >+ auto scrollingNodeID = backing.scrollingNodeIDForRole(WebCore::ScrollCoordinationRole::Scrolling); >+ auto frameHostingNodeID = backing.scrollingNodeIDForRole(WebCore::ScrollCoordinationRole::FrameHosting); >+ auto viewportConstrainedNodeID = backing.scrollingNodeIDForRole(WebCore::ScrollCoordinationRole::ViewportConstrained); >+ >+ if (scrollingNodeID || frameHostingNodeID || viewportConstrainedNodeID) { >+ stream << " {"; >+ bool first = true; >+ if (scrollingNodeID) { >+ stream << "sc " << scrollingNodeID; >+ first = false; >+ } >+ >+ if (frameHostingNodeID) { >+ if (!first) >+ stream << ", "; >+ stream << "fh " << frameHostingNodeID; >+ first = false; >+ } >+ >+ if (viewportConstrainedNodeID) { >+ if (!first) >+ stream << ", "; >+ stream << "vc " << viewportConstrainedNodeID; >+ } >+ >+ stream << "}"; >+ } >+ } > stream << " " << layer.name(); > stream.nextLine(); > >diff --git a/Source/WebCore/rendering/RenderLayerBacking.cpp b/Source/WebCore/rendering/RenderLayerBacking.cpp >index 818e7ba74dc31c5cf433cd5c58658e50d92a073f..f669c9122bc5b469f253921b9bb42524db0f9e5b 100644 >--- a/Source/WebCore/rendering/RenderLayerBacking.cpp >+++ b/Source/WebCore/rendering/RenderLayerBacking.cpp >@@ -783,7 +783,7 @@ bool RenderLayerBacking::updateConfiguration() > layerConfigChanged = true; > } > #endif >- if (is<RenderWidget>(renderer()) && RenderLayerCompositor::parentFrameContentLayers(downcast<RenderWidget>(renderer()))) { >+ if (is<RenderWidget>(renderer()) && compositor().parentFrameContentLayers(downcast<RenderWidget>(renderer()))) { > m_owningLayer.setNeedsCompositingGeometryUpdate(); > layerConfigChanged = true; > } >@@ -1769,7 +1769,7 @@ bool RenderLayerBacking::updateScrollingLayers(bool needsScrollingLayers) > > void RenderLayerBacking::detachFromScrollingCoordinator(OptionSet<ScrollCoordinationRole> roles) > { >- if (!m_scrollingNodeID && !m_viewportConstrainedNodeID) >+ if (!m_scrollingNodeID && !m_frameHostingNodeID && !m_viewportConstrainedNodeID) > return; > > auto* scrollingCoordinator = m_owningLayer.page().scrollingCoordinator(); >diff --git a/Source/WebCore/rendering/RenderLayerCompositor.cpp b/Source/WebCore/rendering/RenderLayerCompositor.cpp >index 28c82381964c0e5ee92fe5bf1ccd99be89ec691a..5b1ca4c95d6d1006e47428731493b4b083869d00 100644 >--- a/Source/WebCore/rendering/RenderLayerCompositor.cpp >+++ b/Source/WebCore/rendering/RenderLayerCompositor.cpp >@@ -1928,12 +1928,19 @@ String RenderLayerCompositor::layerTreeAsText(LayerTreeFlags flags) > return layerTreeText; > } > >+static RenderView* frameContentsRenderView(RenderWidget& renderer) >+{ >+ if (auto* contentDocument = renderer.frameOwnerElement().contentDocument()) >+ return contentDocument->renderView(); >+ >+ return nullptr; >+} >+ > RenderLayerCompositor* RenderLayerCompositor::frameContentsCompositor(RenderWidget& renderer) > { >- if (auto* contentDocument = renderer.frameOwnerElement().contentDocument()) { >- if (auto* view = contentDocument->renderView()) >- return &view->compositor(); >- } >+ if (auto* view = frameContentsRenderView(renderer)) >+ return &view->compositor(); >+ > return nullptr; > } > >@@ -1954,6 +1961,15 @@ bool RenderLayerCompositor::parentFrameContentLayers(RenderWidget& renderer) > hostingLayer->removeAllChildren(); > hostingLayer->addChild(*rootLayer); > } >+ >+ if (auto frameHostingNodeID = backing->scrollingNodeIDForRole(ScrollCoordinationRole::FrameHosting)) { >+ auto* contentsRenderView = frameContentsRenderView(renderer); >+ if (auto frameRootScrollingNodeID = contentsRenderView->frameView().scrollLayerID()) { >+ if (auto* scrollingCoordinator = this->scrollingCoordinator()) >+ scrollingCoordinator->insertNode(ScrollingNodeType::Subframe, frameRootScrollingNodeID, frameHostingNodeID, 0); >+ } >+ } >+ > // FIXME: Why always return true and not just when the layers changed? > return true; > } >@@ -2843,6 +2859,25 @@ bool RenderLayerCompositor::useCoordinatedScrollingForLayer(const RenderLayer& l > return false; > } > >+bool RenderLayerCompositor::isLayerForIFrameWithScrollCoordinatedContents(const RenderLayer& layer) const >+{ >+ if (!is<RenderWidget>(layer.renderer())) >+ return false; >+ >+ auto* contentDocument = downcast<RenderWidget>(layer.renderer()).frameOwnerElement().contentDocument(); >+ if (!contentDocument) >+ return false; >+ >+ auto* view = contentDocument->renderView(); >+ if (!view) >+ return false; >+ >+ if (auto* scrollingCoordinator = this->scrollingCoordinator()) >+ return scrollingCoordinator->coordinatesScrollingForFrameView(view->frameView()); >+ >+ return false; >+} >+ > bool RenderLayerCompositor::isRunningTransformAnimation(RenderLayerModelObject& renderer) const > { > if (!(m_compositingTriggers & ChromeClient::AnimationTrigger)) >@@ -2859,8 +2894,7 @@ bool RenderLayerCompositor::isRunningTransformAnimation(RenderLayerModelObject& > } > > // If an element has negative z-index children, those children render in front of the >-// layer background, so we need an extra 'contents' layer for the foreground of the layer >-// object. >+// layer background, so we need an extra 'contents' layer for the foreground of the layer object. > bool RenderLayerCompositor::needsContentsCompositingLayer(const RenderLayer& layer) const > { > return layer.hasNegativeZOrderLayers(); >@@ -3534,7 +3568,7 @@ void RenderLayerCompositor::detachRootLayer() > > switch (m_rootLayerAttachment) { > case RootLayerAttachedViaEnclosingFrame: { >- // The layer will get unhooked up via RenderLayerBacking::updateGraphicsLayerConfiguration() >+ // The layer will get unhooked up via RenderLayerBacking::updateConfiguration() > // for the frame's renderer in the parent document. > if (m_overflowControlsHostLayer) > m_overflowControlsHostLayer->removeFromParent(); >@@ -3543,6 +3577,11 @@ void RenderLayerCompositor::detachRootLayer() > > if (auto* ownerElement = m_renderView.document().ownerElement()) > ownerElement->scheduleInvalidateStyleAndLayerComposition(); >+ >+ if (auto frameRootScrollingNodeID = m_renderView.frameView().scrollLayerID()) { >+ if (auto* scrollingCoordinator = this->scrollingCoordinator()) >+ scrollingCoordinator->unparentNode(frameRootScrollingNodeID); >+ } > break; > } > case RootLayerAttachedViaChromeClient: { >@@ -3651,6 +3690,12 @@ void RenderLayerCompositor::updateScrollCoordinatedStatus(RenderLayer& layer, Op > if (useCoordinatedScrollingForLayer(layer)) > coordinationRoles.add(ScrollCoordinationRole::Scrolling); > >+ if (isLayerForIFrameWithScrollCoordinatedContents(layer)) { >+ // We never expect a RenderIFrame to have scrollable overflow. >+ ASSERT(!coordinationRoles.contains(ScrollCoordinationRole::Scrolling)); >+ coordinationRoles.add(ScrollCoordinationRole::FrameHosting); >+ } >+ > if (layer.isComposited()) > layer.backing()->setIsScrollCoordinatedWithViewportConstrainedRole(coordinationRoles.contains(ScrollCoordinationRole::ViewportConstrained)); > >@@ -3673,7 +3718,7 @@ void RenderLayerCompositor::removeFromScrollCoordinatedLayers(RenderLayer& layer > m_scrollCoordinatedLayers.remove(&layer); > m_scrollCoordinatedLayersNeedingUpdate.remove(&layer); > >- detachScrollCoordinatedLayer(layer, { ScrollCoordinationRole::Scrolling, ScrollCoordinationRole::ViewportConstrained }); >+ detachScrollCoordinatedLayer(layer, { ScrollCoordinationRole::Scrolling, ScrollCoordinationRole::ViewportConstrained, ScrollCoordinationRole::FrameHosting }); > } > > FixedPositionViewportConstraints RenderLayerCompositor::computeFixedViewportConstraints(RenderLayer& layer) const >@@ -3747,22 +3792,27 @@ static ScrollingNodeID enclosingScrollingNodeID(RenderLayer& layer, IncludeSelfO > return 0; > } > >-static ScrollingNodeID scrollCoordinatedAncestorInParentOfFrame(Frame& frame) >+static Optional<ScrollingNodeID> scrollCoordinatedAncestorInParentOfFrame(Frame& frame) > { > if (!frame.document() || !frame.view()) >- return 0; >+ return { }; > > // Find the frame's enclosing layer in our render tree. > auto* ownerElement = frame.document()->ownerElement(); > auto* frameRenderer = ownerElement ? ownerElement->renderer() : nullptr; >- if (!frameRenderer) >- return 0; >+ if (!frameRenderer || !is<RenderWidget>(frameRenderer)) >+ return { }; > >- auto* layerInParentDocument = frameRenderer->enclosingLayer(); >- if (!layerInParentDocument) >- return 0; >+ auto& widgetRenderer = downcast<RenderWidget>(*frameRenderer); >+ if (!widgetRenderer.hasLayer() || !widgetRenderer.layer()->isComposited()) { >+ LOG(Scrolling, "scrollCoordinatedAncestorInParentOfFrame: frame renderer has no layer or is not composited."); >+ return { }; >+ } >+ >+ if (auto frameHostingNodeID = widgetRenderer.layer()->backing()->scrollingNodeIDForRole(ScrollCoordinationRole::FrameHosting)) >+ return frameHostingNodeID; > >- return enclosingScrollingNodeID(*layerInParentDocument, IncludeSelf); >+ return { }; > } > > void RenderLayerCompositor::reattachSubframeScrollLayers() >@@ -3784,11 +3834,13 @@ void RenderLayerCompositor::reattachSubframeScrollLayers() > if (!frameScrollingNodeID) > continue; > >- ScrollingNodeID parentNodeID = scrollCoordinatedAncestorInParentOfFrame(*child); >- if (!parentNodeID) >+ auto parentNodeID = scrollCoordinatedAncestorInParentOfFrame(*child); >+ if (!parentNodeID) { >+ LOG(Scrolling, "RenderLayerCompositor %p reattachSubframeScrollLayers: failed to find scrolling node parent for frame with nodeID %llu.", this, frameScrollingNodeID); > continue; >+ } > >- scrollingCoordinator->insertNode(child->isMainFrame() ? ScrollingNodeType::MainFrame : ScrollingNodeType::Subframe, frameScrollingNodeID, parentNodeID); >+ scrollingCoordinator->insertNode(child->isMainFrame() ? ScrollingNodeType::MainFrame : ScrollingNodeType::Subframe, frameScrollingNodeID, parentNodeID.value()); > } > } > >@@ -3809,7 +3861,7 @@ static inline ScrollCoordinationRole scrollCoordinationRoleForNodeType(Scrolling > return ScrollCoordinationRole::Scrolling; > } > >-ScrollingNodeID RenderLayerCompositor::attachScrollingNode(RenderLayer& layer, ScrollingNodeType nodeType, ScrollingNodeID parentNodeID) >+ScrollingNodeID RenderLayerCompositor::attachScrollingNode(RenderLayer& layer, ScrollingNodeType nodeType, Optional<ScrollingNodeID> parentNodeID) > { > auto* scrollingCoordinator = this->scrollingCoordinator(); > auto* backing = layer.backing(); >@@ -3823,13 +3875,19 @@ ScrollingNodeID RenderLayerCompositor::attachScrollingNode(RenderLayer& layer, S > if (!nodeID) > nodeID = scrollingCoordinator->uniqueScrollingNodeID(); > >- nodeID = scrollingCoordinator->insertNode(nodeType, nodeID, parentNodeID); >+ LOG_WITH_STREAM(Scrolling, stream << "RenderLayerCompositor " << this << " attachScrollingNode " << nodeID << " type " << nodeType << " parent " << parentNodeID.valueOr(0)); >+ >+ if (nodeType == ScrollingNodeType::Subframe && !parentNodeID) >+ nodeID = scrollingCoordinator->createNode(nodeType, nodeID); >+ else >+ nodeID = scrollingCoordinator->insertNode(nodeType, nodeID, parentNodeID.valueOr(0)); >+ > if (!nodeID) > return 0; > > backing->setScrollingNodeIDForRole(nodeID, role); > m_scrollingNodeToLayerMap.add(nodeID, &layer); >- >+ > return nodeID; > } > >@@ -3869,7 +3927,7 @@ void RenderLayerCompositor::detachScrollCoordinatedLayer(RenderLayer& layer, Opt > backing->detachFromScrollingCoordinator(roles); > } > >-void RenderLayerCompositor::updateScrollCoordinationForThisFrame(ScrollingNodeID parentNodeID, OptionSet<ScrollingNodeChangeFlags> changes) >+void RenderLayerCompositor::updateScrollCoordinationForThisFrame(Optional<ScrollingNodeID> parentNodeID, OptionSet<ScrollingNodeChangeFlags> changes) > { > auto* scrollingCoordinator = this->scrollingCoordinator(); > FrameView& frameView = m_renderView.frameView(); >@@ -3907,10 +3965,7 @@ void RenderLayerCompositor::updateScrollCoordinatedLayer(RenderLayer& layer, Opt > return; > > if (!m_renderView.frame().isMainFrame()) { >- ScrollingNodeID parentDocumentHostingNodeID = scrollCoordinatedAncestorInParentOfFrame(m_renderView.frame()); >- if (!parentDocumentHostingNodeID) >- return; >- >+ auto parentDocumentHostingNodeID = scrollCoordinatedAncestorInParentOfFrame(m_renderView.frame()); > updateScrollCoordinationForThisFrame(parentDocumentHostingNodeID, changes); > if (!(roles.contains(ScrollCoordinationRole::ViewportConstrained)) && isRenderViewLayer) > return; >diff --git a/Source/WebCore/rendering/RenderLayerCompositor.h b/Source/WebCore/rendering/RenderLayerCompositor.h >index c33f99341162639c5f4f1d4d59358ec9964b989f..9c94bdf072839387280ab15dc3818d5b6fcc4ec4 100644 >--- a/Source/WebCore/rendering/RenderLayerCompositor.h >+++ b/Source/WebCore/rendering/RenderLayerCompositor.h >@@ -272,7 +272,7 @@ public: > > static RenderLayerCompositor* frameContentsCompositor(RenderWidget&); > // Return true if the layers changed. >- static bool parentFrameContentLayers(RenderWidget&); >+ bool parentFrameContentLayers(RenderWidget&); > > // Update the geometry of the layers used for clipping and scrolling in frames. > void frameViewDidChangeLocation(const IntPoint& contentsOffset); >@@ -326,6 +326,7 @@ public: > void removeFromScrollCoordinatedLayers(RenderLayer&); > > bool useCoordinatedScrollingForLayer(const RenderLayer&) const; >+ bool isLayerForIFrameWithScrollCoordinatedContents(const RenderLayer&) const; > > void willRemoveScrollingLayerWithBacking(RenderLayer&, RenderLayerBacking&); > void didAddScrollingLayer(RenderLayer&); >@@ -476,8 +477,8 @@ private: > > void updateCustomLayersAfterFlush(); > >- void updateScrollCoordinationForThisFrame(ScrollingNodeID, OptionSet<ScrollingNodeChangeFlags>); >- ScrollingNodeID attachScrollingNode(RenderLayer&, ScrollingNodeType, ScrollingNodeID parentNodeID); >+ void updateScrollCoordinationForThisFrame(Optional<ScrollingNodeID>, OptionSet<ScrollingNodeChangeFlags>); >+ ScrollingNodeID attachScrollingNode(RenderLayer&, ScrollingNodeType, Optional<ScrollingNodeID> parentNodeID); > void updateScrollCoordinatedLayer(RenderLayer&, OptionSet<ScrollCoordinationRole>, OptionSet<ScrollingNodeChangeFlags>); > void detachScrollCoordinatedLayer(RenderLayer&, OptionSet<ScrollCoordinationRole>); > void detachScrollCoordinatedLayerWithRole(RenderLayer&, ScrollingCoordinator&, ScrollCoordinationRole); >diff --git a/Source/WebCore/testing/Internals.cpp b/Source/WebCore/testing/Internals.cpp >index 1c84704b7b3965298a872894bcfad2e12b4da602..0d70981ced8abc8cfcbe85288f1b2a5f021adcc7 100644 >--- a/Source/WebCore/testing/Internals.cpp >+++ b/Source/WebCore/testing/Internals.cpp >@@ -2568,6 +2568,8 @@ ExceptionOr<String> Internals::scrollingStateTreeAsText() const > if (!document || !document->frame()) > return Exception { InvalidAccessError }; > >+ document->updateLayoutIgnorePendingStylesheets(); >+ > Page* page = document->page(); > if (!page) > return String(); >diff --git a/Source/WebKit/Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp b/Source/WebKit/Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp >index 30221e478631a6359545baed5b7d7266bc5ef9df..03a9f8f2009339de081668d3b52aaf34e4a8004e 100644 >--- a/Source/WebKit/Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp >+++ b/Source/WebKit/Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp >@@ -524,7 +524,11 @@ static void dump(TextStream& ts, const ScrollingStateScrollingNode& node, bool c > if (!changedPropertiesOnly || node.hasChangedProperty(ScrollingStateScrollingNode::ScrolledContentsLayer)) > ts.dumpProperty("scrolled-contents-layer", static_cast<GraphicsLayer::PlatformLayerID>(node.scrolledContentsLayer())); > } >- >+ >+static void dump(TextStream& ts, const ScrollingStateFrameHostingNode& node, bool changedPropertiesOnly) >+{ >+} >+ > static void dump(TextStream& ts, const ScrollingStateFrameScrollingNode& node, bool changedPropertiesOnly) > { > dump(ts, static_cast<const ScrollingStateScrollingNode&>(node), changedPropertiesOnly); >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index e2996664a14d7f60c774e7e56c5389af25f5db55..62e952e651edad91c9b17c3a1a40ac9719757f08 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,27 @@ >+2019-01-26 Simon Fraser <simon.fraser@apple.com> >+ >+ Have composited RenderIFrame layers make FrameHosting scrolling tree nodes to parent the iframe's scrolling node >+ https://bugs.webkit.org/show_bug.cgi?id=193879 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ New test results with FrameHosting nodes. >+ >+ * platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-expected.txt: >+ * platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-gain-scrolling-ancestor-expected.txt: >+ * platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-in-fixed-expected.txt: >+ * platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-lose-scrolling-ancestor-expected.txt: >+ * platform/ios-wk2/scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt: >+ * platform/ios-wk2/scrollingcoordinator/scrolling-tree/scrolling-tree-includes-frame-expected.txt: >+ * platform/ios-wk2/scrollingcoordinator/scrolling-tree/toggle-coordinated-frame-scrolling-expected.txt: >+ * scrollingcoordinator/scrolling-tree/coordinated-frame-expected.txt: >+ * scrollingcoordinator/scrolling-tree/coordinated-frame-gain-scrolling-ancestor-expected.txt: >+ * scrollingcoordinator/scrolling-tree/coordinated-frame-in-fixed-expected.txt: >+ * scrollingcoordinator/scrolling-tree/coordinated-frame-lose-scrolling-ancestor-expected.txt: >+ * scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt: >+ * scrollingcoordinator/scrolling-tree/scrolling-tree-includes-frame-expected.txt: >+ * scrollingcoordinator/scrolling-tree/toggle-coordinated-frame-scrolling-expected.txt: >+ > 2019-01-26 Devin Rousso <drousso@apple.com> > > Web Inspector: handle CSS Color 4 color syntaxes >diff --git a/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-expected.txt b/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-expected.txt >index 4cfaf4b66bc7d4bb43754d7188d0d04763c7b5e0..27ca443f3085870d17924c9b6ba272cb58fa4611 100644 >--- a/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-expected.txt >+++ b/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-expected.txt >@@ -13,51 +13,55 @@ > (max layout viewport origin (0,416)) > (behavior for fixed 0) > (children 1 >- (Frame scrolling node >- (scrollable area size 500 300) >- (contents size 500 420) >- (scrollable area parameters >- (horizontal scroll elasticity 1) >- (vertical scroll elasticity 1) >- (horizontal scrollbar mode 0) >- (vertical scrollbar mode 0)) >- (visual viewport enabled 1) >- (layout viewport at (0,0) size 500x300) >- (min layout viewport origin (0,0)) >- (max layout viewport origin (0,120)) >- (behavior for fixed 0) >- (children 2 >- (Overflow scrolling node >- (scrollable area size 400 300) >- (contents size 400 1760) >+ (Frame hosting node >+ (children 1 >+ (Frame scrolling node >+ (scrollable area size 500 300) >+ (contents size 500 420) > (scrollable area parameters > (horizontal scroll elasticity 1) > (vertical scroll elasticity 1) > (horizontal scrollbar mode 0) > (vertical scrollbar mode 0)) >- (children 1 >+ (visual viewport enabled 1) >+ (layout viewport at (0,0) size 500x300) >+ (min layout viewport origin (0,0)) >+ (max layout viewport origin (0,120)) >+ (behavior for fixed 0) >+ (children 2 >+ (Overflow scrolling node >+ (scrollable area size 400 300) >+ (contents size 400 1760) >+ (scrollable area parameters >+ (horizontal scroll elasticity 1) >+ (vertical scroll elasticity 1) >+ (horizontal scrollbar mode 0) >+ (vertical scrollbar mode 0)) >+ (children 1 >+ (Sticky node >+ (anchor edges: AnchorEdgeTop AnchorEdgeBottom) >+ (top offset 10.00) >+ (bottom offset 10.00) >+ (containing block rect at (2,2) size 400x1760) >+ (sticky box rect at (0,830) size 100x100) >+ (constraining rect at (0,0) size 400x300) >+ (sticky offset at last layout width=0 height=-640) >+ (layer position at last layout (0,190)) >+ ) >+ ) >+ ) > (Sticky node > (anchor edges: AnchorEdgeTop AnchorEdgeBottom) > (top offset 10.00) > (bottom offset 10.00) >- (containing block rect at (2,2) size 400x1760) >- (sticky box rect at (0,830) size 100x100) >- (constraining rect at (0,0) size 400x300) >- (sticky offset at last layout width=0 height=-640) >- (layer position at last layout (0,190)) >+ (containing block rect at (8,8) size 484x404) >+ (sticky box rect at (8,312) size 100x100) >+ (constraining rect at (0,0) size 500x300) >+ (sticky offset at last layout width=0 height=-122) >+ (layer position at last layout (8,190)) > ) > ) > ) >- (Sticky node >- (anchor edges: AnchorEdgeTop AnchorEdgeBottom) >- (top offset 10.00) >- (bottom offset 10.00) >- (containing block rect at (8,8) size 484x404) >- (sticky box rect at (8,312) size 100x100) >- (constraining rect at (0,0) size 500x300) >- (sticky offset at last layout width=0 height=-122) >- (layer position at last layout (8,190)) >- ) > ) > ) > ) >diff --git a/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-gain-scrolling-ancestor-expected.txt b/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-gain-scrolling-ancestor-expected.txt >index c90398275b414d3f886a2b2d1ede35015a891996..9af13737c4061f56649588d52b6822e85181b442 100644 >--- a/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-gain-scrolling-ancestor-expected.txt >+++ b/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-gain-scrolling-ancestor-expected.txt >@@ -18,51 +18,55 @@ > (viewport rect at last layout at (0,0) size 800x600) > (layer position at last layout (8,10)) > (children 1 >- (Frame scrolling node >- (scrollable area size 500 300) >- (contents size 500 420) >- (scrollable area parameters >- (horizontal scroll elasticity 1) >- (vertical scroll elasticity 1) >- (horizontal scrollbar mode 1) >- (vertical scrollbar mode 1)) >- (visual viewport enabled 1) >- (layout viewport at (0,0) size 500x300) >- (min layout viewport origin (0,0)) >- (max layout viewport origin (0,120)) >- (behavior for fixed 0) >- (children 2 >- (Overflow scrolling node >- (scrollable area size 400 300) >- (contents size 400 1760) >+ (Frame hosting node >+ (children 1 >+ (Frame scrolling node >+ (scrollable area size 500 300) >+ (contents size 500 420) > (scrollable area parameters > (horizontal scroll elasticity 1) > (vertical scroll elasticity 1) >- (horizontal scrollbar mode 0) >- (vertical scrollbar mode 0)) >- (children 1 >+ (horizontal scrollbar mode 1) >+ (vertical scrollbar mode 1)) >+ (visual viewport enabled 1) >+ (layout viewport at (0,0) size 500x300) >+ (min layout viewport origin (0,0)) >+ (max layout viewport origin (0,120)) >+ (behavior for fixed 0) >+ (children 2 >+ (Overflow scrolling node >+ (scrollable area size 400 300) >+ (contents size 400 1760) >+ (scrollable area parameters >+ (horizontal scroll elasticity 1) >+ (vertical scroll elasticity 1) >+ (horizontal scrollbar mode 0) >+ (vertical scrollbar mode 0)) >+ (children 1 >+ (Sticky node >+ (anchor edges: AnchorEdgeTop AnchorEdgeBottom) >+ (top offset 10.00) >+ (bottom offset 10.00) >+ (containing block rect at (2,2) size 400x1760) >+ (sticky box rect at (0,830) size 100x100) >+ (constraining rect at (0,0) size 400x300) >+ (sticky offset at last layout width=0 height=-640) >+ (layer position at last layout (0,190)) >+ ) >+ ) >+ ) > (Sticky node > (anchor edges: AnchorEdgeTop AnchorEdgeBottom) > (top offset 10.00) > (bottom offset 10.00) >- (containing block rect at (2,2) size 400x1760) >- (sticky box rect at (0,830) size 100x100) >- (constraining rect at (0,0) size 400x300) >- (sticky offset at last layout width=0 height=-640) >- (layer position at last layout (0,190)) >+ (containing block rect at (8,8) size 484x404) >+ (sticky box rect at (8,312) size 100x100) >+ (constraining rect at (0,0) size 500x300) >+ (sticky offset at last layout width=0 height=-122) >+ (layer position at last layout (8,190)) > ) > ) > ) >- (Sticky node >- (anchor edges: AnchorEdgeTop AnchorEdgeBottom) >- (top offset 10.00) >- (bottom offset 10.00) >- (containing block rect at (8,8) size 484x404) >- (sticky box rect at (8,312) size 100x100) >- (constraining rect at (0,0) size 500x300) >- (sticky offset at last layout width=0 height=-122) >- (layer position at last layout (8,190)) >- ) > ) > ) > ) >diff --git a/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-in-fixed-expected.txt b/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-in-fixed-expected.txt >index cca344843769b92ec67a4b2105c440e8d9395b86..28fc30e6f6f78a501f4b2e098b8a86445bca0bc9 100644 >--- a/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-in-fixed-expected.txt >+++ b/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-in-fixed-expected.txt >@@ -18,51 +18,55 @@ > (viewport rect at last layout at (0,0) size 800x600) > (layer position at last layout (8,0)) > (children 1 >- (Frame scrolling node >- (scrollable area size 500 300) >- (contents size 500 420) >- (scrollable area parameters >- (horizontal scroll elasticity 1) >- (vertical scroll elasticity 1) >- (horizontal scrollbar mode 0) >- (vertical scrollbar mode 0)) >- (visual viewport enabled 1) >- (layout viewport at (0,0) size 500x300) >- (min layout viewport origin (0,0)) >- (max layout viewport origin (0,120)) >- (behavior for fixed 0) >- (children 2 >- (Overflow scrolling node >- (scrollable area size 400 300) >- (contents size 400 1760) >+ (Frame hosting node >+ (children 1 >+ (Frame scrolling node >+ (scrollable area size 500 300) >+ (contents size 500 420) > (scrollable area parameters > (horizontal scroll elasticity 1) > (vertical scroll elasticity 1) > (horizontal scrollbar mode 0) > (vertical scrollbar mode 0)) >- (children 1 >+ (visual viewport enabled 1) >+ (layout viewport at (0,0) size 500x300) >+ (min layout viewport origin (0,0)) >+ (max layout viewport origin (0,120)) >+ (behavior for fixed 0) >+ (children 2 >+ (Overflow scrolling node >+ (scrollable area size 400 300) >+ (contents size 400 1760) >+ (scrollable area parameters >+ (horizontal scroll elasticity 1) >+ (vertical scroll elasticity 1) >+ (horizontal scrollbar mode 0) >+ (vertical scrollbar mode 0)) >+ (children 1 >+ (Sticky node >+ (anchor edges: AnchorEdgeTop AnchorEdgeBottom) >+ (top offset 10.00) >+ (bottom offset 10.00) >+ (containing block rect at (2,2) size 400x1760) >+ (sticky box rect at (0,830) size 100x100) >+ (constraining rect at (0,0) size 400x300) >+ (sticky offset at last layout width=0 height=-640) >+ (layer position at last layout (0,190)) >+ ) >+ ) >+ ) > (Sticky node > (anchor edges: AnchorEdgeTop AnchorEdgeBottom) > (top offset 10.00) > (bottom offset 10.00) >- (containing block rect at (2,2) size 400x1760) >- (sticky box rect at (0,830) size 100x100) >- (constraining rect at (0,0) size 400x300) >- (sticky offset at last layout width=0 height=-640) >- (layer position at last layout (0,190)) >+ (containing block rect at (8,8) size 484x404) >+ (sticky box rect at (8,312) size 100x100) >+ (constraining rect at (0,0) size 500x300) >+ (sticky offset at last layout width=0 height=-122) >+ (layer position at last layout (8,190)) > ) > ) > ) >- (Sticky node >- (anchor edges: AnchorEdgeTop AnchorEdgeBottom) >- (top offset 10.00) >- (bottom offset 10.00) >- (containing block rect at (8,8) size 484x404) >- (sticky box rect at (8,312) size 100x100) >- (constraining rect at (0,0) size 500x300) >- (sticky offset at last layout width=0 height=-122) >- (layer position at last layout (8,190)) >- ) > ) > ) > ) >diff --git a/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-lose-scrolling-ancestor-expected.txt b/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-lose-scrolling-ancestor-expected.txt >index ff36fdeafccbdac0d22a817133b487e78a8430ee..aa54c26880f1aa03a22932b822533ff704883aed 100644 >--- a/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-lose-scrolling-ancestor-expected.txt >+++ b/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-lose-scrolling-ancestor-expected.txt >@@ -13,51 +13,55 @@ > (max layout viewport origin (0,416)) > (behavior for fixed 0) > (children 1 >- (Frame scrolling node >- (scrollable area size 500 300) >- (contents size 500 420) >- (scrollable area parameters >- (horizontal scroll elasticity 1) >- (vertical scroll elasticity 1) >- (horizontal scrollbar mode 1) >- (vertical scrollbar mode 1)) >- (visual viewport enabled 1) >- (layout viewport at (0,0) size 500x300) >- (min layout viewport origin (0,0)) >- (max layout viewport origin (0,120)) >- (behavior for fixed 0) >- (children 2 >- (Overflow scrolling node >- (scrollable area size 400 300) >- (contents size 400 1760) >+ (Frame hosting node >+ (children 1 >+ (Frame scrolling node >+ (scrollable area size 500 300) >+ (contents size 500 420) > (scrollable area parameters > (horizontal scroll elasticity 1) > (vertical scroll elasticity 1) >- (horizontal scrollbar mode 0) >- (vertical scrollbar mode 0)) >- (children 1 >+ (horizontal scrollbar mode 1) >+ (vertical scrollbar mode 1)) >+ (visual viewport enabled 1) >+ (layout viewport at (0,0) size 500x300) >+ (min layout viewport origin (0,0)) >+ (max layout viewport origin (0,120)) >+ (behavior for fixed 0) >+ (children 2 >+ (Overflow scrolling node >+ (scrollable area size 400 300) >+ (contents size 400 1760) >+ (scrollable area parameters >+ (horizontal scroll elasticity 1) >+ (vertical scroll elasticity 1) >+ (horizontal scrollbar mode 0) >+ (vertical scrollbar mode 0)) >+ (children 1 >+ (Sticky node >+ (anchor edges: AnchorEdgeTop AnchorEdgeBottom) >+ (top offset 10.00) >+ (bottom offset 10.00) >+ (containing block rect at (2,2) size 400x1760) >+ (sticky box rect at (0,830) size 100x100) >+ (constraining rect at (0,0) size 400x300) >+ (sticky offset at last layout width=0 height=-640) >+ (layer position at last layout (0,190)) >+ ) >+ ) >+ ) > (Sticky node > (anchor edges: AnchorEdgeTop AnchorEdgeBottom) > (top offset 10.00) > (bottom offset 10.00) >- (containing block rect at (2,2) size 400x1760) >- (sticky box rect at (0,830) size 100x100) >- (constraining rect at (0,0) size 400x300) >- (sticky offset at last layout width=0 height=-640) >- (layer position at last layout (0,190)) >+ (containing block rect at (8,8) size 484x404) >+ (sticky box rect at (8,312) size 100x100) >+ (constraining rect at (0,0) size 500x300) >+ (sticky offset at last layout width=0 height=-122) >+ (layer position at last layout (8,190)) > ) > ) > ) >- (Sticky node >- (anchor edges: AnchorEdgeTop AnchorEdgeBottom) >- (top offset 10.00) >- (bottom offset 10.00) >- (containing block rect at (8,8) size 484x404) >- (sticky box rect at (8,312) size 100x100) >- (constraining rect at (0,0) size 500x300) >- (sticky offset at last layout width=0 height=-122) >- (layer position at last layout (8,190)) >- ) > ) > ) > ) >diff --git a/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt b/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt >index bd1e25080e1060b8663aeba19123e32240d1b127..df5af7a160cb64747ba1d17182610e31fd837f59 100644 >--- a/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt >+++ b/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt >@@ -14,26 +14,30 @@ > (max layout viewport origin (0,57)) > (behavior for fixed 0) > (children 1 >- (Frame scrolling node >- (scrollable area size 480 400) >- (contents size 480 1016) >- (requested scroll position 0 120) >- (requested scroll position represents programmatic scroll 1) >- (scrollable area parameters >- (horizontal scroll elasticity 1) >- (vertical scroll elasticity 1) >- (horizontal scrollbar mode 0) >- (vertical scrollbar mode 0)) >- (visual viewport enabled 1) >- (layout viewport at (0,120) size 480x400) >- (min layout viewport origin (0,0)) >- (max layout viewport origin (0,616)) >- (behavior for fixed 0) >+ (Frame hosting node > (children 1 >- (Fixed node >- (anchor edges: AnchorEdgeLeft AnchorEdgeTop) >- (viewport rect at last layout at (0,120) size 480x400) >- (layer position at last layout (10,130)) >+ (Frame scrolling node >+ (scrollable area size 480 400) >+ (contents size 480 1016) >+ (requested scroll position 0 120) >+ (requested scroll position represents programmatic scroll 1) >+ (scrollable area parameters >+ (horizontal scroll elasticity 1) >+ (vertical scroll elasticity 1) >+ (horizontal scrollbar mode 0) >+ (vertical scrollbar mode 0)) >+ (visual viewport enabled 1) >+ (layout viewport at (0,120) size 480x400) >+ (min layout viewport origin (0,0)) >+ (max layout viewport origin (0,616)) >+ (behavior for fixed 0) >+ (children 1 >+ (Fixed node >+ (anchor edges: AnchorEdgeLeft AnchorEdgeTop) >+ (viewport rect at last layout at (0,120) size 480x400) >+ (layer position at last layout (10,130)) >+ ) >+ ) > ) > ) > ) >diff --git a/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/scrolling-tree-includes-frame-expected.txt b/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/scrolling-tree-includes-frame-expected.txt >index 4b34bf64bfc00b3034e664f899880ed18f3e9fb3..deb8cdd941a4ebbf0ba554354de683b5b5c2cc64 100644 >--- a/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/scrolling-tree-includes-frame-expected.txt >+++ b/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/scrolling-tree-includes-frame-expected.txt >@@ -14,19 +14,23 @@ > (max layout viewport origin (0,0)) > (behavior for fixed 0) > (children 1 >- (Frame scrolling node >- (scrollable area size 100 200) >- (contents size 308 416) >- (scrollable area parameters >- (horizontal scroll elasticity 1) >- (vertical scroll elasticity 1) >- (horizontal scrollbar mode 0) >- (vertical scrollbar mode 0)) >- (visual viewport enabled 1) >- (layout viewport at (0,0) size 100x200) >- (min layout viewport origin (0,0)) >- (max layout viewport origin (208,216)) >- (behavior for fixed 0) >+ (Frame hosting node >+ (children 1 >+ (Frame scrolling node >+ (scrollable area size 100 200) >+ (contents size 308 416) >+ (scrollable area parameters >+ (horizontal scroll elasticity 1) >+ (vertical scroll elasticity 1) >+ (horizontal scrollbar mode 0) >+ (vertical scrollbar mode 0)) >+ (visual viewport enabled 1) >+ (layout viewport at (0,0) size 100x200) >+ (min layout viewport origin (0,0)) >+ (max layout viewport origin (208,216)) >+ (behavior for fixed 0) >+ ) >+ ) > ) > ) > ) >diff --git a/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/toggle-coordinated-frame-scrolling-expected.txt b/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/toggle-coordinated-frame-scrolling-expected.txt >index 69475242e43eae0b23338af07462676ef5699f39..c4516290f547568e7881177e9dbfae39dfcff8f2 100644 >--- a/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/toggle-coordinated-frame-scrolling-expected.txt >+++ b/LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/toggle-coordinated-frame-scrolling-expected.txt >@@ -16,33 +16,41 @@ Scrolling tree on non-scrollable > (max layout viewport origin (0,45)) > (behavior for fixed 0) > (children 1 >- (Frame scrolling node >- (scrollable area size 600 500) >- (contents size 600 1024) >- (scrollable area parameters >- (horizontal scroll elasticity 1) >- (vertical scroll elasticity 1) >- (horizontal scrollbar mode 0) >- (vertical scrollbar mode 0)) >- (visual viewport enabled 1) >- (layout viewport at (0,0) size 600x500) >- (min layout viewport origin (0,0)) >- (max layout viewport origin (0,524)) >- (behavior for fixed 0) >+ (Frame hosting node > (children 1 > (Frame scrolling node >- (scrollable area size 500 400) >- (contents size 500 1024) >+ (scrollable area size 600 500) >+ (contents size 600 1024) > (scrollable area parameters > (horizontal scroll elasticity 1) > (vertical scroll elasticity 1) > (horizontal scrollbar mode 0) > (vertical scrollbar mode 0)) > (visual viewport enabled 1) >- (layout viewport at (0,0) size 500x400) >+ (layout viewport at (0,0) size 600x500) > (min layout viewport origin (0,0)) >- (max layout viewport origin (0,624)) >+ (max layout viewport origin (0,524)) > (behavior for fixed 0) >+ (children 1 >+ (Frame hosting node >+ (children 1 >+ (Frame scrolling node >+ (scrollable area size 500 400) >+ (contents size 500 1024) >+ (scrollable area parameters >+ (horizontal scroll elasticity 1) >+ (vertical scroll elasticity 1) >+ (horizontal scrollbar mode 0) >+ (vertical scrollbar mode 0)) >+ (visual viewport enabled 1) >+ (layout viewport at (0,0) size 500x400) >+ (min layout viewport origin (0,0)) >+ (max layout viewport origin (0,624)) >+ (behavior for fixed 0) >+ ) >+ ) >+ ) >+ ) > ) > ) > ) >@@ -54,7 +62,7 @@ Scrolling tree on scrollable > > (Frame scrolling node > (scrollable area size 800 600) >- (contents size 800 1333) >+ (contents size 800 1445) > (scrollable area parameters > (horizontal scroll elasticity 1) > (vertical scroll elasticity 1) >@@ -63,36 +71,44 @@ Scrolling tree on scrollable > (visual viewport enabled 1) > (layout viewport at (0,0) size 800x600) > (min layout viewport origin (0,0)) >- (max layout viewport origin (0,733)) >+ (max layout viewport origin (0,845)) > (behavior for fixed 0) > (children 1 >- (Frame scrolling node >- (scrollable area size 600 500) >- (contents size 600 500) >- (scrollable area parameters >- (horizontal scroll elasticity 1) >- (vertical scroll elasticity 1) >- (horizontal scrollbar mode 0) >- (vertical scrollbar mode 0)) >- (visual viewport enabled 1) >- (layout viewport at (0,0) size 600x500) >- (min layout viewport origin (0,0)) >- (max layout viewport origin (0,0)) >- (behavior for fixed 0) >+ (Frame hosting node > (children 1 > (Frame scrolling node >- (scrollable area size 500 400) >- (contents size 500 1024) >+ (scrollable area size 600 500) >+ (contents size 600 500) > (scrollable area parameters > (horizontal scroll elasticity 1) > (vertical scroll elasticity 1) > (horizontal scrollbar mode 0) > (vertical scrollbar mode 0)) > (visual viewport enabled 1) >- (layout viewport at (0,0) size 500x400) >+ (layout viewport at (0,0) size 600x500) > (min layout viewport origin (0,0)) >- (max layout viewport origin (0,624)) >+ (max layout viewport origin (0,0)) > (behavior for fixed 0) >+ (children 1 >+ (Frame hosting node >+ (children 1 >+ (Frame scrolling node >+ (scrollable area size 500 400) >+ (contents size 500 1024) >+ (scrollable area parameters >+ (horizontal scroll elasticity 1) >+ (vertical scroll elasticity 1) >+ (horizontal scrollbar mode 0) >+ (vertical scrollbar mode 0)) >+ (visual viewport enabled 1) >+ (layout viewport at (0,0) size 500x400) >+ (min layout viewport origin (0,0)) >+ (max layout viewport origin (0,624)) >+ (behavior for fixed 0) >+ ) >+ ) >+ ) >+ ) > ) > ) > ) >diff --git a/LayoutTests/scrollingcoordinator/scrolling-tree/coordinated-frame-expected.txt b/LayoutTests/scrollingcoordinator/scrolling-tree/coordinated-frame-expected.txt >index 51c67f6ce67b8ff8b919d6487c662babf2b95363..35ba543692421457933d693581d42102b79999f5 100644 >--- a/LayoutTests/scrollingcoordinator/scrolling-tree/coordinated-frame-expected.txt >+++ b/LayoutTests/scrollingcoordinator/scrolling-tree/coordinated-frame-expected.txt >@@ -16,30 +16,34 @@ > at (45,47) size 404x304) > (behavior for fixed 0) > (children 1 >- (Frame scrolling node >- (scrollable area size 485 300) >- (contents size 485 420) >- (scrollable area parameters >- (horizontal scroll elasticity 0) >- (vertical scroll elasticity 0) >- (horizontal scrollbar mode 0) >- (vertical scrollbar mode 0) >- (has enabled vertical scrollbar 1)) >- (visual viewport enabled 1) >- (layout viewport at (0,0) size 485x300) >- (min layout viewport origin (0,0)) >- (max layout viewport origin (0,120)) >- (behavior for fixed 0) >+ (Frame hosting node > (children 1 >- (Sticky node >- (anchor edges: AnchorEdgeTop AnchorEdgeBottom) >- (top offset 10.00) >- (bottom offset 10.00) >- (containing block rect at (8,8) size 469x404) >- (sticky box rect at (8,312) size 100x100) >- (constraining rect at (0,0) size 485x300) >- (sticky offset at last layout width=0 height=-122) >- (layer position at last layout (8,190)) >+ (Frame scrolling node >+ (scrollable area size 485 300) >+ (contents size 485 420) >+ (scrollable area parameters >+ (horizontal scroll elasticity 0) >+ (vertical scroll elasticity 0) >+ (horizontal scrollbar mode 0) >+ (vertical scrollbar mode 0) >+ (has enabled vertical scrollbar 1)) >+ (visual viewport enabled 1) >+ (layout viewport at (0,0) size 485x300) >+ (min layout viewport origin (0,0)) >+ (max layout viewport origin (0,120)) >+ (behavior for fixed 0) >+ (children 1 >+ (Sticky node >+ (anchor edges: AnchorEdgeTop AnchorEdgeBottom) >+ (top offset 10.00) >+ (bottom offset 10.00) >+ (containing block rect at (8,8) size 469x404) >+ (sticky box rect at (8,312) size 100x100) >+ (constraining rect at (0,0) size 485x300) >+ (sticky offset at last layout width=0 height=-122) >+ (layer position at last layout (8,190)) >+ ) >+ ) > ) > ) > ) >diff --git a/LayoutTests/scrollingcoordinator/scrolling-tree/coordinated-frame-gain-scrolling-ancestor-expected.txt b/LayoutTests/scrollingcoordinator/scrolling-tree/coordinated-frame-gain-scrolling-ancestor-expected.txt >index 2f4a32a0dbe0e62f8b435fa91b7d01c127d149b4..ef8d8343298dc6821d944ff0d81f854103a7912e 100644 >--- a/LayoutTests/scrollingcoordinator/scrolling-tree/coordinated-frame-gain-scrolling-ancestor-expected.txt >+++ b/LayoutTests/scrollingcoordinator/scrolling-tree/coordinated-frame-gain-scrolling-ancestor-expected.txt >@@ -21,29 +21,33 @@ > (viewport rect at last layout at (0,0) size 785x600) > (layer position at last layout (8,10)) > (children 1 >- (Frame scrolling node >- (scrollable area size 500 300) >- (contents size 500 420) >- (scrollable area parameters >- (horizontal scroll elasticity 0) >- (vertical scroll elasticity 0) >- (horizontal scrollbar mode 1) >- (vertical scrollbar mode 1)) >- (visual viewport enabled 1) >- (layout viewport at (0,0) size 500x300) >- (min layout viewport origin (0,0)) >- (max layout viewport origin (0,120)) >- (behavior for fixed 0) >+ (Frame hosting node > (children 1 >- (Sticky node >- (anchor edges: AnchorEdgeTop AnchorEdgeBottom) >- (top offset 10.00) >- (bottom offset 10.00) >- (containing block rect at (8,8) size 484x404) >- (sticky box rect at (8,312) size 100x100) >- (constraining rect at (0,0) size 500x300) >- (sticky offset at last layout width=0 height=-122) >- (layer position at last layout (8,190)) >+ (Frame scrolling node >+ (scrollable area size 500 300) >+ (contents size 500 420) >+ (scrollable area parameters >+ (horizontal scroll elasticity 0) >+ (vertical scroll elasticity 0) >+ (horizontal scrollbar mode 1) >+ (vertical scrollbar mode 1)) >+ (visual viewport enabled 1) >+ (layout viewport at (0,0) size 500x300) >+ (min layout viewport origin (0,0)) >+ (max layout viewport origin (0,120)) >+ (behavior for fixed 0) >+ (children 1 >+ (Sticky node >+ (anchor edges: AnchorEdgeTop AnchorEdgeBottom) >+ (top offset 10.00) >+ (bottom offset 10.00) >+ (containing block rect at (8,8) size 484x404) >+ (sticky box rect at (8,312) size 100x100) >+ (constraining rect at (0,0) size 500x300) >+ (sticky offset at last layout width=0 height=-122) >+ (layer position at last layout (8,190)) >+ ) >+ ) > ) > ) > ) >diff --git a/LayoutTests/scrollingcoordinator/scrolling-tree/coordinated-frame-in-fixed-expected.txt b/LayoutTests/scrollingcoordinator/scrolling-tree/coordinated-frame-in-fixed-expected.txt >index b67332d9fca632dd86c832b5553a55afd1b793a4..e0e494ef5bc96be4dfaef930c4c5fde3232317b0 100644 >--- a/LayoutTests/scrollingcoordinator/scrolling-tree/coordinated-frame-in-fixed-expected.txt >+++ b/LayoutTests/scrollingcoordinator/scrolling-tree/coordinated-frame-in-fixed-expected.txt >@@ -21,30 +21,34 @@ > (viewport rect at last layout at (0,0) size 785x600) > (layer position at last layout (8,0)) > (children 1 >- (Frame scrolling node >- (scrollable area size 485 300) >- (contents size 485 420) >- (scrollable area parameters >- (horizontal scroll elasticity 0) >- (vertical scroll elasticity 0) >- (horizontal scrollbar mode 0) >- (vertical scrollbar mode 0) >- (has enabled vertical scrollbar 1)) >- (visual viewport enabled 1) >- (layout viewport at (0,0) size 485x300) >- (min layout viewport origin (0,0)) >- (max layout viewport origin (0,120)) >- (behavior for fixed 0) >+ (Frame hosting node > (children 1 >- (Sticky node >- (anchor edges: AnchorEdgeTop AnchorEdgeBottom) >- (top offset 10.00) >- (bottom offset 10.00) >- (containing block rect at (8,8) size 469x404) >- (sticky box rect at (8,312) size 100x100) >- (constraining rect at (0,0) size 485x300) >- (sticky offset at last layout width=0 height=-122) >- (layer position at last layout (8,190)) >+ (Frame scrolling node >+ (scrollable area size 485 300) >+ (contents size 485 420) >+ (scrollable area parameters >+ (horizontal scroll elasticity 0) >+ (vertical scroll elasticity 0) >+ (horizontal scrollbar mode 0) >+ (vertical scrollbar mode 0) >+ (has enabled vertical scrollbar 1)) >+ (visual viewport enabled 1) >+ (layout viewport at (0,0) size 485x300) >+ (min layout viewport origin (0,0)) >+ (max layout viewport origin (0,120)) >+ (behavior for fixed 0) >+ (children 1 >+ (Sticky node >+ (anchor edges: AnchorEdgeTop AnchorEdgeBottom) >+ (top offset 10.00) >+ (bottom offset 10.00) >+ (containing block rect at (8,8) size 469x404) >+ (sticky box rect at (8,312) size 100x100) >+ (constraining rect at (0,0) size 485x300) >+ (sticky offset at last layout width=0 height=-122) >+ (layer position at last layout (8,190)) >+ ) >+ ) > ) > ) > ) >diff --git a/LayoutTests/scrollingcoordinator/scrolling-tree/coordinated-frame-lose-scrolling-ancestor-expected.txt b/LayoutTests/scrollingcoordinator/scrolling-tree/coordinated-frame-lose-scrolling-ancestor-expected.txt >index 9a9f562b360aec5e25df70aaa37fe54dd17acefd..0d27984f8a6a44121cb383e33324b31cadb0e43c 100644 >--- a/LayoutTests/scrollingcoordinator/scrolling-tree/coordinated-frame-lose-scrolling-ancestor-expected.txt >+++ b/LayoutTests/scrollingcoordinator/scrolling-tree/coordinated-frame-lose-scrolling-ancestor-expected.txt >@@ -16,29 +16,33 @@ > at (45,47) size 404x304) > (behavior for fixed 0) > (children 1 >- (Frame scrolling node >- (scrollable area size 500 300) >- (contents size 500 420) >- (scrollable area parameters >- (horizontal scroll elasticity 0) >- (vertical scroll elasticity 0) >- (horizontal scrollbar mode 1) >- (vertical scrollbar mode 1)) >- (visual viewport enabled 1) >- (layout viewport at (0,0) size 500x300) >- (min layout viewport origin (0,0)) >- (max layout viewport origin (0,120)) >- (behavior for fixed 0) >+ (Frame hosting node > (children 1 >- (Sticky node >- (anchor edges: AnchorEdgeTop AnchorEdgeBottom) >- (top offset 10.00) >- (bottom offset 10.00) >- (containing block rect at (8,8) size 484x404) >- (sticky box rect at (8,312) size 100x100) >- (constraining rect at (0,0) size 500x300) >- (sticky offset at last layout width=0 height=-122) >- (layer position at last layout (8,190)) >+ (Frame scrolling node >+ (scrollable area size 500 300) >+ (contents size 500 420) >+ (scrollable area parameters >+ (horizontal scroll elasticity 0) >+ (vertical scroll elasticity 0) >+ (horizontal scrollbar mode 1) >+ (vertical scrollbar mode 1)) >+ (visual viewport enabled 1) >+ (layout viewport at (0,0) size 500x300) >+ (min layout viewport origin (0,0)) >+ (max layout viewport origin (0,120)) >+ (behavior for fixed 0) >+ (children 1 >+ (Sticky node >+ (anchor edges: AnchorEdgeTop AnchorEdgeBottom) >+ (top offset 10.00) >+ (bottom offset 10.00) >+ (containing block rect at (8,8) size 484x404) >+ (sticky box rect at (8,312) size 100x100) >+ (constraining rect at (0,0) size 500x300) >+ (sticky offset at last layout width=0 height=-122) >+ (layer position at last layout (8,190)) >+ ) >+ ) > ) > ) > ) >diff --git a/LayoutTests/scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt b/LayoutTests/scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt >index 74da075953c82f3fefa47d71fabd592eb072adf3..312272dbfdea90a25c9544e80aca09d0ffb08451 100644 >--- a/LayoutTests/scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt >+++ b/LayoutTests/scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt >@@ -15,27 +15,31 @@ > (max layout viewport origin (0,57)) > (behavior for fixed 0) > (children 1 >- (Frame scrolling node >- (scrollable area size 465 400) >- (contents size 465 1016) >- (requested scroll position 0 120) >- (requested scroll position represents programmatic scroll 1) >- (scrollable area parameters >- (horizontal scroll elasticity 0) >- (vertical scroll elasticity 0) >- (horizontal scrollbar mode 0) >- (vertical scrollbar mode 0) >- (has enabled vertical scrollbar 1)) >- (visual viewport enabled 1) >- (layout viewport at (0,120) size 465x400) >- (min layout viewport origin (0,0)) >- (max layout viewport origin (0,616)) >- (behavior for fixed 0) >+ (Frame hosting node > (children 1 >- (Fixed node >- (anchor edges: AnchorEdgeLeft AnchorEdgeTop) >- (viewport rect at last layout at (0,120) size 465x400) >- (layer position at last layout (10,130)) >+ (Frame scrolling node >+ (scrollable area size 465 400) >+ (contents size 465 1016) >+ (requested scroll position 0 120) >+ (requested scroll position represents programmatic scroll 1) >+ (scrollable area parameters >+ (horizontal scroll elasticity 0) >+ (vertical scroll elasticity 0) >+ (horizontal scrollbar mode 0) >+ (vertical scrollbar mode 0) >+ (has enabled vertical scrollbar 1)) >+ (visual viewport enabled 1) >+ (layout viewport at (0,120) size 465x400) >+ (min layout viewport origin (0,0)) >+ (max layout viewport origin (0,616)) >+ (behavior for fixed 0) >+ (children 1 >+ (Fixed node >+ (anchor edges: AnchorEdgeLeft AnchorEdgeTop) >+ (viewport rect at last layout at (0,120) size 465x400) >+ (layer position at last layout (10,130)) >+ ) >+ ) > ) > ) > ) >diff --git a/LayoutTests/scrollingcoordinator/scrolling-tree/scrolling-tree-includes-frame-expected.txt b/LayoutTests/scrollingcoordinator/scrolling-tree/scrolling-tree-includes-frame-expected.txt >index 99fdd043a9722ae11ef9e381d07006a2faed0c88..38d2f710be3e73bbd1c70384568718a17ec945b0 100644 >--- a/LayoutTests/scrollingcoordinator/scrolling-tree/scrolling-tree-includes-frame-expected.txt >+++ b/LayoutTests/scrollingcoordinator/scrolling-tree/scrolling-tree-includes-frame-expected.txt >@@ -14,21 +14,25 @@ > (max layout viewport origin (0,0)) > (behavior for fixed 0) > (children 1 >- (Frame scrolling node >- (scrollable area size 85 185) >- (contents size 308 416) >- (scrollable area parameters >- (horizontal scroll elasticity 0) >- (vertical scroll elasticity 0) >- (horizontal scrollbar mode 0) >- (vertical scrollbar mode 0) >- (has enabled horizontal scrollbar 1) >- (has enabled vertical scrollbar 1)) >- (visual viewport enabled 1) >- (layout viewport at (0,0) size 85x185) >- (min layout viewport origin (0,0)) >- (max layout viewport origin (223,231)) >- (behavior for fixed 0) >+ (Frame hosting node >+ (children 1 >+ (Frame scrolling node >+ (scrollable area size 85 185) >+ (contents size 308 416) >+ (scrollable area parameters >+ (horizontal scroll elasticity 0) >+ (vertical scroll elasticity 0) >+ (horizontal scrollbar mode 0) >+ (vertical scrollbar mode 0) >+ (has enabled horizontal scrollbar 1) >+ (has enabled vertical scrollbar 1)) >+ (visual viewport enabled 1) >+ (layout viewport at (0,0) size 85x185) >+ (min layout viewport origin (0,0)) >+ (max layout viewport origin (223,231)) >+ (behavior for fixed 0) >+ ) >+ ) > ) > ) > ) >diff --git a/LayoutTests/scrollingcoordinator/scrolling-tree/toggle-coordinated-frame-scrolling-expected.txt b/LayoutTests/scrollingcoordinator/scrolling-tree/toggle-coordinated-frame-scrolling-expected.txt >index cf7178d9ed1a65f92ce885e5380fbbadefe1d3c7..8323c1e0c1dbc314f1fd97dbcc9fcf3bcb5f0d6b 100644 >--- a/LayoutTests/scrollingcoordinator/scrolling-tree/toggle-coordinated-frame-scrolling-expected.txt >+++ b/LayoutTests/scrollingcoordinator/scrolling-tree/toggle-coordinated-frame-scrolling-expected.txt >@@ -17,24 +17,11 @@ Scrolling tree on non-scrollable > (max layout viewport origin (0,40)) > (behavior for fixed 0) > (children 1 >- (Frame scrolling node >- (scrollable area size 585 500) >- (contents size 585 1024) >- (scrollable area parameters >- (horizontal scroll elasticity 0) >- (vertical scroll elasticity 0) >- (horizontal scrollbar mode 0) >- (vertical scrollbar mode 0) >- (has enabled vertical scrollbar 1)) >- (visual viewport enabled 1) >- (layout viewport at (0,0) size 585x500) >- (min layout viewport origin (0,0)) >- (max layout viewport origin (0,524)) >- (behavior for fixed 0) >+ (Frame hosting node > (children 1 > (Frame scrolling node >- (scrollable area size 485 400) >- (contents size 485 1024) >+ (scrollable area size 585 500) >+ (contents size 585 1024) > (scrollable area parameters > (horizontal scroll elasticity 0) > (vertical scroll elasticity 0) >@@ -42,10 +29,31 @@ Scrolling tree on non-scrollable > (vertical scrollbar mode 0) > (has enabled vertical scrollbar 1)) > (visual viewport enabled 1) >- (layout viewport at (0,0) size 485x400) >+ (layout viewport at (0,0) size 585x500) > (min layout viewport origin (0,0)) >- (max layout viewport origin (0,624)) >+ (max layout viewport origin (0,524)) > (behavior for fixed 0) >+ (children 1 >+ (Frame hosting node >+ (children 1 >+ (Frame scrolling node >+ (scrollable area size 485 400) >+ (contents size 485 1024) >+ (scrollable area parameters >+ (horizontal scroll elasticity 0) >+ (vertical scroll elasticity 0) >+ (horizontal scrollbar mode 0) >+ (vertical scrollbar mode 0) >+ (has enabled vertical scrollbar 1)) >+ (visual viewport enabled 1) >+ (layout viewport at (0,0) size 485x400) >+ (min layout viewport origin (0,0)) >+ (max layout viewport origin (0,624)) >+ (behavior for fixed 0) >+ ) >+ ) >+ ) >+ ) > ) > ) > ) >@@ -57,7 +65,7 @@ Scrolling tree on scrollable > > (Frame scrolling node > (scrollable area size 785 600) >- (contents size 785 1421) >+ (contents size 785 1541) > (scrollable area parameters > (horizontal scroll elasticity 2) > (vertical scroll elasticity 2) >@@ -67,37 +75,45 @@ Scrolling tree on scrollable > (visual viewport enabled 1) > (layout viewport at (0,0) size 785x600) > (min layout viewport origin (0,0)) >- (max layout viewport origin (0,821)) >+ (max layout viewport origin (0,941)) > (behavior for fixed 0) > (children 1 >- (Frame scrolling node >- (scrollable area size 600 500) >- (contents size 600 500) >- (scrollable area parameters >- (horizontal scroll elasticity 0) >- (vertical scroll elasticity 0) >- (horizontal scrollbar mode 0) >- (vertical scrollbar mode 0)) >- (visual viewport enabled 1) >- (layout viewport at (0,0) size 600x500) >- (min layout viewport origin (0,0)) >- (max layout viewport origin (0,0)) >- (behavior for fixed 0) >+ (Frame hosting node > (children 1 > (Frame scrolling node >- (scrollable area size 485 400) >- (contents size 485 1024) >+ (scrollable area size 600 500) >+ (contents size 600 500) > (scrollable area parameters > (horizontal scroll elasticity 0) > (vertical scroll elasticity 0) > (horizontal scrollbar mode 0) >- (vertical scrollbar mode 0) >- (has enabled vertical scrollbar 1)) >+ (vertical scrollbar mode 0)) > (visual viewport enabled 1) >- (layout viewport at (0,0) size 485x400) >+ (layout viewport at (0,0) size 600x500) > (min layout viewport origin (0,0)) >- (max layout viewport origin (0,624)) >+ (max layout viewport origin (0,0)) > (behavior for fixed 0) >+ (children 1 >+ (Frame hosting node >+ (children 1 >+ (Frame scrolling node >+ (scrollable area size 485 400) >+ (contents size 485 1024) >+ (scrollable area parameters >+ (horizontal scroll elasticity 0) >+ (vertical scroll elasticity 0) >+ (horizontal scrollbar mode 0) >+ (vertical scrollbar mode 0) >+ (has enabled vertical scrollbar 1)) >+ (visual viewport enabled 1) >+ (layout viewport at (0,0) size 485x400) >+ (min layout viewport origin (0,0)) >+ (max layout viewport origin (0,624)) >+ (behavior for fixed 0) >+ ) >+ ) >+ ) >+ ) > ) > ) > )
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
koivisto
:
review+
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 193879
: 360265