summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/uievents/order-of-events/mouse-events/click-order.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/uievents/order-of-events/mouse-events/click-order.html')
-rw-r--r--testing/web-platform/tests/uievents/order-of-events/mouse-events/click-order.html86
1 files changed, 86 insertions, 0 deletions
diff --git a/testing/web-platform/tests/uievents/order-of-events/mouse-events/click-order.html b/testing/web-platform/tests/uievents/order-of-events/mouse-events/click-order.html
new file mode 100644
index 0000000000..1285a31efc
--- /dev/null
+++ b/testing/web-platform/tests/uievents/order-of-events/mouse-events/click-order.html
@@ -0,0 +1,86 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <title>Click-related events should fire in the correct order</title>
+ <link rel="help" href="https://w3c.github.io/uievents/#events-clickevent-event-order">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/resources/testdriver.js"></script>
+ <script src="/resources/testdriver-actions.js"></script>
+ <script src="/resources/testdriver-vendor.js"></script>
+ <script src="/uievents/resources/eventrecorder.js"></script>
+ </head>
+ <body>
+ <ol>
+ <li>Double-click into the blue area.</li>
+ <li>Click the "Done" button.</li>
+ </ol>
+ <div id="blue" style="width:400px; height:300px; background-color: blue;"></div>
+ <button type="button" id="done">Done</button>
+</body>
+<script>
+setup({explicit_timeout: true});
+
+function bubbles(e) {
+ assert_true(e.bubbles);
+}
+
+var relevantEvents = [
+ "mousedown",
+ "mouseup",
+ "mousemove",
+ "click",
+ "dblclick"
+];
+
+window.onload = async function () {
+ var blue = document.getElementById("blue");
+ var button = document.getElementById("done");
+ var inputs = [blue];
+ EventRecorder.configure({
+ mergeEventTypes: ["mousemove"],
+ objectMap: {
+ "blue": blue
+ }
+ });
+
+ EventRecorder.addEventListenersForNodes(relevantEvents, inputs, bubbles);
+ var expected = [
+ {type: "mousemove", target: "blue", optional: true},
+ {type: "mousedown", target: "blue"},
+ {type: "mousemove", target: "blue", optional: true},
+ {type: "mouseup", target: "blue"},
+ {type: "click", target: "blue"},
+ {type: "mousemove", target: "blue", optional: true},
+ {type: "mousedown", target: "blue"},
+ {type: "mousemove", target: "blue", optional: true},
+ {type: "mouseup", target: "blue"},
+ {type: "click", target: "blue"},
+ {type: "dblclick", target: "blue"},
+ {type: "mousemove", target: "blue", optional: true}
+ ];
+
+ async_test(function(t) {
+ button.addEventListener("click", function () {
+ t.step(function () {
+ assert_true(EventRecorder.checkRecords(expected));
+ t.done();
+ });
+ }, false);
+ }, "Click-related events should fire in the correct order");
+ EventRecorder.start();
+
+ await new test_driver.Actions()
+ .pointerMove(0, 0, {origin: blue})
+ .pointerDown()
+ .pointerUp()
+ .pointerDown()
+ .pointerUp()
+ .pointerMove(0, 0, {origin: button})
+ .pointerDown()
+ .pointerUp()
+ .send();
+};
+ </script>
+</html>