Bug 1445478: Make pointerevents/test_bug1414336.html more reliable. r?kats draft
authorEmilio Cobos Álvarez <emilio@crisal.io>
Tue, 13 Mar 2018 22:38:55 +0100
changeset 767083 2b2217ca442e068051a7850f6bb64bfec2634b14
parent 767079 1b2883ce5909c3c8005647041b1758275cc3b356
push id102513
push userbmo:emilio@crisal.io
push dateTue, 13 Mar 2018 22:31:09 +0000
reviewerskats
bugs1445478, 1414336, 1439875
milestone61.0a1
Bug 1445478: Make pointerevents/test_bug1414336.html more reliable. r?kats There can be something shuffling the iframe between the mouse event is sent and the mouse event is received which makes us end up targeting the <body> instead of the test target. This can be reproduced with enough persistence either with and without the patches from bug 1439875, at least on a headless build with rr chaos mode. Move it to test_group_pointerevents in the apz tests to run it in a new window and make it a bit more reliable. MozReview-Commit-ID: BS6Es8iEmMY
dom/events/test/pointerevents/mochitest.ini
dom/events/test/pointerevents/test_bug1414336.html
gfx/layers/apz/test/mochitest/helper_bug1414336.html
gfx/layers/apz/test/mochitest/mochitest.ini
gfx/layers/apz/test/mochitest/test_group_pointerevents.html
--- a/dom/events/test/pointerevents/mochitest.ini
+++ b/dom/events/test/pointerevents/mochitest.ini
@@ -10,20 +10,16 @@ support-files =
 [test_bug1293174_implicit_pointer_capture_for_touch_1.html]
   support-files = bug1293174_implicit_pointer_capture_for_touch_1.html
 [test_bug1293174_implicit_pointer_capture_for_touch_2.html]
   support-files = bug1293174_implicit_pointer_capture_for_touch_2.html
 [test_bug1303704.html]
 [test_bug1315862.html]
 [test_bug1323158.html]
 [test_bug1403055.html]
-[test_bug1414336.html]
-  support-files =
-    ../../../../gfx/layers/apz/test/mochitest/apz_test_native_event_utils.js
-    ../../../../gfx/layers/apz/test/mochitest/apz_test_utils.js
 [test_bug1420589_1.html]
   support-files =
     bug_1420589_iframe1.html
     bug_1420589_iframe2.html
 [test_bug1420589_2.html]
   support-files =
     bug_1420589_iframe1.html
 [test_bug1420589_3.html]
deleted file mode 100644
--- a/dom/events/test/pointerevents/test_bug1414336.html
+++ /dev/null
@@ -1,101 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=1414336
--->
-<head>
-  <meta charset="utf-8">
-  <title>Test for Bug 1414336</title>
-  <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
-  <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
-  <script type="text/javascript" src="apz_test_native_event_utils.js"></script>
-  <script type="text/javascript" src="apz_test_utils.js"></script>
-  <script type="text/javascript" src="/tests/SimpleTest/paint_listener.js"></script>
-  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
-  <style>
-    #target0 {
-    width: 200px;
-    height: 400px;
-    touch-action: auto;
-    }
-  </style>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1414336">Mozilla Bug 1414336</a>
-<p id="display"></p>
-<div id="target0">
-  <p>Test bug1414336</p>
-  <p>Test bug1414336</p>
-  <p>Test bug1414336</p>
-  <p>Test bug1414336</p>
-  <p>Test bug1414336</p>
-  <p>Test bug1414336</p>
-  <p>Test bug1414336</p>
-  <p>Test bug1414336</p>
-  <p>Test bug1414336</p>
-  <p>Test bug1414336</p>
-  <p>Test bug1414336</p>
-  <p>Test bug1414336</p>
-  <p>Test bug1414336</p>
-  <p>Test bug1414336</p>
-  <p>Test bug1414336</p>
-  <p>Test bug1414336</p>
-  <p>Test bug1414336</p>
-  <p>Test bug1414336</p>
-  <p>Test bug1414336</p>
-  <p>Test bug1414336</p>
-  <p>Test bug1414336</p>
-  <p>Test bug1414336</p>
-  <p>Test bug1414336</p>
-  <p>Test bug1414336</p>
-  <p>Test bug1414336</p>
-  <p>Test bug1414336</p>
-  <p>Test bug1414336</p>
-  <p>Test bug1414336</p>
-  <p>Test bug1414336</p>
-  <p>Test bug1414336</p>
-  <p>Test bug1414336</p>
-  <p>Test bug1414336</p>
-</div>
-<script type="text/javascript">
-/** Test for Bug 1414336 **/
-if (isApzEnabled()) {
-  SimpleTest.waitForExplicitFinish();
-
-  waitUntilApzStable().then(() => {
-    let isWindows = (getPlatform() == "windows");
-    SpecialPowers.pushPrefEnv({"set": [["dom.w3c_pointer_events.enabled", true],
-                                       ["apz.test.fails_with_native_injection", isWindows]]}, () => {
-
-      let target0 = window.document.getElementById("target0");
-      let target0_events = ["pointerdown", "pointermove"];
-
-      target0_events.forEach((elem, index, arr) => {
-        target0.addEventListener(elem, (event) => {
-          is(event.type, target0_events[0], "receive " + event.type + " on target0");
-          target0_events.shift();
-        }, { once: true });
-      });
-
-      target0.addEventListener("pointercancel", (event) => {
-        ok(false, "Shouldn't receive pointercancel when content prevents default on touchstart");
-        SimpleTest.finish();
-      }, { once: true });
-
-      target0.addEventListener("touchstart", (event) => {
-        event.preventDefault();
-      }, { once: true });
-
-      target0.addEventListener("pointerup", (event) => {
-        ok(target0_events.length == 0, " should receive " + target0_events + " on target0");
-        SimpleTest.finish();
-      }, { once: true });
-
-      synthesizeNativeTouchDrag(target0, 2, 2, 0, 80);
-    });
-  });
-}
-
-</script>
-</body>
-</html>
new file mode 100644
--- /dev/null
+++ b/gfx/layers/apz/test/mochitest/helper_bug1414336.html
@@ -0,0 +1,93 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1414336
+-->
+<head>
+  <meta charset="utf-8">
+  <title>Test for Bug 1414336</title>
+  <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+  <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+  <script type="text/javascript" src="apz_test_native_event_utils.js"></script>
+  <script type="text/javascript" src="apz_test_utils.js"></script>
+  <script type="text/javascript" src="/tests/SimpleTest/paint_listener.js"></script>
+  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+  <style>
+    #target0 {
+    width: 200px;
+    height: 400px;
+    touch-action: auto;
+    }
+  </style>
+</head>
+<body>
+<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1414336">Mozilla Bug 1414336</a>
+<p id="display"></p>
+<div id="target0">
+  <p>Test bug1414336</p>
+  <p>Test bug1414336</p>
+  <p>Test bug1414336</p>
+  <p>Test bug1414336</p>
+  <p>Test bug1414336</p>
+  <p>Test bug1414336</p>
+  <p>Test bug1414336</p>
+  <p>Test bug1414336</p>
+  <p>Test bug1414336</p>
+  <p>Test bug1414336</p>
+  <p>Test bug1414336</p>
+  <p>Test bug1414336</p>
+  <p>Test bug1414336</p>
+  <p>Test bug1414336</p>
+  <p>Test bug1414336</p>
+  <p>Test bug1414336</p>
+  <p>Test bug1414336</p>
+  <p>Test bug1414336</p>
+  <p>Test bug1414336</p>
+  <p>Test bug1414336</p>
+  <p>Test bug1414336</p>
+  <p>Test bug1414336</p>
+  <p>Test bug1414336</p>
+  <p>Test bug1414336</p>
+  <p>Test bug1414336</p>
+  <p>Test bug1414336</p>
+  <p>Test bug1414336</p>
+  <p>Test bug1414336</p>
+  <p>Test bug1414336</p>
+  <p>Test bug1414336</p>
+  <p>Test bug1414336</p>
+  <p>Test bug1414336</p>
+</div>
+<script type="text/javascript">
+/** Test for Bug 1414336 **/
+waitUntilApzStable().then(() => {
+  let target0 = window.document.getElementById("target0");
+  let target0_events = ["pointerdown", "pointermove"];
+
+  target0_events.forEach((elem, index, arr) => {
+    target0.addEventListener(elem, (event) => {
+      is(event.type, target0_events[0], "receive " + event.type + " on target0");
+      target0_events.shift();
+    }, { once: true });
+  });
+
+  target0.addEventListener("pointercancel", (event) => {
+    ok(false, "Shouldn't receive pointercancel when content prevents default on touchstart");
+    subtestDone();
+  }, { once: true });
+
+  target0.addEventListener("touchstart", (event) => {
+    event.preventDefault();
+  }, { once: true });
+
+  target0.addEventListener("pointerup", (event) => {
+    ok(target0_events.length == 0, " should receive " + target0_events + " on target0");
+    SimpleTest.finish();
+    subtestDone();
+  }, { once: true });
+
+  synthesizeNativeTouchDrag(target0, 2, 2, 0, 80);
+});
+
+</script>
+</body>
+</html>
--- a/gfx/layers/apz/test/mochitest/mochitest.ini
+++ b/gfx/layers/apz/test/mochitest/mochitest.ini
@@ -7,16 +7,17 @@
     helper_bug982141.html
     helper_bug1151663.html
     helper_bug1162771.html
     helper_bug1271432.html
     helper_bug1280013.html
     helper_bug1285070.html
     helper_bug1299195.html
     helper_bug1346632.html
+    helper_bug1414336.html
     helper_click.html
     helper_div_pan.html
     helper_drag_click.html
     helper_drag_scroll.html
     helper_iframe_pan.html
     helper_iframe1.html
     helper_iframe2.html
     helper_hittest_basic.html
--- a/gfx/layers/apz/test/mochitest/test_group_pointerevents.html
+++ b/gfx/layers/apz/test/mochitest/test_group_pointerevents.html
@@ -6,19 +6,24 @@ https://bugzilla.mozilla.org/show_bug.cg
 <head>
   <meta charset="utf-8">
   <title>Test for Bug 1285070</title>
   <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
   <script type="application/javascript" src="apz_test_utils.js"></script>
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
   <script type="application/javascript">
 
+  let isWindows = navigator.platform.indexOf("Win") == 0;
   var subtests = [
     {'file': 'helper_bug1285070.html', 'prefs': [["dom.w3c_pointer_events.enabled", true]]},
-    {'file': 'helper_bug1299195.html', 'prefs': [["dom.w3c_pointer_events.enabled", true]]}
+    {'file': 'helper_bug1299195.html', 'prefs': [["dom.w3c_pointer_events.enabled", true]]},
+    {'file': 'helper_bug1414336.html', 'prefs': [
+      ["dom.w3c_pointer_events.enabled", true],
+      ["apz.test.fails_with_native_injection", isWindows]
+    ]}
   ];
 
   if (isApzEnabled()) {
     SimpleTest.waitForExplicitFinish();
     window.onload = function() {
       runSubtestsSeriallyInFreshWindows(subtests)
       .then(SimpleTest.finish, SimpleTest.finish);
     };