46 lines
1.5 KiB
HTML
46 lines
1.5 KiB
HTML
<!DOCTYPE html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<script src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<link rel="stylesheet" href="/tests/SimpleTest/test.css" />
|
|
</head>
|
|
<script>
|
|
// Open a window and navigate it from https://example.com to about:blank
|
|
// With fission, we should switch processes and about:blank should load in
|
|
// the same process as this test page.
|
|
// This is a crash test.
|
|
add_task(async function test_aboutblank_change_process() {
|
|
let exampleLoaded = new Promise(resolve => {
|
|
function onMessage(event) {
|
|
if (event.data == "body-loaded") {
|
|
window.removeEventListener("message", onMessage);
|
|
resolve();
|
|
}
|
|
}
|
|
window.addEventListener("message", onMessage);
|
|
});
|
|
let win = window.open();
|
|
win.location = "https://example.com/tests/docshell/test/navigation/file_tell_opener.html";
|
|
await exampleLoaded;
|
|
|
|
win.location = "about:blank";
|
|
|
|
// A crash happens somewhere here when about:blank does not go via
|
|
// DocumentChannel with fission enabled
|
|
|
|
// Wait for about:blank to load in this process
|
|
await SimpleTest.promiseWaitForCondition(() => {
|
|
try {
|
|
return win.location.href == "about:blank";
|
|
} catch (e) {
|
|
// While the `win` still has example.com page loaded, `win.location` will
|
|
// be a cross origin object and querying win.location.href will throw a
|
|
// SecurityError. Return false as long as this is the case.
|
|
return false;
|
|
}
|
|
})
|
|
|
|
ok(true, "We did not crash");
|
|
win.close();
|
|
});
|
|
</script>
|