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();
