Branch: refs/heads/webkitglib/2.54
Home: https://github.com/WebKit/WebKit
Commit: 43b70b3fd2dbb443b41d8350f6fd3d47925433aa
https://github.com/WebKit/WebKit/commit/43b70b3fd2dbb443b41d8350f6fd3d47925433aa
Author: Fujii Hironori <[email protected]>
Date: 2026-10-05 (Mon, 05 Oct 2026)
Changed paths:
A LayoutTests/fast/events/touch/coalesced-multi-touch-moves-expected.txt
A LayoutTests/fast/events/touch/coalesced-multi-touch-moves.html
M LayoutTests/platform/glib/TestExpectations
M LayoutTests/platform/gtk/TestExpectations
M LayoutTests/platform/wpe-legacy-api/TestExpectations
M LayoutTests/platform/wpe/TestExpectations
M Source/WebKit/Shared/NativeWebTouchEvent.h
M Source/WebKit/Shared/WebTouchEvent.cpp
M Source/WebKit/Shared/WebTouchEvent.h
M Source/WebKit/UIProcess/WebPageProxy.cpp
Log Message:
-----------
Cherry-pick 322268@main (121313328dfb).
https://bugs.webkit.org/show_bug.cgi?id=324144
REGRESSION(319347@main): [GTK][WPE] multi touch move events are choppy
https://bugs.webkit.org/show_bug.cgi?id=324144
Reviewed by Nikolas Zimmermann.
319347@main coalesced touch moves in the UI process by keeping the queued
touch move and deferring the incoming ones, which are never sent to the web
process. So the page only got the oldest touch move of a burst, with stale
positions.
GTK and WPE send one touch event per moved finger, marking only that touch
point as Moved and the others as Stationary. Keeping the oldest event thus
also
dropped the movement of the other fingers from TouchEvent.changedTouches,
making multi touch moves choppy.
Coalesce the other way round: the incoming touch move replaces the queued
one,
and inherits the Moved state of its touch points. The first queued event is
already in flight, so it is never replaced. The replaced events are older
than
the sent one, so report them to the page client first.
The iOS port doesn't need to merge the Moved state. It doesn't use this code
path and coalesces touch moves in the web process instead, and each of its
touch
events carries all the touch points with their up-to-date phases. So
dropping an
older touch move there only drops intermediate positions.
Test: fast/events/touch/coalesced-multi-touch-moves.html
* LayoutTests/fast/events/touch/coalesced-multi-touch-moves-expected.txt:
Added.
* LayoutTests/fast/events/touch/coalesced-multi-touch-moves.html: Added.
* LayoutTests/platform/wpe-legacy-api/TestExpectations:
* Source/WebKit/Shared/WebTouchEvent.cpp:
(WebKit::WebTouchEvent::mergeMovedTouchPointsFrom):
* Source/WebKit/Shared/WebTouchEvent.h:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::processNextQueuedTouchEvent):
(WebKit::WebPageProxy::handleTouchEvent):
Canonical link: https://commits.webkit.org/322268@main
Canonical link: https://commits.webkit.org/317695.400@webkitglib/2.54
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications