Bug 205446 - Cross-frame pointer events lost when preventing default
Summary: Cross-frame pointer events lost when preventing default
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: UI Events (show other bugs)
Version: Safari 13
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2019-12-19 05:36 PST by Ashley Gullen
Modified: 2019-12-20 10:41 PST (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Ashley Gullen 2019-12-19 05:36:06 PST
Steps to reproduce:
1. Visit https://www.scirra.com/labs/bugs/pointer-frames/frame.html
2. Place a pointer down (using mouse on desktop or touch on mobile) inside the frame on the left, drag to the right outside the frame, and release
3. Observe the events printed in the frame

The frame should see either a pointerup event when releasing, or a pointercancel event when it loses the pointer. Both Firefox and EdgeHTML fire a pointerup event (but Chrome has the same bug).

Instead, the frame receives neither a pointerup or pointercancel event. In more complex web apps, this causes code that tracks pointers to get permanently stuck, since it will never see an event indicating the pointer ended.

This only happens when preventDefault() is called on the pointerdown event. However sometimes this has to be done for unrelated reasons. It should not cause a framed page to lose pointer events.
Comment 1 Ashley Gullen 2019-12-19 05:36:30 PST
Note this also reproduces in Safari TP 97.
Comment 2 Radar WebKit Bug Importer 2019-12-20 10:41:30 PST
<rdar://problem/58119021>