Layout test fast/events/touch/ios/tap-with-active-listener-inside-window-with-passive-listener.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=202863
<rdar://51724211>

Reviewed by Tim Horton.

Another case where we are getting more touchmoves during a drag than we expected.
However, this time we still want to listen, and we can't use { once: true } because
there are multiple sequential drags. Instead, keep a list of the moves we've seen and
only output the first one.

Also, remove the coordinate logging for the move, since it might not be consistent.

* fast/events/touch/ios/tap-with-active-listener-inside-window-with-passive-listener-expected.txt:
* fast/events/touch/ios/tap-with-active-listener-inside-window-with-passive-listener.html:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@251023 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index bb0f06b..b0f0594 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,21 @@
+2019-10-11  Dean Jackson  <dino@apple.com>
+
+        Layout test fast/events/touch/ios/tap-with-active-listener-inside-window-with-passive-listener.html is a flaky failure
+        https://bugs.webkit.org/show_bug.cgi?id=202863
+        <rdar://51724211>
+
+        Reviewed by Tim Horton.
+
+        Another case where we are getting more touchmoves during a drag than we expected.
+        However, this time we still want to listen, and we can't use { once: true } because
+        there are multiple sequential drags. Instead, keep a list of the moves we've seen and
+        only output the first one.
+
+        Also, remove the coordinate logging for the move, since it might not be consistent.
+
+        * fast/events/touch/ios/tap-with-active-listener-inside-window-with-passive-listener-expected.txt:
+        * fast/events/touch/ios/tap-with-active-listener-inside-window-with-passive-listener.html:
+
 2019-10-11  Chris Dumez  <cdumez@apple.com>
 
         Pages frequently fail to enter the back/forward cache due to frames with a quick redirect coming
diff --git a/LayoutTests/fast/events/touch/ios/tap-with-active-listener-inside-window-with-passive-listener-expected.txt b/LayoutTests/fast/events/touch/ios/tap-with-active-listener-inside-window-with-passive-listener-expected.txt
index a72f9f3..9d6be13 100644
--- a/LayoutTests/fast/events/touch/ios/tap-with-active-listener-inside-window-with-passive-listener-expected.txt
+++ b/LayoutTests/fast/events/touch/ios/tap-with-active-listener-inside-window-with-passive-listener-expected.txt
@@ -2,8 +2,8 @@
 
 Listener target1 received event touchstart targetting eventTarget1 at 50, 50
 Listener document received event touchstart targetting eventTarget1 at 50, 50
-Listener target1 received cancelable event touchmove targetting eventTarget1 at 100, 100
-Listener document received cancelable event touchmove targetting eventTarget1 at 100, 100
+Listener target1 received cancelable event touchmove targetting eventTarget1
+Listener document received cancelable event touchmove targetting eventTarget1
 Listener target1 received cancelable event touchend targetting eventTarget1
 Listener document received cancelable event touchend targetting eventTarget1
 Done
@@ -11,8 +11,8 @@
 
 Listener target1 received event touchstart targetting eventTarget2 at 150, 50
 Listener document received event touchstart targetting eventTarget2 at 150, 50
-Listener target1 received cancelable event touchmove targetting eventTarget2 at 200, 100
-Listener document received cancelable event touchmove targetting eventTarget2 at 200, 100
+Listener target1 received cancelable event touchmove targetting eventTarget2
+Listener document received cancelable event touchmove targetting eventTarget2
 Listener target1 received cancelable event touchend targetting eventTarget2
 Listener document received cancelable event touchend targetting eventTarget2
 Done
@@ -21,9 +21,9 @@
 Listener target3 received event touchstart targetting eventTarget3 at 250, 50
 Listener target1 received event touchstart targetting eventTarget3 at 250, 50
 Listener document received event touchstart targetting eventTarget3 at 250, 50
-Listener target3 received cancelable event touchmove targetting eventTarget3 at 300, 100
-Listener target1 received cancelable event touchmove targetting eventTarget3 at 300, 100
-Listener document received cancelable event touchmove targetting eventTarget3 at 300, 100
+Listener target3 received cancelable event touchmove targetting eventTarget3
+Listener target1 received cancelable event touchmove targetting eventTarget3
+Listener document received cancelable event touchmove targetting eventTarget3
 Listener target3 received cancelable event touchend targetting eventTarget3
 Listener target1 received cancelable event touchend targetting eventTarget3
 Listener document received cancelable event touchend targetting eventTarget3
diff --git a/LayoutTests/fast/events/touch/ios/tap-with-active-listener-inside-window-with-passive-listener.html b/LayoutTests/fast/events/touch/ios/tap-with-active-listener-inside-window-with-passive-listener.html
index 4803840..488097c 100644
--- a/LayoutTests/fast/events/touch/ios/tap-with-active-listener-inside-window-with-passive-listener.html
+++ b/LayoutTests/fast/events/touch/ios/tap-with-active-listener-inside-window-with-passive-listener.html
@@ -46,11 +46,18 @@
             window.addEventListener('click', fail);
             window.addEventListener('scroll', fail);
 
+            let seenMoveListeners = [];
+
             let output = '';
             function getLogEvent(listener, shouldPreventDefault = false) {
                 return function logEvent(event) {
+                    if (event.type == 'touchmove') {
+                        if (seenMoveListeners.includes(listener))
+                            return;
+                        seenMoveListeners.push(listener);
+                    }
                     output += 'Listener ' + listener + ' received' + (event.cancelable ? ' cancelable' : '') + ' event ' + event.type + ' targetting ' + event.target.id;
-                    if (event.touches[0] && event.touches[0].clientX) {
+                    if (event.type != 'touchmove' && event.touches[0] && event.touches[0].clientX) {
                         output += ' at ' + event.touches[0].clientX + ', ' + event.touches[0].clientY;
                     }
                     output +=  '<br>';
@@ -80,12 +87,15 @@
             testRunner.runUIScript(getDragUIScript(50, 50, 100, 100), function(result) {
                 output += result;
                 output += "<h1>Cancelled drag on Target2 (red)</h1>";
+                seenMoveListeners = [];
                 testRunner.runUIScript(getDragUIScript(150, 50, 200, 100), function(result) {
                     output += result;
                     output += "<h1>Cancelled drag on Target3 (blue)</h1>";
+                    seenMoveListeners = [];
                     testRunner.runUIScript(getDragUIScript(250, 50, 300, 100), function(result) {
                         output += result;
                         output += "<h1>Useless Click in the document, should be passive</h1>";
+                        seenMoveListeners = [];
                         testRunner.runUIScript(getClickUIScript(300, 300), function(result) {
                             document.getElementById('output').innerHTML = output;
                             testRunner.notifyDone();