Bug 193962

Summary: Dispatch pointercancel events when content is panned or zoomed on iOS
Product: WebKit Reporter: Antoine Quint <graouts>
Component: DOMAssignee: Antoine Quint <graouts>
Status: RESOLVED FIXED    
Severity: Normal CC: cdumez, dbates, dino, esprehn+autocc, ews-watchlist, kangil.han, samuelmtimbo, simon.fraser, thorton, webkit-bug-importer, wenson_hsieh
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch dino: review+

Antoine Quint
Reported 2019-01-29 04:07:39 PST
When a UA gesture starts, we should dispatch a pointercancel event and stop dispatching more pointer events for all of the touch identifiers involved in that gesture.
Attachments
Patch (32.95 KB, patch)
2019-01-31 14:05 PST, Antoine Quint
dino: review+
Radar WebKit Bug Importer
Comment 1 2019-01-29 04:08:00 PST
Antoine Quint
Comment 2 2019-01-31 14:05:39 PST
Dean Jackson
Comment 3 2019-01-31 14:30:25 PST
Comment on attachment 360774 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=360774&action=review > Source/WebCore/ChangeLog:11 > + has been cancelled, which is important because a cancelled pointer should no longer dispatch any further pointer events, and > + to cancel a pointer. did you mean cancel the capture? > Source/WebCore/dom/PointerEvent.h:59 > + static Ref<PointerEvent> create(const AtomicString& type, int32_t pointerId, String pointerType) We really need PointerID to be a type somewhere. > Source/WebCore/page/PointerCaptureController.h:59 > + String pointerType; This should be an enum by this point. It probably should be an enum on PointerEvent too.
Antoine Quint
Comment 4 2019-01-31 14:32:58 PST
(In reply to Dean Jackson from comment #3) > Comment on attachment 360774 [details] > Patch > > View in context: > https://bugs.webkit.org/attachment.cgi?id=360774&action=review > > > Source/WebCore/ChangeLog:11 > > + has been cancelled, which is important because a cancelled pointer should no longer dispatch any further pointer events, and > > + to cancel a pointer. > > did you mean cancel the capture? No, there is one new method to check whether a pointer has been cancelled, and one to cancel it. > > Source/WebCore/dom/PointerEvent.h:59 > > + static Ref<PointerEvent> create(const AtomicString& type, int32_t pointerId, String pointerType) > > We really need PointerID to be a type somewhere. Agreed. What's the best way to achieve this? > > Source/WebCore/page/PointerCaptureController.h:59 > > + String pointerType; > > This should be an enum by this point. It probably should be an enum on > PointerEvent too. I'd like to address this as a followup.
Antoine Quint
Comment 5 2019-02-01 13:53:58 PST
Lucas Forschler
Comment 6 2019-02-06 09:18:46 PST
Mass move bugs into the DOM component.
Samuel
Comment 7 2020-11-18 07:33:45 PST
I have been experiencing exactly this issue on iOS (13 and 14) (iPad Pro) for a while. When I start panning (scrolling) an overflown list, "pointerdown" is fired but there is no subsequent "pointercancel". This page demonstrates the problem: https://abiding-vigorous-bill.glitch.me/
Samuel
Comment 8 2020-11-24 23:06:00 PST
(In reply to Samuel from comment #7) > I have been experiencing exactly this issue on iOS (13 and 14) (iPad Pro) > for a while. When I start panning (scrolling) an overflown list, > "pointerdown" is fired but there is no subsequent "pointercancel". > > This page demonstrates the problem: > > https://abiding-vigorous-bill.glitch.me/ Forget about this comment. My mistake.
Note You need to log in before you can comment on or make changes to this bug.