blob: 1ae3d0d7affba720bc1546692b8ff7ed59f7d2d5 [file] [log] [blame] [edit]
<!DOCTYPE html>
<title>Sub Apps: Error cases for add()</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/subapps-helpers.js"></script>
<body></body>
<script>
promise_test(async t => {
const iframe = document.createElement('iframe');
document.body.appendChild(iframe);
const iframeNavigator = iframe.contentWindow.navigator;
const iframeDOMException = iframe.contentWindow.DOMException;
// Detach the frame.
iframe.remove();
const same_origin_url = document.location.origin + '/sub-app';
let subapp = {};
let install_options = {};
install_options["install_url"] = same_origin_url;
subapp[same_origin_url] = install_options;
// At this point the iframe is detached and unloaded, and its execution
// context is gone.
await promise_rejects_dom(t, 'NotFoundError', iframeDOMException, iframeNavigator.subApps.add(subapp));
}, "The object is no longer associated to a document.");
promise_test(async t => {
const iframe = document.createElement('iframe');
document.body.appendChild(iframe);
const iframeNavigator = iframe.contentWindow.navigator;
const iframeDOMException = iframe.contentWindow.DOMException;
t.add_cleanup(() => iframe.remove());
const same_origin_url = document.location.origin + '/sub-app';
let subapp = {};
let install_options = {};
install_options["install_url"] = same_origin_url;
subapp[same_origin_url] = install_options;
await promise_rejects_dom(t, 'InvalidStateError', iframeDOMException, iframeNavigator.subApps.add(subapp));
}, "API is only supported in top-level browsing contexts.");
</script>