Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
- This WPT test may be referenced by the following Test IDs:
- /dom/events/EventTarget-window-constructor.html - WPT Dashboard Interop Dashboard
<!DOCTYPE html>
<meta charset="utf-8">
<title>Event dispatch with a modified Window constructor property</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<body>
<script>
"use strict";
test(t => {
const eventType = "window-constructor-test";
let targetSeenByWindowListener;
function listener(event) {
targetSeenByWindowListener = event.target;
}
function NotWindow() {}
window.addEventListener(eventType, listener);
t.add_cleanup(() => window.removeEventListener(eventType, listener));
const ownConstructorDescriptor = Object.getOwnPropertyDescriptor(window, "constructor");
try {
Object.defineProperty(window, "constructor", {
configurable: true,
writable: true,
value: NotWindow
});
document.body.dispatchEvent(new Event(eventType, { bubbles: true }));
} finally {
if (ownConstructorDescriptor === undefined) {
delete window.constructor;
} else {
Object.defineProperty(window, "constructor", ownConstructorDescriptor);
}
}
assert_equals(targetSeenByWindowListener, document.body);
}, "Modifying window.constructor does not affect event dispatch");
</script>