[webkit-changes] [WebKit/WebKit] e8575a: [UI-side compositing] RemoteScrollingTree needs to...

Simon Fraser noreply at github.com
Mon Feb 27 12:36:18 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: e8575a9871eced896e8c64b5166f3c59bab146e4
      https://github.com/WebKit/WebKit/commit/e8575a9871eced896e8c64b5166f3c59bab146e4
  Author: Simon Fraser <simon.fraser at apple.com>
  Date:   2023-02-27 (Mon, 27 Feb 2023)

  Changed paths:
    M Source/WebCore/page/scrolling/ScrollingCoordinatorTypes.cpp
    M Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp
    M Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingTree.h
    M Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingTreeIOS.cpp
    M Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm
    M Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteScrollingTreeMac.mm

  Log Message:
  -----------
  [UI-side compositing] RemoteScrollingTree needs to hold a weak ref to the RemoteScrollingCoordinatorProxy
https://bugs.webkit.org/show_bug.cgi?id=252963
rdar://105949247

Reviewed by Tim Horton.

The scrolling thread can extend the lifetime of the RemoteScrollingTree via activity on that thread,
so RemoteScrollingTree needs to hold a nullable reference to the RemoteScrollingCoordinatorProxy;
use a WeakPtr.

Add null checks everywhere we use m_scrollingCoordinatorProxy. All of these are on the main thread.

* Source/WebCore/page/scrolling/ScrollingCoordinatorTypes.cpp:
(WebCore::operator<<): Add missing space in logging.
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp:
(WebKit::RemoteScrollingTree::RemoteScrollingTree):
(WebKit::RemoteScrollingTree::invalidate):
(WebKit::RemoteScrollingTree::scrollingCoordinatorProxy const):
(WebKit::RemoteScrollingTree::scrollingTreeNodeDidScroll):
(WebKit::RemoteScrollingTree::scrollingTreeNodeDidStopAnimatedScroll):
(WebKit::RemoteScrollingTree::scrollingTreeNodeRequestsScroll):
(WebKit::RemoteScrollingTree::currentSnapPointIndicesDidChange):
(WebKit::RemoteScrollingTree::reportExposedUnfilledArea):
(WebKit::RemoteScrollingTree::reportSynchronousScrollingReasonsChanged):
(WebKit::RemoteScrollingTree::receivedWheelEventWithPhases):
(WebKit::RemoteScrollingTree::deferWheelEventTestCompletionForReason):
(WebKit::RemoteScrollingTree::removeWheelEventTestCompletionDeferralForReason):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingTree.h: Various final -> override since a future patch will override these functions.
(WebKit::RemoteScrollingTree::scrollingCoordinatorProxy const): Deleted.
* Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingTreeIOS.cpp:
(WebKit::RemoteScrollingTreeIOS::scrollingTreeNodeWillStartPanGesture):
(WebKit::RemoteScrollingTreeIOS::scrollingTreeNodeWillStartScroll):
(WebKit::RemoteScrollingTreeIOS::scrollingTreeNodeDidEndScroll):
* Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:
(WebKit::ScrollingTreeScrollingNodeDelegateIOS::handleAsynchronousCancelableScrollEvent):
(WebKit::ScrollingTreeScrollingNodeDelegateIOS::findActingScrollParent):
(WebKit::ScrollingTreeScrollingNodeDelegateIOS::cancelPointersForGestureRecognizer):
* Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteScrollingTreeMac.mm:
(WebKit::RemoteScrollingTreeMac::hasNodeWithAnimatedScrollChanged):

Canonical link: https://commits.webkit.org/260898@main




More information about the webkit-changes mailing list