[webkit-changes] [WebKit/WebKit] 20029b: REGRESSION (265781 at main): Horizontal scrolls on an...

Simon Fraser noreply at github.com
Tue Jul 18 22:54:17 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 20029b9283809afd776fd5cd575fdd8a2aa23b60
      https://github.com/WebKit/WebKit/commit/20029b9283809afd776fd5cd575fdd8a2aa23b60
  Author: Simon Fraser <simon.fraser at apple.com>
  Date:   2023-07-18 (Tue, 18 Jul 2023)

  Changed paths:
    M Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h
    M Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeEventDispatcher.cpp
    M Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeEventDispatcher.h
    M Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteScrollingCoordinatorProxyMac.h
    M Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteScrollingCoordinatorProxyMac.mm
    M Source/WebKit/UIProcess/ViewGestureController.cpp
    M Source/WebKit/UIProcess/ViewGestureController.h
    M Source/WebKit/UIProcess/WebPageProxy.cpp

  Log Message:
  -----------
  REGRESSION (265781 at main): Horizontal scrolls on an overflow scroll can trigger history swipe sometimes
https://bugs.webkit.org/show_bug.cgi?id=259302
rdar://112440237

Reviewed by Tim Horton.

265781 at main delayed the call to wheelEventHandlingCompleted*() in WebPageProxy::handleWheelEventReply(),
handing off the event to the scrolling thread for async, post-webcontent processing. However, it also
dropped on the floor the `wasHandledForScrolling || wasHandledByWebProcess` argument, which is what
tells ViewGestureController to not do history swipe. So carry that state along through the
async RemoteScrollingCoordinatorProxyMac processing.

Also improve the swipe logging.

Tested by these tests:
    swipe/swipe-back-with-active-wheel-listener-and-scroller.html
    swipe/swipe-back-with-passive-wheel-listener-and-scroller.html
    swipe/wheel-prevent-default-prevents-swipe-back.html
which now pass with UI-side compositing enabled.

* Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h:
(WebKit::RemoteScrollingCoordinatorProxy::wheelEventHandlingCompleted):
* Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeEventDispatcher.cpp:
(WebKit::RemoteLayerTreeEventDispatcher::wheelEventHandlingCompleted):
* Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeEventDispatcher.h:
* Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteScrollingCoordinatorProxyMac.h:
* Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteScrollingCoordinatorProxyMac.mm:
(WebKit::RemoteScrollingCoordinatorProxyMac::wheelEventHandlingCompleted):
* Source/WebKit/UIProcess/ViewGestureController.cpp:
(WebKit::ViewGestureController::PendingSwipeTracker::stateToString const):
(WebKit::ViewGestureController::PendingSwipeTracker::handleEvent):
(WebKit::ViewGestureController::PendingSwipeTracker::eventWasNotHandledByWebCore):
(WebKit::ViewGestureController::PendingSwipeTracker::tryToStartSwipe):
(WebKit::ViewGestureController::PendingSwipeTracker::reset):
* Source/WebKit/UIProcess/ViewGestureController.h:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::handleWheelEventReply):

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




More information about the webkit-changes mailing list