WebKit Bugzilla
Attachment 356581 Details for
Bug 192395
: Allow control over child order when adding nodes to the scrolling tree
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-192395-20181204215953.patch (text/plain), 22.33 KB, created by
Simon Fraser (smfr)
on 2018-12-04 21:59:54 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Simon Fraser (smfr)
Created:
2018-12-04 21:59:54 PST
Size:
22.33 KB
patch
obsolete
>Subversion Revision: 238885 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 438c7e7e06789118ef7008682a335d6babbe9821..2a28321b527da658f1e2b33f1e953e6b66cd964f 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,44 @@ >+2018-12-04 Simon Fraser <simon.fraser@apple.com> >+ >+ Allow control over child order when adding nodes to the scrolling tree >+ https://bugs.webkit.org/show_bug.cgi?id=192395 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Previously ScrollingCoordinator just allowed nodes to be "attached" with a given parent, >+ but with no control over sibling order. To allow for correct hit-testing overflow and >+ frame scrolling nodes, we have to build the scrolling tree in z-order. >+ >+ This patch adds a 'childIndex' parameter to attachNode() which gives control over >+ sibling order, but doesn't use it yet. >+ >+ * page/scrolling/AsyncScrollingCoordinator.cpp: >+ (WebCore::AsyncScrollingCoordinator::attachToStateTree): >+ (WebCore::AsyncScrollingCoordinator::ensureRootStateNodeForFrameView): >+ * page/scrolling/AsyncScrollingCoordinator.h: >+ * page/scrolling/ScrollingCoordinator.cpp: >+ (WebCore::ScrollingCoordinator::uniqueScrollingNodeID): >+ (WebCore::ScrollingCoordinator::uniqueScrollLayerID): Deleted. >+ * page/scrolling/ScrollingCoordinator.h: >+ (WebCore::ScrollingCoordinator::attachToStateTree): >+ * page/scrolling/ScrollingStateNode.cpp: >+ (WebCore::ScrollingStateNode::ScrollingStateNode): >+ (WebCore::ScrollingStateNode::insertChild): >+ (WebCore::ScrollingStateNode::indexOfChild const): >+ * page/scrolling/ScrollingStateNode.h: >+ (WebCore::ScrollingStateNode::scrollingNodeID const): >+ * page/scrolling/ScrollingStateTree.cpp: >+ (WebCore::ScrollingStateTree::nodeTypeAndParentMatch const): >+ (WebCore::ScrollingStateTree::attachNode): >+ (WebCore::ScrollingStateTree::setRootStateNode): >+ (WebCore::ScrollingStateTree::addNode): >+ * page/scrolling/ScrollingStateTree.h: >+ (WebCore::ScrollingStateTree::setRootStateNode): Deleted. >+ * page/scrolling/ScrollingTree.cpp: >+ * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h: >+ * rendering/RenderLayerCompositor.cpp: >+ (WebCore::RenderLayerCompositor::attachScrollingNode): >+ > 2018-12-04 Frederic Wang <fwang@igalia.com> > > Always pass scrollingGeometry to update*ScrollingNode functions >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index 3a305c838663319f167f0a0e9cb532f4d6e1c37e..e7299c55a49be06d92843e753a7990dbbb256f65 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,13 @@ >+2018-12-04 Simon Fraser <simon.fraser@apple.com> >+ >+ Allow control over child order when adding nodes to the scrolling tree >+ https://bugs.webkit.org/show_bug.cgi?id=192395 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp: >+ (WebKit::RemoteScrollingCoordinatorTransaction::decode): >+ > 2018-12-04 Youenn Fablet <youenn@apple.com> > > Calling getUserMedia in a link that was opened with target="_blank" does not work the second time >diff --git a/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp b/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp >index 2638826b5076a1d0f1589733cfd983eeab9d9bbc..25513f2a74d61df6f260ef33550fdf5882992281 100644 >--- a/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp >+++ b/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp >@@ -474,9 +474,9 @@ void AsyncScrollingCoordinator::scrollableAreaScrollbarLayerDidChange(Scrollable > scrollableArea.horizontalScrollbarLayerDidChange(); > } > >-ScrollingNodeID AsyncScrollingCoordinator::attachToStateTree(ScrollingNodeType nodeType, ScrollingNodeID newNodeID, ScrollingNodeID parentID) >+ScrollingNodeID AsyncScrollingCoordinator::attachToStateTree(ScrollingNodeType nodeType, ScrollingNodeID newNodeID, ScrollingNodeID parentID, size_t childIndex) > { >- return m_scrollingStateTree->attachNode(nodeType, newNodeID, parentID); >+ return m_scrollingStateTree->attachNode(nodeType, newNodeID, parentID, childIndex); > } > > void AsyncScrollingCoordinator::detachFromStateTree(ScrollingNodeID nodeID) >@@ -509,7 +509,7 @@ void AsyncScrollingCoordinator::ensureRootStateNodeForFrameView(FrameView& frame > // For non-main frames, it is only possible to arrive in this function from > // RenderLayerCompositor::updateBacking where the node has already been created. > ASSERT(frameView.frame().isMainFrame()); >- attachToStateTree(MainFrameScrollingNode, frameView.scrollLayerID(), 0); >+ attachToStateTree(MainFrameScrollingNode, frameView.scrollLayerID(), 0, 0); > } > > void AsyncScrollingCoordinator::updateFrameScrollingNode(ScrollingNodeID nodeID, GraphicsLayer* layer, GraphicsLayer* scrolledContentsLayer, GraphicsLayer* counterScrollingLayer, GraphicsLayer* insetClipLayer, const ScrollingGeometry& scrollingGeometry) >diff --git a/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.h b/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.h >index 5d678e400e59928548f38437c74f069cbcdc2fd3..03ae58aa66e06e82046c4e2e813385030f4c2b0b 100644 >--- a/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.h >+++ b/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.h >@@ -97,7 +97,7 @@ private: > > WEBCORE_EXPORT bool requestScrollPositionUpdate(FrameView&, const IntPoint&) override; > >- WEBCORE_EXPORT ScrollingNodeID attachToStateTree(ScrollingNodeType, ScrollingNodeID newNodeID, ScrollingNodeID parentID) override; >+ WEBCORE_EXPORT ScrollingNodeID attachToStateTree(ScrollingNodeType, ScrollingNodeID newNodeID, ScrollingNodeID parentID, size_t childIndex) override; > WEBCORE_EXPORT void detachFromStateTree(ScrollingNodeID) override; > WEBCORE_EXPORT void clearStateTree() override; > >diff --git a/Source/WebCore/page/scrolling/ScrollingCoordinator.cpp b/Source/WebCore/page/scrolling/ScrollingCoordinator.cpp >index f50221a51ce7ef3c9211626a1b1ead66da99fea9..2818ea94bf0e93b43031be934ae6cb708be821f8 100644 >--- a/Source/WebCore/page/scrolling/ScrollingCoordinator.cpp >+++ b/Source/WebCore/page/scrolling/ScrollingCoordinator.cpp >@@ -361,10 +361,10 @@ bool ScrollingCoordinator::shouldUpdateScrollLayerPositionSynchronously(const Fr > return true; > } > >-ScrollingNodeID ScrollingCoordinator::uniqueScrollLayerID() >+ScrollingNodeID ScrollingCoordinator::uniqueScrollingNodeID() > { >- static ScrollingNodeID uniqueScrollLayerID = 1; >- return uniqueScrollLayerID++; >+ static ScrollingNodeID uniqueScrollingNodeID = 1; >+ return uniqueScrollingNodeID++; > } > > String ScrollingCoordinator::scrollingStateTreeAsText(ScrollingStateTreeAsTextBehavior) const >diff --git a/Source/WebCore/page/scrolling/ScrollingCoordinator.h b/Source/WebCore/page/scrolling/ScrollingCoordinator.h >index f917089a5afe429c6631bd2f7157ff3eae1e0edb..aa64e95bbc8b47d58c59fffd3dac6a430b5ef04d 100644 >--- a/Source/WebCore/page/scrolling/ScrollingCoordinator.h >+++ b/Source/WebCore/page/scrolling/ScrollingCoordinator.h >@@ -161,11 +161,11 @@ public: > WEBCORE_EXPORT void setForceSynchronousScrollLayerPositionUpdates(bool); > > // These virtual functions are currently unique to the threaded scrolling architecture. >- // Their meaningful implementations are in ScrollingCoordinatorMac. > virtual void commitTreeStateIfNeeded() { } > virtual bool requestScrollPositionUpdate(FrameView&, const IntPoint&) { return false; } > virtual bool handleWheelEvent(FrameView&, const PlatformWheelEvent&) { return true; } >- virtual ScrollingNodeID attachToStateTree(ScrollingNodeType, ScrollingNodeID newNodeID, ScrollingNodeID /*parentID*/) { return newNodeID; } >+ virtual ScrollingNodeID attachToStateTree(ScrollingNodeType, ScrollingNodeID newNodeID, ScrollingNodeID /*parentID*/, size_t /*childIndex*/ = notFound) { return newNodeID; } >+ > virtual void detachFromStateTree(ScrollingNodeID) { } > virtual void clearStateTree() { } > >@@ -198,8 +198,8 @@ public: > virtual void updateScrollSnapPropertiesWithFrameView(const FrameView&) { } > virtual void setScrollPinningBehavior(ScrollPinningBehavior) { } > >- // Generated a unique id for scroll layers. >- ScrollingNodeID uniqueScrollLayerID(); >+ // Generated a unique id for scrolling nodes. >+ ScrollingNodeID uniqueScrollingNodeID(); > > enum MainThreadScrollingReasonFlags { > ForcedOnMainThread = 1 << 0, >diff --git a/Source/WebCore/page/scrolling/ScrollingStateNode.cpp b/Source/WebCore/page/scrolling/ScrollingStateNode.cpp >index 4c7e143fa2fc0a86e4ea677ce0da5f016a32af9d..03b7ab61c5f7407cf0959cd2c12db20137159691 100644 >--- a/Source/WebCore/page/scrolling/ScrollingStateNode.cpp >+++ b/Source/WebCore/page/scrolling/ScrollingStateNode.cpp >@@ -39,9 +39,7 @@ namespace WebCore { > ScrollingStateNode::ScrollingStateNode(ScrollingNodeType nodeType, ScrollingStateTree& scrollingStateTree, ScrollingNodeID nodeID) > : m_nodeType(nodeType) > , m_nodeID(nodeID) >- , m_changedProperties(0) > , m_scrollingStateTree(scrollingStateTree) >- , m_parent(nullptr) > { > } > >@@ -52,11 +50,10 @@ ScrollingStateNode::ScrollingStateNode(const ScrollingStateNode& stateNode, Scro > , m_nodeID(stateNode.scrollingNodeID()) > , m_changedProperties(stateNode.changedProperties()) > , m_scrollingStateTree(adoptiveTree) >- , m_parent(nullptr) > { > if (hasChangedProperty(ScrollLayer)) > setLayer(stateNode.layer().toRepresentation(adoptiveTree.preferredLayerRepresentation())); >- scrollingStateTree().addNode(this); >+ scrollingStateTree().addNode(*this); > } > > ScrollingStateNode::~ScrollingStateNode() = default; >@@ -100,6 +97,26 @@ void ScrollingStateNode::appendChild(Ref<ScrollingStateNode>&& childNode) > m_children->append(WTFMove(childNode)); > } > >+void ScrollingStateNode::insertChild(Ref<ScrollingStateNode>&& childNode, size_t index) >+{ >+ childNode->setParent(this); >+ >+ if (!m_children) { >+ ASSERT(!index); >+ m_children = std::make_unique<Vector<RefPtr<ScrollingStateNode>>>(); >+ } >+ >+ m_children->insert(index, WTFMove(childNode)); >+} >+ >+size_t ScrollingStateNode::indexOfChild(ScrollingStateNode& childNode) const >+{ >+ if (!m_children) >+ return notFound; >+ >+ return m_children->find(&childNode); >+} >+ > void ScrollingStateNode::reconcileLayerPositionForViewportRect(const LayoutRect& viewportRect, ScrollingLayerPositionAction action) > { > if (!m_children) >diff --git a/Source/WebCore/page/scrolling/ScrollingStateNode.h b/Source/WebCore/page/scrolling/ScrollingStateNode.h >index 455dc1adfae80b7a08deaaf4e3c7458a6654bf52..73fc1a5e2408f5e25bb87ce4e335ba35defb6ed6 100644 >--- a/Source/WebCore/page/scrolling/ScrollingStateNode.h >+++ b/Source/WebCore/page/scrolling/ScrollingStateNode.h >@@ -195,6 +195,7 @@ public: > virtual ~ScrollingStateNode(); > > ScrollingNodeType nodeType() const { return m_nodeType; } >+ ScrollingNodeID scrollingNodeID() const { return m_nodeID; } > > bool isFixedNode() const { return m_nodeType == FixedNode; } > bool isStickyNode() const { return m_nodeType == StickyNode; } >@@ -227,8 +228,6 @@ public: > > ScrollingStateTree& scrollingStateTree() const { return m_scrollingStateTree; } > >- ScrollingNodeID scrollingNodeID() const { return m_nodeID; } >- > ScrollingStateNode* parent() const { return m_parent; } > void setParent(ScrollingStateNode* parent) { m_parent = parent; } > ScrollingNodeID parentNodeID() const { return m_parent ? m_parent->scrollingNodeID() : 0; } >@@ -236,6 +235,9 @@ public: > Vector<RefPtr<ScrollingStateNode>>* children() const { return m_children.get(); } > > void appendChild(Ref<ScrollingStateNode>&&); >+ void insertChild(Ref<ScrollingStateNode>&&, size_t index); >+ >+ size_t indexOfChild(ScrollingStateNode&) const; > > String scrollingStateTreeAsText(ScrollingStateTreeAsTextBehavior = ScrollingStateTreeAsTextBehaviorNormal) const; > >@@ -248,12 +250,12 @@ private: > void dump(WTF::TextStream&, ScrollingStateTreeAsTextBehavior) const; > > const ScrollingNodeType m_nodeType; >- ScrollingNodeID m_nodeID; >- ChangedProperties m_changedProperties; >+ const ScrollingNodeID m_nodeID; >+ ChangedProperties m_changedProperties { 0 }; > > ScrollingStateTree& m_scrollingStateTree; > >- ScrollingStateNode* m_parent; >+ ScrollingStateNode* m_parent { nullptr }; > std::unique_ptr<Vector<RefPtr<ScrollingStateNode>>> m_children; > > LayerRepresentation m_layer; >diff --git a/Source/WebCore/page/scrolling/ScrollingStateTree.cpp b/Source/WebCore/page/scrolling/ScrollingStateTree.cpp >index b33aa0cdafe497a2f8f9ca6b7b079f452fa7b076..87d201204339abb3c57839b75c78ca6ab8a9967c 100644 >--- a/Source/WebCore/page/scrolling/ScrollingStateTree.cpp >+++ b/Source/WebCore/page/scrolling/ScrollingStateTree.cpp >@@ -82,30 +82,44 @@ Ref<ScrollingStateNode> ScrollingStateTree::createNode(ScrollingNodeType nodeTyp > return ScrollingStateFixedNode::create(*this, nodeID); > } > >-bool ScrollingStateTree::nodeTypeAndParentMatch(ScrollingStateNode& node, ScrollingNodeType nodeType, ScrollingNodeID parentID) const >+bool ScrollingStateTree::nodeTypeAndParentMatch(ScrollingStateNode& node, ScrollingNodeType nodeType, ScrollingStateNode* parentNode) const > { > if (node.nodeType() != nodeType) > return false; > >- auto* parent = stateNodeForID(parentID); >- if (!parent) >- return true; >- >- return node.parent() == parent; >+ return node.parent() == parentNode; > } > >-ScrollingNodeID ScrollingStateTree::attachNode(ScrollingNodeType nodeType, ScrollingNodeID newNodeID, ScrollingNodeID parentID) >+ScrollingNodeID ScrollingStateTree::attachNode(ScrollingNodeType nodeType, ScrollingNodeID newNodeID, ScrollingNodeID parentID, size_t childIndex) > { > ASSERT(newNodeID); > > if (auto* node = stateNodeForID(newNodeID)) { >- if (nodeTypeAndParentMatch(*node, nodeType, parentID)) >+ auto* parent = stateNodeForID(parentID); >+ if (nodeTypeAndParentMatch(*node, nodeType, parent)) { >+ if (!parentID) >+ return newNodeID; >+ >+ size_t currentIndex = parent->indexOfChild(*node); >+ if (currentIndex == childIndex) >+ return newNodeID; >+ >+ ASSERT(currentIndex != notFound); >+ Ref<ScrollingStateNode> protectedNode(*node); >+ parent->children()->remove(currentIndex); >+ >+ if (childIndex == notFound) >+ parent->appendChild(WTFMove(protectedNode)); >+ else >+ parent->insertChild(WTFMove(protectedNode), childIndex); >+ > return newNodeID; >+ } > > #if ENABLE(ASYNC_SCROLLING) > // If the type has changed, we need to destroy and recreate the node with a new ID. > if (nodeType != node->nodeType()) >- newNodeID = m_scrollingCoordinator->uniqueScrollLayerID(); >+ newNodeID = m_scrollingCoordinator->uniqueScrollingNodeID(); > #endif > > // The node is being re-parented. To do that, we'll remove it, and then create a new node. >@@ -114,6 +128,7 @@ ScrollingNodeID ScrollingStateTree::attachNode(ScrollingNodeType nodeType, Scrol > > ScrollingStateNode* newNode = nullptr; > if (!parentID) { >+ ASSERT(!childIndex || childIndex == notFound); > // If we're resetting the root node, we should clear the HashMap and destroy the current children. > clear(); > >@@ -122,12 +137,15 @@ ScrollingNodeID ScrollingStateTree::attachNode(ScrollingNodeType nodeType, Scrol > m_hasNewRootStateNode = true; > } else { > auto* parent = stateNodeForID(parentID); >- if (!parent) >+ if (!parent) { >+ ASSERT_NOT_REACHED(); > return 0; >+ } > > if (nodeType == SubframeScrollingNode && parentID) { > if (auto orphanedNode = m_orphanedSubframeNodes.take(newNodeID)) { > newNode = orphanedNode.get(); >+ // FIXME: use childIndex > parent->appendChild(orphanedNode.releaseNonNull()); > } > } >@@ -135,11 +153,15 @@ ScrollingNodeID ScrollingStateTree::attachNode(ScrollingNodeType nodeType, Scrol > if (!newNode) { > auto stateNode = createNode(nodeType, newNodeID); > newNode = stateNode.ptr(); >- parent->appendChild(WTFMove(stateNode)); >+ >+ if (childIndex == notFound) >+ parent->appendChild(WTFMove(stateNode)); >+ else >+ parent->insertChild(WTFMove(stateNode), childIndex); > } > } > >- m_stateNodeMap.set(newNodeID, newNode); >+ addNode(*newNode); > m_nodesRemovedSinceLastCommit.remove(newNodeID); > return newNodeID; > } >@@ -196,9 +218,14 @@ std::unique_ptr<ScrollingStateTree> ScrollingStateTree::commit(LayerRepresentati > return treeStateClone; > } > >-void ScrollingStateTree::addNode(ScrollingStateNode* node) >+void ScrollingStateTree::setRootStateNode(Ref<ScrollingStateFrameScrollingNode>&& rootStateNode) >+{ >+ m_rootStateNode = WTFMove(rootStateNode); >+} >+ >+void ScrollingStateTree::addNode(ScrollingStateNode& node) > { >- m_stateNodeMap.add(node->scrollingNodeID(), node); >+ m_stateNodeMap.add(node.scrollingNodeID(), &node); > } > > void ScrollingStateTree::removeNodeAndAllDescendants(ScrollingStateNode* node, SubframeNodeRemoval subframeNodeRemoval) >diff --git a/Source/WebCore/page/scrolling/ScrollingStateTree.h b/Source/WebCore/page/scrolling/ScrollingStateTree.h >index 3b256151ad744bcf0234d72d4fd3a0c75d436911..5875586edcef90ac016ba00e2306bec6c14d5b2f 100644 >--- a/Source/WebCore/page/scrolling/ScrollingStateTree.h >+++ b/Source/WebCore/page/scrolling/ScrollingStateTree.h >@@ -27,12 +27,14 @@ > > #if ENABLE(ASYNC_SCROLLING) || USE(COORDINATED_GRAPHICS) > >-#include "ScrollingStateFrameScrollingNode.h" >+#include "ScrollingCoordinator.h" >+#include "ScrollingStateNode.h" > #include <wtf/RefPtr.h> > > namespace WebCore { > > class AsyncScrollingCoordinator; >+class ScrollingStateFrameScrollingNode; > > // The ScrollingStateTree is a tree that managed ScrollingStateNodes. The nodes keep track of the current > // state of scrolling related properties. Whenever any properties change, the scrolling coordinator >@@ -49,7 +51,7 @@ public: > ScrollingStateFrameScrollingNode* rootStateNode() const { return m_rootStateNode.get(); } > WEBCORE_EXPORT ScrollingStateNode* stateNodeForID(ScrollingNodeID) const; > >- WEBCORE_EXPORT ScrollingNodeID attachNode(ScrollingNodeType, ScrollingNodeID, ScrollingNodeID parentID); >+ WEBCORE_EXPORT ScrollingNodeID attachNode(ScrollingNodeType, ScrollingNodeID, ScrollingNodeID parentID, size_t childIndex); > void detachNode(ScrollingNodeID); > void clear(); > >@@ -74,12 +76,12 @@ public: > void setPreferredLayerRepresentation(LayerRepresentation::Type representation) { m_preferredLayerRepresentation = representation; } > > private: >- void setRootStateNode(Ref<ScrollingStateFrameScrollingNode>&& rootStateNode) { m_rootStateNode = WTFMove(rootStateNode); } >- void addNode(ScrollingStateNode*); >+ void setRootStateNode(Ref<ScrollingStateFrameScrollingNode>&&); >+ void addNode(ScrollingStateNode&); > > Ref<ScrollingStateNode> createNode(ScrollingNodeType, ScrollingNodeID); > >- bool nodeTypeAndParentMatch(ScrollingStateNode&, ScrollingNodeType, ScrollingNodeID parentID) const; >+ bool nodeTypeAndParentMatch(ScrollingStateNode&, ScrollingNodeType, ScrollingStateNode* parentNode) const; > > enum class SubframeNodeRemoval { Delete, Orphan }; > void removeNodeAndAllDescendants(ScrollingStateNode*, SubframeNodeRemoval = SubframeNodeRemoval::Delete); >diff --git a/Source/WebCore/page/scrolling/ScrollingTree.cpp b/Source/WebCore/page/scrolling/ScrollingTree.cpp >index ef4d5c44621a9c651fe44a6c64054080894f61e5..03dfbe49fc98be8703a046c7a816be600e3c993d 100644 >--- a/Source/WebCore/page/scrolling/ScrollingTree.cpp >+++ b/Source/WebCore/page/scrolling/ScrollingTree.cpp >@@ -31,6 +31,7 @@ > #include "EventNames.h" > #include "Logging.h" > #include "PlatformWheelEvent.h" >+#include "ScrollingStateFrameScrollingNode.h" > #include "ScrollingStateTree.h" > #include "ScrollingTreeFrameScrollingNode.h" > #include "ScrollingTreeNode.h" >diff --git a/Source/WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h b/Source/WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h >index a894233e1a05ad781c74fd2f71963ac78769d6e1..2c8190dfaf83384ed0ad139a5e7810b4f601602e 100644 >--- a/Source/WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h >+++ b/Source/WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h >@@ -29,6 +29,7 @@ > > #include "ScrollController.h" > #include "ScrollbarThemeMac.h" >+#include "ScrollingStateFrameScrollingNode.h" > #include "ScrollingTreeFrameScrollingNode.h" > #include <wtf/RetainPtr.h> > >diff --git a/Source/WebCore/rendering/RenderLayerCompositor.cpp b/Source/WebCore/rendering/RenderLayerCompositor.cpp >index ec2f5a0539d077a1c63f49c94b163174635984db..77b0120fbaed32236d03f7e858dcd7819fda505e 100644 >--- a/Source/WebCore/rendering/RenderLayerCompositor.cpp >+++ b/Source/WebCore/rendering/RenderLayerCompositor.cpp >@@ -3835,7 +3835,7 @@ ScrollingNodeID RenderLayerCompositor::attachScrollingNode(RenderLayer& layer, S > LayerScrollCoordinationRole role = scrollCoordinationRoleForNodeType(nodeType); > ScrollingNodeID nodeID = backing->scrollingNodeIDForRole(role); > if (!nodeID) >- nodeID = scrollingCoordinator->uniqueScrollLayerID(); >+ nodeID = scrollingCoordinator->uniqueScrollingNodeID(); > > nodeID = scrollingCoordinator->attachToStateTree(nodeType, nodeID, parentNodeID); > if (!nodeID) >diff --git a/Source/WebKit/Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp b/Source/WebKit/Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp >index 8d2d18c096e8bdd4de5759c2215720bae1cea80c..9b8d1c512ebedadb3efb51914bff4f474d76a2eb 100644 >--- a/Source/WebKit/Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp >+++ b/Source/WebKit/Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp >@@ -413,7 +413,7 @@ bool RemoteScrollingCoordinatorTransaction::decode(IPC::Decoder& decoder) > if (!decoder.decode(parentNodeID)) > return false; > >- m_scrollingStateTree->attachNode(nodeType, nodeID, parentNodeID); >+ m_scrollingStateTree->attachNode(nodeType, nodeID, parentNodeID, i); > ScrollingStateNode* newNode = m_scrollingStateTree->stateNodeForID(nodeID); > ASSERT(newNode); > ASSERT(!parentNodeID || newNode->parent());
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:
fred.wang
:
review-
ews-watchlist
:
commit-queue-
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 192395
: 356581 |
356584
|
356589
|
356591
|
356592
|
356599