Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 815e52db702d462eca13cb99c5869d1787460d5b https://github.com/WebKit/WebKit/commit/815e52db702d462eca13cb99c5869d1787460d5b Author: Simon Fraser <simon.fra...@apple.com> Date: 2022-12-20 (Tue, 20 Dec 2022)
Changed paths: M Source/WebCore/page/FrameView.cpp M Source/WebCore/page/scrolling/ScrollingCoordinator.h M Source/WebCore/page/scrolling/ThreadedScrollingCoordinator.cpp M Source/WebCore/page/scrolling/ThreadedScrollingCoordinator.h M Source/WebCore/rendering/RenderLayerScrollableArea.cpp M Source/WebKit/Shared/WebWheelEventCoalescer.cpp M Source/WebKit/Shared/WebWheelEventCoalescer.h M Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h M Source/WebKit/UIProcess/DrawingAreaProxy.h 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 Source/WebKit/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h M Source/WebKit/WebProcess/WebPage/WebPage.cpp M Source/WebKit/WebProcess/WebPage/WebPage.h M Source/WebKit/WebProcess/WebPage/WebPage.messages.in Log Message: ----------- [UI-side compositing] Wheel events sent to the web process need to sometimes trigger scrolling https://bugs.webkit.org/show_bug.cgi?id=249613 rdar://103534392 Reviewed by Brent Fulgham. `ScrollingTree::handleWheelEvent()` returns a `WheelEventHandlingResult` which contains a set of `WheelEventProcessingSteps` which say what processing remains for the event (e.g. main thread scrolling, DOM event dispatch). When the UI process ScrollingTree handles an event, we need to send the `WheelEventProcessingSteps` to the web process so that the remaining steps are handled there. So have `RemoteScrollingCoordinatorProxy::handleWheelEvent()` return a WheelEventHandlingResult, and associate the WheelEventProcessingSteps with a WebWheelEvent which will get sent by WebPageProxy to the web process. Unfortunately WebWheelEventCoalescer gets a little messy, since it deals with both WebWheelEvent (used for coalesced events with no corresponding native event) and its subclass NativeWebWheelEvent, but essentially we can only coalesce events that have the same WheelEventProcessingSteps. WebPageProxy::sendWheelEvent() also needs to know if it should send events to WebKit::EventDispatcher (the non-UI-side compositing code path) or WebPage, so add a way for it to ask the DrawingAreaProxy which route to take. * Source/WebCore/page/FrameView.cpp: (WebCore::FrameView::handleWheelEventForScrolling): * Source/WebCore/page/scrolling/ScrollingCoordinator.h: (WebCore::ScrollingCoordinator::handleWheelEventForScrolling): * Source/WebCore/page/scrolling/ThreadedScrollingCoordinator.cpp: (WebCore::ThreadedScrollingCoordinator::handleWheelEventForScrolling): * Source/WebCore/page/scrolling/ThreadedScrollingCoordinator.h: * Source/WebCore/rendering/RenderLayerScrollableArea.cpp: (WebCore::RenderLayerScrollableArea::handleWheelEventForScrolling): * Source/WebKit/Shared/WebWheelEventCoalescer.cpp: (WebKit::operator<<): (WebKit::WebWheelEventCoalescer::canCoalesce): (WebKit::WebWheelEventCoalescer::coalesce): (WebKit::WebWheelEventCoalescer::nextEventToDispatch): (WebKit::WebWheelEventCoalescer::shouldDispatchEvent): (WebKit::WebWheelEventCoalescer::takeOldestEventBeingProcessed): * Source/WebKit/Shared/WebWheelEventCoalescer.h: (WebKit::WebWheelEventAndSteps::WebWheelEventAndSteps): * Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h: * Source/WebKit/UIProcess/DrawingAreaProxy.h: (WebKit::DrawingAreaProxy::shouldSendWheelEventsToEventDispatcher const): * Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp: (WebKit::RemoteScrollingCoordinatorProxy::handleWheelEvent): * Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h: * Source/WebKit/UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::handleWheelEvent): (WebKit::WebPageProxy::sendWheelEvent): (WebKit::WebPageProxy::didReceiveEvent): * Source/WebKit/UIProcess/WebPageProxy.h: * Source/WebKit/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h: * Source/WebKit/WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::handleWheelEvent): (WebKit::WebPage::wheelEvent): (WebKit::handleWheelEvent): Deleted. * Source/WebKit/WebProcess/WebPage/WebPage.h: * Source/WebKit/WebProcess/WebPage/WebPage.messages.in: Canonical link: https://commits.webkit.org/258145@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes