зеркало из https://github.com/mozilla/gecko-dev.git
41 строка
1.6 KiB
HTML
41 строка
1.6 KiB
HTML
<!DOCTYPE html>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script src="resources/open-blank-host.js"></script>
|
|
<script>
|
|
function nextEvent(target, type) {
|
|
return new Promise((resolve, reject) => target.addEventListener(type, e => resolve(e), {once: true}));
|
|
}
|
|
|
|
function timePasses(delay) {
|
|
return new Promise((resolve, reject) => step_timeout(() => resolve(), delay));
|
|
}
|
|
|
|
promise_test(async () => {
|
|
assert_implements("HTMLPortalElement" in self);
|
|
const w = await openBlankPortalHost();
|
|
try {
|
|
const portal = w.document.createElement('portal');
|
|
portal.src = new URL('resources/simple-portal.html', location.href);
|
|
w.document.body.appendChild(portal);
|
|
await nextEvent(portal, 'load');
|
|
const pagehideFired = nextEvent(w, 'pagehide');
|
|
const unloadFired = nextEvent(w, 'unload');
|
|
await portal.activate();
|
|
assert_true((await pagehideFired) instanceof w.PageTransitionEvent);
|
|
assert_true((await unloadFired) instanceof w.Event);
|
|
} finally {
|
|
w.close();
|
|
}
|
|
}, "pagehide and unload should fire if the predecessor is not adopted");
|
|
|
|
promise_test(async () => {
|
|
assert_implements("HTMLPortalElement" in self);
|
|
localStorage.setItem('predecessor-fires-unload-events', '');
|
|
window.open('resources/predecessor-fires-unload-watch-unload.html', '_blank', 'noopener');
|
|
while (localStorage.getItem('predecessor-fires-unload-events') != 'pagehide unload') {
|
|
await timePasses(50);
|
|
}
|
|
}, "pagehide and unload should fire if the predecessor is not adopted, even without a window/opener association");
|
|
</script>
|