[webkit-changes] [WebKit/WebKit] e505e7: Send "isMonitoringWheelEvents" to the UI process
Simon Fraser
noreply at github.com
Fri Dec 16 10:25:04 PST 2022
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: e505e7f1c203bf380dd18140c0dbb834f970b76c
https://github.com/WebKit/WebKit/commit/e505e7f1c203bf380dd18140c0dbb834f970b76c
Author: Simon Fraser <simon.fraser at apple.com>
Date: 2022-12-16 (Fri, 16 Dec 2022)
Changed paths:
M Source/WebCore/page/scrolling/ScrollingTree.h
M Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h
M Source/WebKit/UIProcess/API/Cocoa/WKWebViewTesting.mm
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/UIProcess/WebPageProxy.h
M Tools/WebKitTestRunner/EventSenderProxy.h
M Tools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp
M Tools/WebKitTestRunner/InjectedBundle/ios/EventSenderProxyIOS.mm
M Tools/WebKitTestRunner/TestController.cpp
M Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp
M Tools/WebKitTestRunner/libwpe/EventSenderProxyLibWPE.cpp
M Tools/WebKitTestRunner/mac/EventSenderProxy.mm
M Tools/WebKitTestRunner/win/EventSenderProxyWin.cpp
Log Message:
-----------
Send "isMonitoringWheelEvents" to the UI process
https://bugs.webkit.org/show_bug.cgi?id=249450
rdar://103434051
Reviewed by Brent Fulgham.
A test can do:
eventSender.monitorWheelEvents();
eventSender.mouseScrollByWithWheelAndMomentumPhases(0, -1, 'began', 'none');
which means that we need to be able to start monitoring wheel events (in the
UI process if UI-side compositing is enabled) before the IPC to synthesize the
first wheel event is received.
Code exists to update the "isMonitoringWheelEvents" state on ScrollingTree via
scrolling tree commits (which reach the UI process after each rendering update),
but that's too late for this case; we need a direct IPC call.
So when EventSender::monitorWheelEvents() is called in the web process, post
an "EventSender" message which is handled by TestController::didReceiveMessageFromInjectedBundle()
and passed to EventSenderProxy, which gets it to RemoteScrollingCoordinatorProxy via
WKWebView testing SPI, and WebPageProxy. RemoteScrollingCoordinatorProxy can then set
state on the ScrollingTree in the UI process.
* Source/WebCore/page/scrolling/ScrollingTree.h:
(WebCore::ScrollingTree::setIsMonitoringWheelEvents):
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewTesting.mm:
(-[WKWebView _startMonitoringWheelEvents]):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:
(WebKit::RemoteScrollingCoordinatorProxy::startMonitoringWheelEventsForTesting):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::startMonitoringWheelEventsForTesting):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Tools/WebKitTestRunner/EventSenderProxy.h:
* Tools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
(WTR::EventSendingController::monitorWheelEvents):
* Tools/WebKitTestRunner/InjectedBundle/ios/EventSenderProxyIOS.mm:
(WTR::EventSenderProxy::monitorWheelEvents):
* Tools/WebKitTestRunner/TestController.cpp:
(WTR::TestController::didReceiveMessageFromInjectedBundle):
* Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:
(WTR::EventSenderProxy::monitorWheelEvents):
* Tools/WebKitTestRunner/libwpe/EventSenderProxyLibWPE.cpp:
(WTR::EventSenderProxy::monitorWheelEvents):
* Tools/WebKitTestRunner/mac/EventSenderProxy.mm:
(WTR::EventSenderProxy::monitorWheelEvents):
* Tools/WebKitTestRunner/win/EventSenderProxyWin.cpp:
(WTR::EventSenderProxy::monitorWheelEvents):
Canonical link: https://commits.webkit.org/258002@main
More information about the webkit-changes
mailing list