<!--
Test whether or not an iframe can load file subresources when:
- The main frame can load files.
- The iframe is sandboxed.
- The navigation is to about:srcdoc.
See https://crbug.com/977186
-->
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<iframe sandbox="allow-scripts" name="theiframe" srcdoc="
<script src='./resources/script.js'
onload='parent.postMessage("loaded","*")'
onerror='parent.postMessage("error","*")'
></script>
"></iframe>
<a target="theiframe" href="../resources/back.html"></a>
<script>
let button = document.querySelector("a");
let iframe = document.querySelector("iframe");
let message = function() {
return new Promise(resolve =>
window.addEventListener('message', event => resolve(event.data))
);
};
promise_test(async function(t) {
// 1. Initial navigation to about:srcdoc.
assert_equals("error", await message());
// 2. Repeating the same navigation, by modifying the srcdoc attribute.
iframe.srcdoc = iframe.srcdoc;
assert_equals("error", await message());
// 3. History navigation to about:srcdoc.
//
// button.click() navigates to back.html which will execute
// history.back() and navigate back to the about:srcdoc page.
button.click();
assert_equals("error", await message());
// 4. Same as (2). This used to be useful, because (3) had side effects on
// (4).
iframe.srcdoc = iframe.srcdoc;
assert_equals("error", await message());
});
</script>