WebKit Bugzilla
Attachment 370222 Details for
Bug 197909
: [Pointer Events] A pointer should be marked as primary for all of its events
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-197909-20190519190430.patch (text/plain), 9.57 KB, created by
Antoine Quint
on 2019-05-19 11:04:32 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Antoine Quint
Created:
2019-05-19 11:04:32 PDT
Size:
9.57 KB
patch
obsolete
>Subversion Revision: 245483 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index c27503dce93752d06f53324e2b108fc5c0348293..d5e68ca8133b2ffe867c4207ce05562c7bcb89d7 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,16 @@ >+2019-05-19 Antoine Quint <graouts@apple.com> >+ >+ [Pointer Events] A pointer should be marked as primary for all of its events >+ https://bugs.webkit.org/show_bug.cgi?id=197909 >+ <rdar://problem/50801608> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Add an ivar for EventHandler which we'll use in WebKitAdditions code to track the touch identifier >+ of the very first touch to start in a given sequence. >+ >+ * page/EventHandler.h: >+ > 2019-05-17 Antoine Quint <graouts@apple.com> > > Add a website policy to disable the legacy -webkit-overflow-scrolling:touch behavior >diff --git a/Source/WebCore/page/EventHandler.h b/Source/WebCore/page/EventHandler.h >index f6c3fc816dbc82e05ea9189d05e6e442e7024ef1..2bd3deb72c20fb2dbf4d9d191460a12a1c584f1a 100644 >--- a/Source/WebCore/page/EventHandler.h >+++ b/Source/WebCore/page/EventHandler.h >@@ -614,6 +614,10 @@ private: > unsigned touchIdentifierForMouseEvents { 0 }; > #endif > >+#if ENABLE(POINTER_EVENTS) && ENABLE(IOS_TOUCH_EVENTS) >+ unsigned m_touchIdentifierForPrimaryTouch { 0 }; >+#endif >+ > double m_maxMouseMovedDuration { 0 }; > bool m_didStartDrag { false }; > bool m_isHandlingWheelEvent { false }; >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index c1d7ed1c165fcdca04c3114b6f0b7166b4eb3e4f..e20b9cf46cb0f4dcff3db126c51709df98a8836a 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,20 @@ >+2019-05-19 Antoine Quint <graouts@apple.com> >+ >+ [Pointer Events] A pointer should be marked as primary for all of its events >+ https://bugs.webkit.org/show_bug.cgi?id=197909 >+ <rdar://problem/50801608> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Update tests to match expectations that only the first touch of a sequence is the primary pointer, >+ which applies to all of its events, even after the even is no longer touching the digitizer. >+ >+ * pointerevents/ios/over-enter-out-leave.html: >+ * pointerevents/ios/pointer-event-order.html: >+ * pointerevents/ios/pointer-events-implicit-capture.html: >+ * pointerevents/ios/pointer-events-is-primary-expected.txt: >+ * pointerevents/ios/pointer-events-is-primary.html: >+ > 2019-05-17 Antoine Quint <graouts@apple.com> > > Add a website policy to disable the legacy -webkit-overflow-scrolling:touch behavior >diff --git a/LayoutTests/pointerevents/ios/over-enter-out-leave.html b/LayoutTests/pointerevents/ios/over-enter-out-leave.html >index 3643aae7a527d7dd660afefa62ab113eb746999b..69bfd51bfa4f60452346bed02fd5fdb5d103bdc6 100644 >--- a/LayoutTests/pointerevents/ios/over-enter-out-leave.html >+++ b/LayoutTests/pointerevents/ios/over-enter-out-leave.html >@@ -23,9 +23,9 @@ target_test({ width: "200px", height: "200px" }, (target, test) => { > { type: "pointerover", x: 100, y: 100, isPrimary: true }, > { type: "pointerenter", x: 100, y: 100, isPrimary: true }, > { type: "pointerdown", x: 100, y: 100, isPrimary: true }, >- { type: "pointerup", x: 100, y: 100, isPrimary: false }, >- { type: "pointerout", x: 100, y: 100, isPrimary: false }, >- { type: "pointerleave", x: 100, y: 100, isPrimary: false }, >+ { type: "pointerup", x: 100, y: 100, isPrimary: true }, >+ { type: "pointerout", x: 100, y: 100, isPrimary: true }, >+ { type: "pointerleave", x: 100, y: 100, isPrimary: true }, > ]); > test.done(); > }); >diff --git a/LayoutTests/pointerevents/ios/pointer-event-order.html b/LayoutTests/pointerevents/ios/pointer-event-order.html >index 61576304fbc1f3d9e06444d343d627975a7f49a9..180603dfd36ac5a1dfb130d830949100d3e44b29 100644 >--- a/LayoutTests/pointerevents/ios/pointer-event-order.html >+++ b/LayoutTests/pointerevents/ios/pointer-event-order.html >@@ -20,9 +20,9 @@ target_test({ width: "200px", height: "200px" }, (target, test) => { > { type: "pointerover", x: 100, y: 100, isPrimary: true }, > { type: "pointerenter", x: 100, y: 100, isPrimary: true }, > { type: "pointerdown", x: 100, y: 100, isPrimary: true }, >- { type: "pointerup", x: 100, y: 100, isPrimary: false }, >- { type: "pointerout", x: 100, y: 100, isPrimary: false }, >- { type: "pointerleave", x: 100, y: 100, isPrimary: false }, >+ { type: "pointerup", x: 100, y: 100, isPrimary: true }, >+ { type: "pointerout", x: 100, y: 100, isPrimary: true }, >+ { type: "pointerleave", x: 100, y: 100, isPrimary: true }, > { type: "click", x: 100, y: 100 }, > ]); > test.done(); >diff --git a/LayoutTests/pointerevents/ios/pointer-events-implicit-capture.html b/LayoutTests/pointerevents/ios/pointer-events-implicit-capture.html >index 6962f45b450a523971c0ebc5c42815010f83e8a8..c2d66833281237f0f6d99147cf4002d067ea879f 100644 >--- a/LayoutTests/pointerevents/ios/pointer-events-implicit-capture.html >+++ b/LayoutTests/pointerevents/ios/pointer-events-implicit-capture.html >@@ -34,7 +34,7 @@ target_test((target, test) => { > { id: 1, type: "pointermove" }, > { id: 2, type: "pointermove" }, > { id: 1, type: "pointerup" }, >- { id: 1, type: "lostpointercapture", isPrimary: false }, >+ { id: 1, type: "lostpointercapture", isPrimary: true }, > { id: 2, type: "pointerup" }, > { id: 2, type: "lostpointercapture", isPrimary: false } > ]); >diff --git a/LayoutTests/pointerevents/ios/pointer-events-is-primary-expected.txt b/LayoutTests/pointerevents/ios/pointer-events-is-primary-expected.txt >index d522456056baf1e127e3e006495b25b5ad3ef2b7..e6cc551a3862a8d0a3900aeb6f32d8027d335580 100644 >--- a/LayoutTests/pointerevents/ios/pointer-events-is-primary-expected.txt >+++ b/LayoutTests/pointerevents/ios/pointer-events-is-primary-expected.txt >@@ -1,3 +1,3 @@ > >-PASS Oldest active touch has isPrimary = true. >+PASS The first touch of a touch sequence has isPrimary = true. > >diff --git a/LayoutTests/pointerevents/ios/pointer-events-is-primary.html b/LayoutTests/pointerevents/ios/pointer-events-is-primary.html >index 3738e3a3c280e387aa72d89073710da34827de6e..fd992bf51c3cb588a9524d9ed88f28f02b2a2182 100644 >--- a/LayoutTests/pointerevents/ios/pointer-events-is-primary.html >+++ b/LayoutTests/pointerevents/ios/pointer-events-is-primary.html >@@ -14,10 +14,11 @@ > > target_test((target, test) => { > target.style.touchAction = "none"; >- const eventTracker = new EventTracker(target, ["pointerdown", "pointermove"]); >+ const eventTracker = new EventTracker(target, ["pointerover", "pointerenter", "pointerdown", "pointermove", "pointerup", "pointerout", "pointerleave"]); > > const one = ui.finger(); > const two = ui.finger(); >+ const three = ui.finger(); > ui.sequence([ > one.begin({ x: 10, y: 10 }), > two.begin({ x: 50, y: 50 }), >@@ -25,18 +26,45 @@ target_test((target, test) => { > one.move({ x: 30, y: 30 }), > one.end(), > two.move({ x: 50, y: 50 }), >- two.end() >+ two.end(), >+ three.begin({ x: 10, y: 10 }), >+ three.end(), > ]).then(() => { > eventTracker.assertMatchesEvents([ >+ // Yielded by one.begin({ x: 10, y: 10 }). >+ { id: 1, type: "pointerover", x: 10, y: 10, isPrimary: true }, >+ { id: 1, type: "pointerenter", x: 10, y: 10, isPrimary: true }, > { id: 1, type: "pointerdown", x: 10, y: 10, isPrimary: true }, >+ // Yielded by two.begin({ x: 50, y: 50 }). >+ { id: 2, type: "pointerover", x: 50, y: 50, isPrimary: false }, >+ { id: 2, type: "pointerenter", x: 50, y: 50, isPrimary: false }, > { id: 2, type: "pointerdown", x: 50, y: 50, isPrimary: false }, >+ // Yielded by two.move({ x: 70, y: 70 }). > { id: 2, type: "pointermove", x: 70, y: 70, isPrimary: false }, >+ // Yielded by one.move({ x: 30, y: 30 }). > { id: 1, type: "pointermove", x: 30, y: 30, isPrimary: true }, >- { id: 2, type: "pointermove", x: 50, y: 50, isPrimary: true } >+ // Yielded by one.end(). >+ { id: 1, type: "pointerup", x: 30, y: 30, isPrimary: true }, >+ { id: 1, type: "pointerout", x: 30, y: 30, isPrimary: true }, >+ { id: 1, type: "pointerleave", x: 30, y: 30, isPrimary: true }, >+ // Yielded by two.move({ x: 50, y: 50 }). >+ { id: 2, type: "pointermove", x: 50, y: 50, isPrimary: false }, >+ // Yielded by two.end(). >+ { id: 2, type: "pointerup", x: 50, y: 50, isPrimary: false }, >+ { id: 2, type: "pointerout", x: 50, y: 50, isPrimary: false }, >+ { id: 2, type: "pointerleave", x: 50, y: 50, isPrimary: false }, >+ // Yielded by three.begin({ x: 10, y: 10 }). >+ { id: 3, type: "pointerover", x: 10, y: 10, isPrimary: true }, >+ { id: 3, type: "pointerenter", x: 10, y: 10, isPrimary: true }, >+ { id: 3, type: "pointerdown", x: 10, y: 10, isPrimary: true }, >+ // Yielded by three.end(). >+ { id: 3, type: "pointerup", x: 10, y: 10, isPrimary: true }, >+ { id: 3, type: "pointerout", x: 10, y: 10, isPrimary: true }, >+ { id: 3, type: "pointerleave", x: 10, y: 10, isPrimary: true }, > ]); > test.done(); > }); >-}, "Oldest active touch has isPrimary = true."); >+}, "The first touch of a touch sequence has isPrimary = true."); > > </script> > </body>
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
dino
:
review+
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 197909
: 370222