<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[283761] trunk/Source</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/283761">283761</a></dd>
<dt>Author</dt> <dd>simon.fraser@apple.com</dd>
<dt>Date</dt> <dd>2021-10-07 17:32:30 -0700 (Thu, 07 Oct 2021)</dd>
</dl>

<h3>Log Message</h3>
<pre>Minor refactoring to use ScrollUpdate in more places
https://bugs.webkit.org/show_bug.cgi?id=231395

Reviewed by Myles C. Maxfield.
Source/WebCore:

ScrollUpdate is used to communicate changes from the scrolling tree back to FrameView etc.

Future patches will extend ScrollUpdate a little. Move to ScrollingCoordinatorTypes.h, and
pass ScrollUpdate to some more AsyncScrollingCoordinator functions, only unpacking at the
last minute.

Move ScrollType to the end of the updateScrollPositionAfterAsyncScroll() argument list since
it's not part of ScrollUpdate.

* page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::requestScrollPositionUpdate):
(WebCore::AsyncScrollingCoordinator::synchronizeStateFromScrollingTree):
(WebCore::AsyncScrollingCoordinator::applyPendingScrollUpdates):
(WebCore::AsyncScrollingCoordinator::applyScrollUpdate):
(WebCore::AsyncScrollingCoordinator::applyScrollPositionUpdate):
(WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll):
* page/scrolling/AsyncScrollingCoordinator.h:
* page/scrolling/ScrollingCoordinatorTypes.h:
(WebCore::ScrollUpdate::canMerge const):
(WebCore::ScrollUpdate::merge):
* page/scrolling/ScrollingTree.cpp:
(WebCore::ScrollingTree::takePendingScrollUpdates):
* page/scrolling/ScrollingTree.h:
(WebCore::ScrollingTree::ScrollUpdate::canMerge const): Deleted.
(WebCore::ScrollingTree::ScrollUpdate::merge): Deleted.
* page/scrolling/ThreadedScrollingTree.cpp:
(WebCore::ThreadedScrollingTree::scrollingTreeNodeDidScroll):

Source/WebKit:

* WebProcess/WebPage/RemoteLayerTree/RemoteScrollingCoordinator.mm:
(WebKit::RemoteScrollingCoordinator::scrollPositionChangedForNode):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorepagescrollingAsyncScrollingCoordinatorcpp">trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp</a></li>
<li><a href="#trunkSourceWebCorepagescrollingAsyncScrollingCoordinatorh">trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.h</a></li>
<li><a href="#trunkSourceWebCorepagescrollingScrollingCoordinatorTypesh">trunk/Source/WebCore/page/scrolling/ScrollingCoordinatorTypes.h</a></li>
<li><a href="#trunkSourceWebCorepagescrollingScrollingTreecpp">trunk/Source/WebCore/page/scrolling/ScrollingTree.cpp</a></li>
<li><a href="#trunkSourceWebCorepagescrollingScrollingTreeh">trunk/Source/WebCore/page/scrolling/ScrollingTree.h</a></li>
<li><a href="#trunkSourceWebCorepagescrollingThreadedScrollingTreecpp">trunk/Source/WebCore/page/scrolling/ThreadedScrollingTree.cpp</a></li>
<li><a href="#trunkSourceWebKitChangeLog">trunk/Source/WebKit/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitWebProcessWebPageRemoteLayerTreeRemoteScrollingCoordinatormm">trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteScrollingCoordinator.mm</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (283760 => 283761)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog   2021-10-08 00:22:27 UTC (rev 283760)
+++ trunk/Source/WebCore/ChangeLog      2021-10-08 00:32:30 UTC (rev 283761)
</span><span class="lines">@@ -1,3 +1,38 @@
</span><ins>+2021-10-07  Simon Fraser  <simon.fraser@apple.com>
+
+        Minor refactoring to use ScrollUpdate in more places
+        https://bugs.webkit.org/show_bug.cgi?id=231395
+
+        Reviewed by Myles C. Maxfield.
+        
+        ScrollUpdate is used to communicate changes from the scrolling tree back to FrameView etc.
+
+        Future patches will extend ScrollUpdate a little. Move to ScrollingCoordinatorTypes.h, and
+        pass ScrollUpdate to some more AsyncScrollingCoordinator functions, only unpacking at the
+        last minute.
+
+        Move ScrollType to the end of the updateScrollPositionAfterAsyncScroll() argument list since
+        it's not part of ScrollUpdate.
+
+        * page/scrolling/AsyncScrollingCoordinator.cpp:
+        (WebCore::AsyncScrollingCoordinator::requestScrollPositionUpdate):
+        (WebCore::AsyncScrollingCoordinator::synchronizeStateFromScrollingTree):
+        (WebCore::AsyncScrollingCoordinator::applyPendingScrollUpdates):
+        (WebCore::AsyncScrollingCoordinator::applyScrollUpdate):
+        (WebCore::AsyncScrollingCoordinator::applyScrollPositionUpdate):
+        (WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll):
+        * page/scrolling/AsyncScrollingCoordinator.h:
+        * page/scrolling/ScrollingCoordinatorTypes.h:
+        (WebCore::ScrollUpdate::canMerge const):
+        (WebCore::ScrollUpdate::merge):
+        * page/scrolling/ScrollingTree.cpp:
+        (WebCore::ScrollingTree::takePendingScrollUpdates):
+        * page/scrolling/ScrollingTree.h:
+        (WebCore::ScrollingTree::ScrollUpdate::canMerge const): Deleted.
+        (WebCore::ScrollingTree::ScrollUpdate::merge): Deleted.
+        * page/scrolling/ThreadedScrollingTree.cpp:
+        (WebCore::ThreadedScrollingTree::scrollingTreeNodeDidScroll):
+
</ins><span class="cx"> 2021-10-07  Aditya Keerthi  <akeerthi@apple.com>
</span><span class="cx"> 
</span><span class="cx">         Introduce ShadowPseudoIds to store all UA shadow root pseudo-element ids
</span></span></pre></div>
<a id="trunkSourceWebCorepagescrollingAsyncScrollingCoordinatorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp (283760 => 283761)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp        2021-10-08 00:22:27 UTC (rev 283760)
+++ trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp   2021-10-08 00:32:30 UTC (rev 283761)
</span><span class="lines">@@ -259,8 +259,10 @@
</span><span class="cx">     bool inBackForwardCache = frameView->frame().document()->backForwardCacheState() != Document::NotInBackForwardCache;
</span><span class="cx">     bool isSnapshotting = m_page->isTakingSnapshotsForApplicationSuspension();
</span><span class="cx">     bool inProgrammaticScroll = scrollableArea.currentScrollType() == ScrollType::Programmatic;
</span><del>-    if (inProgrammaticScroll || inBackForwardCache)
-        applyScrollUpdate(scrollingNodeID, scrollPosition, { }, ScrollType::Programmatic, ScrollingLayerPositionAction::Set);
</del><ins>+    if (inProgrammaticScroll || inBackForwardCache) {
+        auto scrollUpdate = ScrollUpdate { scrollingNodeID, scrollPosition, { }, ScrollingLayerPositionAction::Set };
+        applyScrollUpdate(WTFMove(scrollUpdate), ScrollType::Programmatic);
+    }
</ins><span class="cx"> 
</span><span class="cx">     ASSERT(inProgrammaticScroll == (scrollType == ScrollType::Programmatic));
</span><span class="cx"> 
</span><span class="lines">@@ -291,7 +293,7 @@
</span><span class="cx">     m_scrollingTree->traverseScrollingTree([&](ScrollingNodeID nodeID, ScrollingNodeType, std::optional<FloatPoint> scrollPosition, std::optional<FloatPoint> layoutViewportOrigin, bool scrolledSinceLastCommit) {
</span><span class="cx">         if (scrollPosition && scrolledSinceLastCommit) {
</span><span class="cx">             LOG_WITH_STREAM(Scrolling, stream << "AsyncScrollingCoordinator::synchronizeStateFromScrollingTree - node " << nodeID << " scroll position " << scrollPosition);
</span><del>-            updateScrollPositionAfterAsyncScroll(nodeID, scrollPosition.value(), layoutViewportOrigin, ScrollType::User, ScrollingLayerPositionAction::Set);
</del><ins>+            updateScrollPositionAfterAsyncScroll(nodeID, scrollPosition.value(), layoutViewportOrigin, ScrollingLayerPositionAction::Set, ScrollType::User);
</ins><span class="cx">         }
</span><span class="cx">     });
</span><span class="cx"> }
</span><span class="lines">@@ -304,7 +306,7 @@
</span><span class="cx">     auto scrollUpdates = m_scrollingTree->takePendingScrollUpdates();
</span><span class="cx">     for (auto& update : scrollUpdates) {
</span><span class="cx">         LOG_WITH_STREAM(Scrolling, stream << "AsyncScrollingCoordinator::applyPendingScrollUpdates - node " << update.nodeID << " scroll position " << update.scrollPosition);
</span><del>-        updateScrollPositionAfterAsyncScroll(update.nodeID, update.scrollPosition, update.layoutViewportOrigin, ScrollType::User, update.updateLayerPositionAction);
</del><ins>+        applyScrollPositionUpdate(WTFMove(update), ScrollType::User);
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -345,14 +347,19 @@
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void AsyncScrollingCoordinator::applyScrollUpdate(ScrollingNodeID scrollingNodeID, const FloatPoint& scrollPosition, std::optional<FloatPoint> layoutViewportOrigin, ScrollType scrollType, ScrollingLayerPositionAction scrollingLayerPositionAction)
</del><ins>+void AsyncScrollingCoordinator::applyScrollUpdate(ScrollUpdate&& update, ScrollType scrollType)
</ins><span class="cx"> {
</span><span class="cx">     applyPendingScrollUpdates();
</span><del>-    updateScrollPositionAfterAsyncScroll(scrollingNodeID, scrollPosition, layoutViewportOrigin, scrollType, scrollingLayerPositionAction);
</del><ins>+    applyScrollPositionUpdate(WTFMove(update), scrollType);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll(ScrollingNodeID scrollingNodeID, const FloatPoint& scrollPosition, std::optional<FloatPoint> layoutViewportOrigin, ScrollType scrollType, ScrollingLayerPositionAction scrollingLayerPositionAction)
</del><ins>+void AsyncScrollingCoordinator::applyScrollPositionUpdate(ScrollUpdate&& update, ScrollType scrollType)
</ins><span class="cx"> {
</span><ins>+    updateScrollPositionAfterAsyncScroll(update.nodeID, update.scrollPosition, update.layoutViewportOrigin, update.updateLayerPositionAction, scrollType);
+}
+
+void AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll(ScrollingNodeID scrollingNodeID, const FloatPoint& scrollPosition, std::optional<FloatPoint> layoutViewportOrigin, ScrollingLayerPositionAction scrollingLayerPositionAction, ScrollType scrollType)
+{
</ins><span class="cx">     ASSERT(isMainThread());
</span><span class="cx"> 
</span><span class="cx">     if (!m_page)
</span></span></pre></div>
<a id="trunkSourceWebCorepagescrollingAsyncScrollingCoordinatorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.h (283760 => 283761)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.h  2021-10-08 00:22:27 UTC (rev 283760)
+++ trunk/Source/WebCore/page/scrolling/AsyncScrollingCoordinator.h     2021-10-08 00:32:30 UTC (rev 283761)
</span><span class="lines">@@ -54,7 +54,7 @@
</span><span class="cx"> 
</span><span class="cx">     void applyPendingScrollUpdates();
</span><span class="cx"> 
</span><del>-    WEBCORE_EXPORT void applyScrollUpdate(ScrollingNodeID, const FloatPoint&, std::optional<FloatPoint> layoutViewportOrigin, ScrollType, ScrollingLayerPositionAction);
</del><ins>+    WEBCORE_EXPORT void applyScrollUpdate(ScrollUpdate&&, ScrollType);
</ins><span class="cx"> 
</span><span class="cx"> #if PLATFORM(COCOA)
</span><span class="cx">     WEBCORE_EXPORT void handleWheelEventPhase(ScrollingNodeID, PlatformWheelEventPhase) final;
</span><span class="lines">@@ -151,7 +151,8 @@
</span><span class="cx">     void setEventTrackingRegionsDirty();
</span><span class="cx">     void updateEventTrackingRegions();
</span><span class="cx">     
</span><del>-    void updateScrollPositionAfterAsyncScroll(ScrollingNodeID, const FloatPoint&, std::optional<FloatPoint> layoutViewportOrigin, ScrollType, ScrollingLayerPositionAction);
</del><ins>+    void applyScrollPositionUpdate(ScrollUpdate&&, ScrollType);
+    void updateScrollPositionAfterAsyncScroll(ScrollingNodeID, const FloatPoint&, std::optional<FloatPoint> layoutViewportOrigin, ScrollingLayerPositionAction, ScrollType);
</ins><span class="cx">     
</span><span class="cx">     FrameView* frameViewForScrollingNode(ScrollingNodeID) const;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorepagescrollingScrollingCoordinatorTypesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/scrolling/ScrollingCoordinatorTypes.h (283760 => 283761)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/scrolling/ScrollingCoordinatorTypes.h  2021-10-08 00:22:27 UTC (rev 283760)
+++ trunk/Source/WebCore/page/scrolling/ScrollingCoordinatorTypes.h     2021-10-08 00:32:30 UTC (rev 283761)
</span><span class="lines">@@ -102,6 +102,24 @@
</span><span class="cx">     ChangingObscuredInsetsInteractively // This implies Unstable.
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+struct ScrollUpdate {
+    ScrollingNodeID nodeID { 0 };
+    FloatPoint scrollPosition;
+    std::optional<FloatPoint> layoutViewportOrigin;
+    ScrollingLayerPositionAction updateLayerPositionAction { ScrollingLayerPositionAction::Sync };
+    
+    bool canMerge(const ScrollUpdate& other) const
+    {
+        return nodeID == other.nodeID && updateLayerPositionAction == other.updateLayerPositionAction;
+    }
+    
+    void merge(ScrollUpdate&& other)
+    {
+        scrollPosition = other.scrollPosition;
+        layoutViewportOrigin = other.layoutViewportOrigin;
+    }
+};
+
</ins><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> namespace WTF {
</span></span></pre></div>
<a id="trunkSourceWebCorepagescrollingScrollingTreecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/scrolling/ScrollingTree.cpp (283760 => 283761)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/scrolling/ScrollingTree.cpp    2021-10-08 00:22:27 UTC (rev 283760)
+++ trunk/Source/WebCore/page/scrolling/ScrollingTree.cpp       2021-10-08 00:32:30 UTC (rev 283761)
</span><span class="lines">@@ -614,7 +614,7 @@
</span><span class="cx">     m_pendingScrollUpdates.append(WTFMove(update));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Vector<ScrollingTree::ScrollUpdate> ScrollingTree::takePendingScrollUpdates()
</del><ins>+Vector<ScrollUpdate> ScrollingTree::takePendingScrollUpdates()
</ins><span class="cx"> {
</span><span class="cx">     Locker locker { m_pendingScrollUpdatesLock };
</span><span class="cx">     return std::exchange(m_pendingScrollUpdates, { });
</span></span></pre></div>
<a id="trunkSourceWebCorepagescrollingScrollingTreeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/scrolling/ScrollingTree.h (283760 => 283761)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/scrolling/ScrollingTree.h      2021-10-08 00:22:27 UTC (rev 283760)
+++ trunk/Source/WebCore/page/scrolling/ScrollingTree.h 2021-10-08 00:32:30 UTC (rev 283761)
</span><span class="lines">@@ -224,24 +224,6 @@
</span><span class="cx">     bool hasProcessedWheelEventsRecently();
</span><span class="cx">     WEBCORE_EXPORT void willProcessWheelEvent();
</span><span class="cx"> 
</span><del>-    struct ScrollUpdate {
-        ScrollingNodeID nodeID { 0 };
-        FloatPoint scrollPosition;
-        std::optional<FloatPoint> layoutViewportOrigin;
-        ScrollingLayerPositionAction updateLayerPositionAction { ScrollingLayerPositionAction::Sync };
-        
-        bool canMerge(const ScrollUpdate& other) const
-        {
-            return nodeID == other.nodeID && updateLayerPositionAction == other.updateLayerPositionAction;
-        }
-        
-        void merge(ScrollUpdate&& other)
-        {
-            scrollPosition = other.scrollPosition;
-            layoutViewportOrigin = other.layoutViewportOrigin;
-        }
-    };
-
</del><span class="cx">     void addPendingScrollUpdate(ScrollUpdate&&);
</span><span class="cx">     Vector<ScrollUpdate> takePendingScrollUpdates();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorepagescrollingThreadedScrollingTreecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/scrolling/ThreadedScrollingTree.cpp (283760 => 283761)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/scrolling/ThreadedScrollingTree.cpp    2021-10-08 00:22:27 UTC (rev 283760)
+++ trunk/Source/WebCore/page/scrolling/ThreadedScrollingTree.cpp       2021-10-08 00:32:30 UTC (rev 283761)
</span><span class="lines">@@ -207,14 +207,15 @@
</span><span class="cx">     if (is<ScrollingTreeFrameScrollingNode>(node))
</span><span class="cx">         layoutViewportOrigin = downcast<ScrollingTreeFrameScrollingNode>(node).layoutViewport().location();
</span><span class="cx"> 
</span><ins>+    auto scrollUpdate = ScrollUpdate { node.scrollingNodeID(), scrollPosition, layoutViewportOrigin, scrollingLayerPositionAction };
+
</ins><span class="cx">     if (RunLoop::isMain()) {
</span><del>-        m_scrollingCoordinator->applyScrollUpdate(node.scrollingNodeID(), scrollPosition, layoutViewportOrigin, ScrollType::User, scrollingLayerPositionAction);
</del><ins>+        m_scrollingCoordinator->applyScrollUpdate(WTFMove(scrollUpdate), ScrollType::User);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     LOG_WITH_STREAM(Scrolling, stream << "ThreadedScrollingTree::scrollingTreeNodeDidScroll " << node.scrollingNodeID() << " to " << scrollPosition << " triggering main thread rendering update");
</span><span class="cx"> 
</span><del>-    auto scrollUpdate = ScrollUpdate { node.scrollingNodeID(), scrollPosition, layoutViewportOrigin, scrollingLayerPositionAction };
</del><span class="cx">     addPendingScrollUpdate(WTFMove(scrollUpdate));
</span><span class="cx"> 
</span><span class="cx">     auto deferrer = WheelEventTestMonitorCompletionDeferrer { wheelEventTestMonitor(), reinterpret_cast<WheelEventTestMonitor::ScrollableAreaIdentifier>(node.scrollingNodeID()), WheelEventTestMonitor::ScrollingThreadSyncNeeded };
</span></span></pre></div>
<a id="trunkSourceWebKitChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/ChangeLog (283760 => 283761)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/ChangeLog    2021-10-08 00:22:27 UTC (rev 283760)
+++ trunk/Source/WebKit/ChangeLog       2021-10-08 00:32:30 UTC (rev 283761)
</span><span class="lines">@@ -1,3 +1,13 @@
</span><ins>+2021-10-07  Simon Fraser  <simon.fraser@apple.com>
+
+        Minor refactoring to use ScrollUpdate in more places
+        https://bugs.webkit.org/show_bug.cgi?id=231395
+
+        Reviewed by Myles C. Maxfield.
+
+        * WebProcess/WebPage/RemoteLayerTree/RemoteScrollingCoordinator.mm:
+        (WebKit::RemoteScrollingCoordinator::scrollPositionChangedForNode):
+
</ins><span class="cx"> 2021-10-07  Myles C. Maxfield  <mmaxfield@apple.com>
</span><span class="cx"> 
</span><span class="cx">         [GPU Process] Unique RenderingResourceIdentifiers Part 1: Uniquify at entry points
</span></span></pre></div>
<a id="trunkSourceWebKitWebProcessWebPageRemoteLayerTreeRemoteScrollingCoordinatormm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteScrollingCoordinator.mm (283760 => 283761)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteScrollingCoordinator.mm     2021-10-08 00:22:27 UTC (rev 283760)
+++ trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteScrollingCoordinator.mm        2021-10-08 00:32:30 UTC (rev 283761)
</span><span class="lines">@@ -107,7 +107,8 @@
</span><span class="cx"> // Notification from the UI process that we scrolled.
</span><span class="cx"> void RemoteScrollingCoordinator::scrollPositionChangedForNode(ScrollingNodeID nodeID, const FloatPoint& scrollPosition, bool syncLayerPosition)
</span><span class="cx"> {
</span><del>-    applyScrollUpdate(nodeID, scrollPosition, std::nullopt, ScrollType::User, syncLayerPosition ? ScrollingLayerPositionAction::Sync : ScrollingLayerPositionAction::Set);
</del><ins>+    auto scrollUpdate = ScrollUpdate { nodeID, scrollPosition, { }, syncLayerPosition ? ScrollingLayerPositionAction::Sync : ScrollingLayerPositionAction::Set };
+    applyScrollUpdate(WTFMove(scrollUpdate), ScrollType::User);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void RemoteScrollingCoordinator::currentSnapPointIndicesChangedForNode(ScrollingNodeID nodeID, std::optional<unsigned> horizontal, std::optional<unsigned> vertical)
</span></span></pre>
</div>
</div>

</body>
</html>