[Webkit-unassigned] [Bug 244635] New: [GLIB] Last end wheelEvent (phase=ended) has to be manipulated by the scrollingTree if still userScrollInProgress=True
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Wed Aug 31 14:44:02 PDT 2022
https://bugs.webkit.org/show_bug.cgi?id=244635
Bug ID: 244635
Summary: [GLIB] Last end wheelEvent (phase=ended) has to be
manipulated by the scrollingTree if still
userScrollInProgress=True
Product: WebKit
Version: WebKit Nightly Build
Hardware: Unspecified
OS: Linux
Status: NEW
Severity: Normal
Priority: P2
Component: WebKit2
Assignee: webkit-unassigned at lists.webkit.org
Reporter: psaavedra at igalia.com
CC: kkinnunen at apple.com
... on the contrary, the kinetic animation associated to the touch gesture will be inhibited and discarded since none event satisfying the "event.isEndOfNonMomentumScroll()" will be processed by the "ScrollingEffectsController::processWheelEventForKineticScrolling()".
The "ScrollingEffectsController::processWheelEventForKineticScrolling()" is called inside of the "scrollingTree->handleWheelEvent(platformWheelEvent, processingSteps);" on the "ScrollingThread::dispatch()" of the "void EventDispatcher::internalWheelEvent()" in Source/WebKit/WebProcess/WebPage/EventDispatcher.cpp
Therefore, for the GLIB ports, we need to rely the PlatformWheelEventPhase::Ended events to the scrollingTree is still a user scroll action is on going like we already do this for the PlatformWheelEventPhase::Changed.
This is the current behavior:
```
XXX: Source/WebKit/UIProcess/API/wpe/TouchGestureController.cpp - wpe_input_touch_event_type_up - axis
ScrollingTree::determineWheelEventProcessing: wheelEvent PlatformWheelEvent 0x7fc7649573b0 at (640,323) deltaX 0.00 deltaY 0.00 phase "ended" momentum phase "none" velocity width=0 height=0 mapped to content point (640,323), in non-fast region 1
ScrollingTree::determineWheelEventProcessing: processingSteps [main thread scrolling, main thread blocking DOM event dispatch]
XXX: ScrollingThread::dispatch():
...
if (useMainThreadForScrolling) { /* This will be True */
scrollingTree->willSendEventToMainThread(platformWheelEvent);
protectedThis->dispatchWheelEventViaMainThread(pageID, wheelEvent, processingSteps, wheelEventOrigin); /* The event is processed via MainThread. The ScrollingTree will be not involved */
scrollingTree->waitForEventToBeProcessedByMainThread(platformWheelEvent);
return;
}
...
XXX: void EventHandler::defaultWheelEventHandler()
XXX: void EventHandler::defaultWheelEventHandler()
XXX: EventHandler::handleWheelEventInAppropriateEnclosingBox()
```
And this second trace is the expected behavior (after apply the patch associated to the bug):
```
XXXX: Source/WebKit/UIProcess/API/wpe/TouchGestureController.cpp - wpe_input_touch_event_type_up - axis
ScrollingTree::determineWheelEventProcessing: wheelEvent PlatformWheelEvent 0x7fae221833b0 at (537,358) deltaX 0.00 deltaY 0.00 phase "ended" momentum phase "none" velocity width=0 height=0 mapped to content point (537,358), in non-fast region 1
ScrollingTree::determineWheelEventProcessing: processingSteps [main thread scrolling, main thread blocking DOM event dispatch]
XXX ScrollingThread::dispatch():
...
scrollingTree->willProcessWheelEvent(); /* Since useMainThreadForScrolling = false; because the changes applied in the patch*/
...
ScrollingTree 0x7fae6315b700 handleWheelEvent PlatformWheelEvent 0x7fae63016f90 at (537,358) deltaX 0.00 deltaY 0.00 phase "ended" momentum phase "none" velocity width=0 height=0
ScrollingTree::handleWheelEvent found node 85 for point (537,358)
XXX: Source/WebCore/page/scrolling/nicosia/ScrollingTreeScrollingNodeDelegateNicosia.cpp - WheelEventHandlingResult ScrollingTreeScrollingNodeDelegateNicosia::handleWheelEvent() --- bool handled = scrollingNode().canHandleWheelEvent(wheelEvent, eventTargeting) && m_scrollController.handleWheelEvent(wheelEvent)
XXX: scrollingNode().canHandleWheelEvent(wheelEvent, eventTargeting): 1
XXX: Source/WebCore/platform/ScrollingEffectsController.cpp - bool ScrollingEffectsController::handleWheelEvent()
...
XXX: bool ScrollingEffectsController::processWheelEventForKineticScrolling() - event.isEndOfNonMomentumScroll() - 1
XXX: bool ScrollingEffectsController::processWheelEventForKineticScrolling() - event.isTransitioningToMomentumScroll() - 0
XXX: bool ScrollingEffectsController::processWheelEventForKineticScrolling() - event.isEndOfNonMomentumScroll() || event.isTransitioningToMomentumScroll()
...
XXX: bool ScrollingEffectsController::processWheelEventForKineticScrolling() - kineticAnimation.appendToScrollHistory(m_scrollHistory.takeFirst()) - m_scrollHistory = 0x7fac709882d0
XXX: ScrollAnimationKinetic::appendToScrollHistory(const PlatformWheelEvent& event)
XXX: ScrollAnimationKinetic::appendToScrollHistory(const PlatformWheelEvent& event) - append - event.m_deltaX(): 0.000000 - event.m_deltaY(): 54.000000
XXX: bool ScrollingEffectsController::processWheelEventForKineticScrolling() - kineticAnimation.appendToScrollHistory(m_scrollHistory.takeFirst()) - m_scrollHistory = 0x7fac709882d0
... (the kinetic events generated during kinetic animation being appended to the Scroll History)
XXX: ScrollAnimationKinetic::appendToScrollHistory(const PlatformWheelEvent& event)
XXX: ScrollAnimationKinetic::appendToScrollHistory(const PlatformWheelEvent& event) - append - event.m_deltaX(): 0.000000 - event.m_deltaY(): 0.000000
XXX: bool ScrollingEffectsController::processWheelEventForKineticScrolling() - event.isEndOfNonMomentumScroll
XXX: bool ScrollAnimationKinetic::startAnimatedScrollWithInitialVelocity - velocity= width=0 height=-3577.46
```
Related to: [GLIB] twitch.tv forces synchronous scrolling - https://bugs.webkit.org/show_bug.cgi?id=232376 - <rdar://problem/85247010>
--
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20220831/2b9d07ff/attachment-0001.htm>
More information about the webkit-unassigned
mailing list