[webkit-changes] [WebKit/WebKit] 1bb52f: REGRESSION (UI-side compositing): Scrolling web in...

Nikos Mouchtaris noreply at github.com
Fri Jul 21 11:19:03 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 1bb52fdceac9130525dcb521bb779ee184a392eb
      https://github.com/WebKit/WebKit/commit/1bb52fdceac9130525dcb521bb779ee184a392eb
  Author: Nikolaos Mouchtaris <nmouchtaris at apple.com>
  Date:   2023-07-21 (Fri, 21 Jul 2023)

  Changed paths:
    M Source/WebCore/dom/Element.cpp
    M Source/WebCore/dom/Element.h
    M Source/WebCore/page/LocalDOMWindow.cpp
    M Source/WebCore/page/LocalDOMWindow.h
    M Source/WebCore/page/LocalFrameView.cpp
    M Source/WebCore/page/LocalFrameView.h
    M Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp
    M Source/WebCore/page/scrolling/AsyncScrollingCoordinator.h
    M Source/WebCore/page/scrolling/ScrollingCoordinator.h
    M Source/WebCore/page/scrolling/ScrollingCoordinatorTypes.cpp
    M Source/WebCore/page/scrolling/ScrollingCoordinatorTypes.h
    M Source/WebCore/page/scrolling/ScrollingStateScrollingNode.cpp
    M Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.cpp
    M Source/WebCore/page/scrolling/ThreadedScrollingTree.cpp
    M Source/WebCore/platform/ScrollAnimator.cpp
    M Source/WebCore/platform/ScrollTypes.cpp
    M Source/WebCore/platform/ScrollTypes.h
    M Source/WebCore/platform/ScrollView.cpp
    M Source/WebCore/platform/ScrollableArea.cpp
    M Source/WebCore/platform/ScrollableArea.h
    M Source/WebCore/rendering/RenderLayerScrollableArea.cpp
    M Source/WebCore/rendering/RenderLayerScrollableArea.h
    M Source/WebKit/Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp
    M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in
    M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm
    M Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteScrollingTreeMac.mm

  Log Message:
  -----------
  REGRESSION (UI-side compositing): Scrolling web inspector timeline is very jumpy
https://bugs.webkit.org/show_bug.cgi?id=258319
rdar://107685436

Reviewed by Simon Fraser.

When receiving a wheel event from dispatchEvent, the current design recieves this event
in the web process, and sends this request to the UI-process as a RequestedScrollData
object. This object contained a scrollPosition to animate to, but this was calculated
using the scroll position in the web process. Since this scroll position could be out
of sync with the UI-process while the user was scrolling, this could result in a scroll
to a scroll position behind the current scroll position, leading to a jumpy looking scroll.
To fix this, rather than sending across the scroll position to scroll to, simply send across
the requested scroll delta to the UI-process, and use the UI-process scroll position to
calculate the correct scroll position to animate to. Also, propagate down the original
scroll delta (if it exists), to be used in AsyncScrollingCoordinator::requestScrollToPosition,
so that we know whether to do a delta or scroll position update.

* Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::requestScrollToPosition):
* Source/WebCore/page/scrolling/ScrollingCoordinatorTypes.h:
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:
* Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteScrollingTreeMac.mm:
(WebKit::RemoteScrollingTreeMac::startPendingScrollAnimations):

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




More information about the webkit-changes mailing list