| <!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 }; | |
| document.head.addEventListener("foo", callback); | |
| document.head.dispatchEvent(ev); | |
| // Gecko resets the flags after dispatching; it will happily dispatch | |
| // the event the second time around. | |
| document.head.dispatchEvent(ev); | |
| assert_equals(called, expected, "Propagation flag"); | |
| document.head.removeEventListener("foo", callback); | |
| }, 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> |