mirror of
https://github.com/servo/servo.git
synced 2025-10-17 16:59:27 +01:00
59 lines
1.7 KiB
HTML
59 lines
1.7 KiB
HTML
<!doctype html>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
|
|
<body>
|
|
<script>
|
|
promise_test(async (t) => {
|
|
const i = await setupIframe();
|
|
const watcher = new i.contentWindow.CloseWatcher();
|
|
watcher.oncancel = () => i.remove();
|
|
watcher.onclose = () => t.unreached_func("close event must not fire");
|
|
|
|
watcher.close();
|
|
}, "detaching the iframe during the cancel event");
|
|
|
|
promise_test(async (t) => {
|
|
const i = await setupIframe();
|
|
const watcher = new i.contentWindow.CloseWatcher();
|
|
watcher.onclose = () => i.remove();
|
|
|
|
watcher.close();
|
|
}, "detaching the iframe during the close event");
|
|
|
|
promise_test(async (t) => {
|
|
const i = await setupIframe();
|
|
const watcher = new i.contentWindow.CloseWatcher();
|
|
i.remove();
|
|
|
|
watcher.destroy();
|
|
}, "detaching the iframe then calling destroy()");
|
|
|
|
promise_test(async (t) => {
|
|
const i = await setupIframe();
|
|
const watcher = new i.contentWindow.CloseWatcher();
|
|
watcher.oncancel = () => t.unreached_func("cancel event must not fire");
|
|
watcher.onclose = () => t.unreached_func("close event must not fire");
|
|
i.remove();
|
|
|
|
watcher.close();
|
|
}, "detaching the iframe then calling close()");
|
|
|
|
promise_test(async (t) => {
|
|
const i = await setupIframe();
|
|
const iCloseWatcher = i.contentWindow.CloseWatcher;
|
|
const iDOMException = i.contentWindow.DOMException;
|
|
i.remove();
|
|
|
|
assert_throws_dom("InvalidStateError", iDOMException, () => new iCloseWatcher());
|
|
}, "detaching the iframe then constructing a CloseWatcher");
|
|
|
|
function setupIframe() {
|
|
return new Promise(resolve => {
|
|
const i = document.createElement("iframe");
|
|
i.onload = () => resolve(i);
|
|
i.src = "/common/blank.html";
|
|
document.body.append(i);
|
|
});
|
|
}
|
|
</script>
|