| <!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> |