Log Message
[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 Dean Jackson. Source/WebCore: 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: LayoutTests: 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:
Modified Paths
- trunk/LayoutTests/ChangeLog
- trunk/LayoutTests/pointerevents/ios/over-enter-out-leave.html
- trunk/LayoutTests/pointerevents/ios/pointer-event-order.html
- trunk/LayoutTests/pointerevents/ios/pointer-events-implicit-capture.html
- trunk/LayoutTests/pointerevents/ios/pointer-events-is-primary-expected.txt
- trunk/LayoutTests/pointerevents/ios/pointer-events-is-primary.html
- trunk/Source/WebCore/ChangeLog
- trunk/Source/WebCore/page/EventHandler.h
Diff
Modified: trunk/LayoutTests/ChangeLog (245504 => 245505)
--- trunk/LayoutTests/ChangeLog 2019-05-19 18:17:40 UTC (rev 245504)
+++ trunk/LayoutTests/ChangeLog 2019-05-19 21:34:24 UTC (rev 245505)
@@ -1,3 +1,20 @@
+2019-05-19 Antoine Quint <[email protected]>
+
+ [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 Dean Jackson.
+
+ 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-19 Simon Fraser <[email protected]>
Layers painting into shared backing need to contribute to overlap
Modified: trunk/LayoutTests/pointerevents/ios/over-enter-out-leave.html (245504 => 245505)
--- trunk/LayoutTests/pointerevents/ios/over-enter-out-leave.html 2019-05-19 18:17:40 UTC (rev 245504)
+++ trunk/LayoutTests/pointerevents/ios/over-enter-out-leave.html 2019-05-19 21:34:24 UTC (rev 245505)
@@ -23,9 +23,9 @@
{ 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();
});
Modified: trunk/LayoutTests/pointerevents/ios/pointer-event-order.html (245504 => 245505)
--- trunk/LayoutTests/pointerevents/ios/pointer-event-order.html 2019-05-19 18:17:40 UTC (rev 245504)
+++ trunk/LayoutTests/pointerevents/ios/pointer-event-order.html 2019-05-19 21:34:24 UTC (rev 245505)
@@ -20,9 +20,9 @@
{ 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();
Modified: trunk/LayoutTests/pointerevents/ios/pointer-events-implicit-capture.html (245504 => 245505)
--- trunk/LayoutTests/pointerevents/ios/pointer-events-implicit-capture.html 2019-05-19 18:17:40 UTC (rev 245504)
+++ trunk/LayoutTests/pointerevents/ios/pointer-events-implicit-capture.html 2019-05-19 21:34:24 UTC (rev 245505)
@@ -34,7 +34,7 @@
{ 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 }
]);
Modified: trunk/LayoutTests/pointerevents/ios/pointer-events-is-primary-expected.txt (245504 => 245505)
--- trunk/LayoutTests/pointerevents/ios/pointer-events-is-primary-expected.txt 2019-05-19 18:17:40 UTC (rev 245504)
+++ trunk/LayoutTests/pointerevents/ios/pointer-events-is-primary-expected.txt 2019-05-19 21:34:24 UTC (rev 245505)
@@ -1,3 +1,3 @@
-PASS Oldest active touch has isPrimary = true.
+PASS The first touch of a touch sequence has isPrimary = true.
Modified: trunk/LayoutTests/pointerevents/ios/pointer-events-is-primary.html (245504 => 245505)
--- trunk/LayoutTests/pointerevents/ios/pointer-events-is-primary.html 2019-05-19 18:17:40 UTC (rev 245504)
+++ trunk/LayoutTests/pointerevents/ios/pointer-events-is-primary.html 2019-05-19 21:34:24 UTC (rev 245505)
@@ -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 @@
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>
Modified: trunk/Source/WebCore/ChangeLog (245504 => 245505)
--- trunk/Source/WebCore/ChangeLog 2019-05-19 18:17:40 UTC (rev 245504)
+++ trunk/Source/WebCore/ChangeLog 2019-05-19 21:34:24 UTC (rev 245505)
@@ -1,3 +1,16 @@
+2019-05-19 Antoine Quint <[email protected]>
+
+ [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 Dean Jackson.
+
+ 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-19 Darin Adler <[email protected]>
Change String::number to use "shortest" instead of "fixed precision 6 digits"
Modified: trunk/Source/WebCore/page/EventHandler.h (245504 => 245505)
--- trunk/Source/WebCore/page/EventHandler.h 2019-05-19 18:17:40 UTC (rev 245504)
+++ trunk/Source/WebCore/page/EventHandler.h 2019-05-19 21:34:24 UTC (rev 245505)
@@ -614,6 +614,10 @@
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 };
_______________________________________________ webkit-changes mailing list [email protected] https://lists.webkit.org/mailman/listinfo/webkit-changes
