summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/dom/events/Event-propagation.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/dom/events/Event-propagation.html')
-rw-r--r--testing/web-platform/tests/dom/events/Event-propagation.html41
1 files changed, 41 insertions, 0 deletions
diff --git a/testing/web-platform/tests/dom/events/Event-propagation.html b/testing/web-platform/tests/dom/events/Event-propagation.html
new file mode 100644
index 000000000..459d45c18
--- /dev/null
+++ b/testing/web-platform/tests/dom/events/Event-propagation.html
@@ -0,0 +1,41 @@
+<!doctype html>
+<title>Event propagation tests</title>
+<link rel=author title="Aryeh Gregor" href=ayg@aryeh.name>
+<div id=log></div>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+"use strict";
+
+function testPropagationFlag(ev, expected, desc) {
+ test(function() {
+ var called = false;
+ var callback = function() { called = true };
+ this.add_cleanup(function() {
+ document.head.removeEventListener("foo", callback)
+ });
+ document.head.addEventListener("foo", callback);
+ document.head.dispatchEvent(ev);
+ assert_equals(called, expected, "Propagation flag");
+ // dispatchEvent resets the propagation flags so it will happily dispatch
+ // the event the second time around.
+ document.head.dispatchEvent(ev);
+ assert_equals(called, true, "Propagation flag after first dispatch");
+ }, desc);
+}
+
+var ev = document.createEvent("Event");
+ev.initEvent("foo", true, false);
+testPropagationFlag(ev, true, "Newly-created Event");
+ev.stopPropagation();
+testPropagationFlag(ev, false, "After stopPropagation()");
+ev.initEvent("foo", true, false);
+testPropagationFlag(ev, true, "Reinitialized after stopPropagation()");
+
+var ev = document.createEvent("Event");
+ev.initEvent("foo", true, false);
+ev.stopImmediatePropagation();
+testPropagationFlag(ev, false, "After stopImmediatePropagation()");
+ev.initEvent("foo", true, false);
+testPropagationFlag(ev, true, "Reinitialized after stopImmediatePropagation()");
+</script>