[webkit-changes] [WebKit/WebKit] 72773d: [UI-side compositing] History swipe on pages with ...

Simon Fraser noreply at github.com
Thu Feb 16 23:08:07 PST 2023


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

  Changed paths:
    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

  Log Message:
  -----------
  [UI-side compositing] History swipe on pages with horizontal scrollers doesn't work
https://bugs.webkit.org/show_bug.cgi?id=252446
rdar://105525566

Reviewed by Tim Horton.

History swipes only happen if a gesture won't result in a scroll on the page, so on
pages that could potentially horizontally scroll, we need to tell the ViewGestureRecognizer
that the wheel event was never handled. For non-UI-side compositing, this happened via
`WebPageProxy::didReceiveEvent()`. For UI-side compositing, we need to run equivalent
code from WebPageProxy::handleWheelEvent() when the UI-side scrolling coordinator does
not handle the event.

We also need to push the "rubberbandable edges" state onto the ScrollingTree, just
like EventDispatcher does. These data reflect whether rubberbanding is allowed on an
edge, which is a combination of what the client wants (e.g. Safari's Continuous Reading List
can disable top and bottom rubberbanding), and whether there is a history item to swipe to.

Tested by swipe/pushstate-with-manual-scrollrestoration.html

* 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::wheelEventWasNotHandled):
(WebKit::WebPageProxy::rubberBandableEdgesRespectingHistorySwipe const):
(WebKit::WebPageProxy::didReceiveEvent):
* Source/WebKit/UIProcess/WebPageProxy.h:

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




More information about the webkit-changes mailing list