<!DOCTYPE html>
<meta charset="utf-8">
<title>about:mumble test</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script>
async_test(t => {
document.addEventListener("DOMContentLoaded", function() {
t.step(() => {
// This is a regression test for https://crbug.com/1220186
const f = document.createElement('iframe');
f.src = 'about:mumble'
document.body.appendChild(f);
// According to https://crbug.com/1220186#c11 the specs are
// incomplete and browsers are not interoperable here. FWIW,
// before https://crbug.com/1220186 Chromium would commit
// "about:mumble" with the origin of the navigation initiator
// (treating "about:mumble" as "about:blank" in 1)
// ShouldInheritSecurityOriginFromOwner on the renderer-side and 2)
// rewriting "about:mumble" to "about:blank#blocked" on the
// browser-side.
assert_equals(window.origin, f.contentWindow.origin);
assert_equals("about:mumble", f.contentWindow.location.href);
// Let's verify if document.open/write/close work (these were a
// part of the repro steps in https://crbug.com/1220186). Without
// the fixes from https://crrev.com/c/2966194, the
// `document.open()` call below would fail, because
// `f.contentWindow`'s origin would be opaque and therefore
// cross-origin from the current, test-driving frame/origin.
f.contentWindow.document.open()
f.contentWindow.document.write("<h1>Document-written content</h1>")
f.contentWindow.document.close()
assert_equals("Document-written content",
f.contentWindow.document.body.innerText);
t.done();
});
});
}, "Ensure that 'about:mumble' has the same origin as its parent/initiator.");
</script>