Bug 1315862 Part2: Add a test case to ensure pointer events aren't dispatched in the system group. r=masayuki draft
authorStone Shih <sshih@mozilla.com>
Tue, 15 Nov 2016 10:34:13 +0800
changeset 440255 634cef3c217ab427d12e8f961c59ed3a1248b267
parent 440254 25afbefb19e5ae613e9e493ea2f275a36004d523
child 537335 ca8093348f9c20b33a81fbcd6b06e892713821ad
push id36184
push usersshih@mozilla.com
push dateThu, 17 Nov 2016 06:22:58 +0000
reviewersmasayuki
bugs1315862
milestone53.0a1
Bug 1315862 Part2: Add a test case to ensure pointer events aren't dispatched in the system group. r=masayuki MozReview-Commit-ID: 4FR62yYlxAY
dom/events/test/pointerevents/mochitest.ini
dom/events/test/pointerevents/test_bug1315862.html
--- a/dom/events/test/pointerevents/mochitest.ini
+++ b/dom/events/test/pointerevents/mochitest.ini
@@ -145,8 +145,9 @@ support-files =
     pointerevent_touch-action-table-test_touch-manual.html
 [test_bug1285128.html]
 [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_empty_file.html]
   disabled = disabled # Bug 1150091 - Issue with support-files
+[test_bug1315862.html]
new file mode 100644
--- /dev/null
+++ b/dom/events/test/pointerevents/test_bug1315862.html
@@ -0,0 +1,66 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1315862
+-->
+<head>
+  <meta charset="utf-8">
+  <title>Test for Bug 1315862</title>
+  <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+  <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+</head>
+<body>
+<p id="content">
+  This is a test to check if pointer events are dispatched in the system group
+</p>
+<script type="text/javascript">
+
+/** Test for Bug 1315862 **/
+SimpleTest.waitForExplicitFinish();
+
+function runTests() {
+  let allPointerEvents = ["pointerdown", "pointerup", "pointercancel",
+                          "pointermove", "pointerover", "pointerout",
+                          "pointerenter", "pointerleave", "gotpointercapture",
+                          "lostpointercapture"
+                         ];
+  let content = document.getElementById('content');
+  let iframe = document.createElement('iframe');
+  let receivePointerEvents = false;
+  iframe.width = 50;
+  iframe.height = 50;
+  content.appendChild(iframe);
+  iframe.contentDocument.body.innerHTML =
+    "<div style='width: 100%; height: 100%; border: 1px solid black;'></div>";
+
+  let target = iframe.contentDocument.body.firstChild;
+  allPointerEvents.forEach((event, idx, arr) => {
+    SpecialPowers.addSystemEventListener(target, event, () => {
+      ok(false, "Shouldn't dispatch " + event + " in the system group");
+      receivePointerEvents = true;
+    });
+  });
+  target.addEventListener("pointerdown", (e) => {
+    target.setPointerCapture(e.pointerId);
+  }, false);
+  target.addEventListener("pointerup", () => {
+    is(receivePointerEvents, false, "Shouldn't dispatch pointer events in the system group");
+    SimpleTest.finish();
+  }, false);
+  let source = SpecialPowers.Ci.nsIDOMMouseEvent.MOZ_SOURCE_MOUSE;
+  synthesizeMouse(target, 5, 5, { type: "mousemove", inputSource: source },
+                  iframe.contentWindow);
+  synthesizeMouse(target, 5, 5, { type: "mousedown", inputSource: source },
+                  iframe.contentWindow);
+  synthesizeMouse(target, 5, 5, { type: "mousemove", inputSource: source },
+                  iframe.contentWindow);
+  synthesizeMouse(target, 5, 5, { type: "mouseup", inputSource: source },
+                  iframe.contentWindow);
+}
+
+SpecialPowers.pushPrefEnv({"set": [["dom.w3c_pointer_events.enabled", true]]}, runTests);
+
+</script>
+</body>
+</html>