[webkit-changes] [WebKit/WebKit] 69b12c: Get WheelEventTestMonitor out of ScrollingTree

Simon Fraser noreply at github.com
Fri Dec 16 19:19:38 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 69b12c5f50b343cd28d0300a828947acbec88988
      https://github.com/WebKit/WebKit/commit/69b12c5f50b343cd28d0300a828947acbec88988
  Author: Simon Fraser <simon.fraser at apple.com>
  Date:   2022-12-16 (Fri, 16 Dec 2022)

  Changed paths:
    M Source/WebCore/page/EventHandler.cpp
    M Source/WebCore/page/WheelEventTestMonitor.cpp
    M Source/WebCore/page/WheelEventTestMonitor.h
    M Source/WebCore/page/scrolling/ScrollingCoordinator.cpp
    M Source/WebCore/page/scrolling/ScrollingCoordinator.h
    M Source/WebCore/page/scrolling/ScrollingTree.cpp
    M Source/WebCore/page/scrolling/ScrollingTree.h
    M Source/WebCore/page/scrolling/ThreadedScrollingCoordinator.cpp
    M Source/WebCore/page/scrolling/ThreadedScrollingCoordinator.h
    M Source/WebCore/page/scrolling/ThreadedScrollingTree.cpp
    M Source/WebCore/page/scrolling/ThreadedScrollingTree.h
    M Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm
    M Source/WebCore/page/scrolling/nicosia/ScrollingTreeScrollingNodeDelegateNicosia.cpp
    M Source/WebCore/platform/PlatformWheelEvent.cpp
    M Source/WebCore/platform/PlatformWheelEvent.h

  Log Message:
  -----------
  Get WheelEventTestMonitor out of ScrollingTree
https://bugs.webkit.org/show_bug.cgi?id=249443
<rdar://problem/103427202>

Reviewed by Tim Horton.

WheelEventTestMonitor is used by layout tests that use
`monitorWheelEvents()/waitForScrollCompletion()`. To make these tests work with UI-side
compositing, we have to send defer/removeDeferral messages from the UI process to the
Page-owned WheelEventTestMonitor in the web process, so ScrollingTree can't have a
reference to the Page's WheelEventTestMonitor as it does now.

So remove ScrollingTree's reference to WheelEventTestMonitor, and send messages via the
ScrollingCoordinator to the Page's WheelEventTestMonitor.

Add ScrollingTreeWheelEventTestMonitorCompletionDeferrer as a convenience RAII class
that starts/stops deferral given a ScrollingTree, ScrollingNodeID and reason.

Also change `receivedWheelEvent(const PlatformWheelEvent&)` to
`receivedWheelEventWithPhases(PlatformWheelEventPhase, PlatformWheelEventPhase)` so we
don't have to IPC-encode PlatformWheelEvent when a future patch sends this back from the
UI process to the web process. To reduce #ifdeffing, expose PlatformWheelEventPhase for
non-ENABLE(KINETIC_SCROLLING) platforms, but just with the `None` value.

* Source/WebCore/page/EventHandler.cpp:
(WebCore::EventHandler::handleWheelEventInternal):
* Source/WebCore/page/WheelEventTestMonitor.cpp:
(WebCore::WheelEventTestMonitor::receivedWheelEventWithPhases):
(WebCore::WheelEventTestMonitor::receivedWheelEvent): Deleted.
* Source/WebCore/page/WheelEventTestMonitor.h:
* Source/WebCore/page/scrolling/ScrollingCoordinator.cpp:
(WebCore::ScrollingCoordinator::receivedWheelEventWithPhases):
(WebCore::ScrollingCoordinator::deferWheelEventTestCompletionForReason):
(WebCore::ScrollingCoordinator::removeWheelEventTestCompletionDeferralForReason):
* Source/WebCore/page/scrolling/ScrollingCoordinator.h:
* Source/WebCore/page/scrolling/ScrollingTree.cpp:
(WebCore::ScrollingTree::handleWheelEvent):
(WebCore::ScrollingTree::receivedWheelEvent): Deleted.
(WebCore::ScrollingTree::deferWheelEventTestCompletionForReason): Deleted.
(WebCore::ScrollingTree::removeWheelEventTestCompletionDeferralForReason): Deleted.
* Source/WebCore/page/scrolling/ScrollingTree.h:
(WebCore::ScrollingTree::receivedWheelEventWithPhases):
(WebCore::ScrollingTree::deferWheelEventTestCompletionForReason):
(WebCore::ScrollingTree::removeWheelEventTestCompletionDeferralForReason):
(WebCore::ScrollingTreeWheelEventTestMonitorCompletionDeferrer::ScrollingTreeWheelEventTestMonitorCompletionDeferrer):
(WebCore::ScrollingTreeWheelEventTestMonitorCompletionDeferrer::~ScrollingTreeWheelEventTestMonitorCompletionDeferrer):
(WebCore::ScrollingTree::wheelEventTestMonitor): Deleted.
(WebCore::ScrollingTree::setWheelEventTestMonitor): Deleted.
* Source/WebCore/page/scrolling/ThreadedScrollingCoordinator.cpp:
(WebCore::ThreadedScrollingCoordinator::startMonitoringWheelEvents):
(WebCore::ThreadedScrollingCoordinator::stopMonitoringWheelEvents): Deleted.
* Source/WebCore/page/scrolling/ThreadedScrollingCoordinator.h:
* Source/WebCore/page/scrolling/ThreadedScrollingTree.cpp:
(WebCore::ThreadedScrollingTree::scrollingTreeNodeDidScroll):
(WebCore::ThreadedScrollingTree::receivedWheelEventWithPhases):
(WebCore::ThreadedScrollingTree::deferWheelEventTestCompletionForReason):
(WebCore::ThreadedScrollingTree::removeWheelEventTestCompletionDeferralForReason):
* Source/WebCore/page/scrolling/ThreadedScrollingTree.h:
* Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm:
(WebCore::ScrollingTreeScrollingNodeDelegateMac::handleWheelEvent):
* Source/WebCore/platform/PlatformWheelEvent.cpp:
(WebCore::operator<<):
* Source/WebCore/platform/PlatformWheelEvent.h:

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




More information about the webkit-changes mailing list