%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
const otherWindow = document.body.appendChild(document.createElement("iframe")).contentWindow; ["EventTarget", "XMLHttpRequest"].forEach(constructorName => { async_test(t => { const eventTarget = new otherWindow[constructorName](); eventTarget.addEventListener("hi", t.step_func_done(e => { assert_equals(otherWindow.event, undefined); assert_equals(e, window.event); })); eventTarget.dispatchEvent(new Event("hi")); }, "window.event for constructors from another global: " + constructorName); }); // XXX: It would be good to test a subclass of EventTarget once we sort out // https://github.com/heycam/webidl/issues/540 async_test(t => { const element = document.body.appendChild(otherWindow.document.createElement("meh")); element.addEventListener("yo", t.step_func_done(e => { assert_equals(e, window.event); })); element.dispatchEvent(new Event("yo")); }, "window.event and element from another document"); async_test(t => { const doc = otherWindow.document, element = doc.body.appendChild(doc.createElement("meh")), child = element.appendChild(doc.createElement("bleh")); element.addEventListener("yoyo", t.step_func(e => { document.body.appendChild(element); assert_equals(element.ownerDocument, document); assert_equals(window.event, e); assert_equals(otherWindow.event, undefined); }), true); element.addEventListener("yoyo", t.step_func(e => { assert_equals(element.ownerDocument, document); assert_equals(window.event, e); assert_equals(otherWindow.event, undefined); }), true); child.addEventListener("yoyo", t.step_func_done(e => { assert_equals(child.ownerDocument, document); assert_equals(window.event, e); assert_equals(otherWindow.event, undefined); })); child.dispatchEvent(new Event("yoyo")); }, "window.event and moving an element post-dispatch"); test(t => { const host = document.createElement("div"), shadow = host.attachShadow({ mode: "open" }), child = shadow.appendChild(document.createElement("trala")), furtherChild = child.appendChild(document.createElement("waddup")); let counter = 0; host.addEventListener("hi", t.step_func(e => { assert_equals(window.event, e); assert_equals(counter++, 3); })); child.addEventListener("hi", t.step_func(e => { assert_equals(window.event, undefined); assert_equals(counter++, 2); })); furtherChild.addEventListener("hi", t.step_func(e => { host.appendChild(child); assert_equals(window.event, undefined); assert_equals(counter++, 0); })); furtherChild.addEventListener("hi", t.step_func(e => { assert_equals(window.event, undefined); assert_equals(counter++, 1); })); furtherChild.dispatchEvent(new Event("hi", { composed: true, bubbles: true })); assert_equals(counter, 4); }, "window.event should not be affected by nodes moving post-dispatch"); async_test(t => { const frame = document.body.appendChild(document.createElement("iframe")); frame.src = "resources/event-global-extra-frame.html"; frame.onload = t.step_func_done((load_event) => { const event = new Event("hi"); document.addEventListener("hi", frame.contentWindow.listener); // listener intentionally not wrapped in t.step_func document.addEventListener("hi", t.step_func(e => { assert_equals(event, e); assert_equals(window.event, e); })); document.dispatchEvent(event); assert_equals(frameState.event, event); assert_equals(frameState.windowEvent, event); assert_equals(frameState.parentEvent, load_event); }); }, "Listener from a different global");