blob: f8a4707ccb77130cc1457709cd30a45ada9f4209 [file] [log] [blame]
<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<body>
<script>
async_test(t => {
assert_equals(location.protocol, "https:");
var f = document.createElement("iframe");
window.addEventListener("message", t.step_func(e => {
if (e.source !== f.contentWindow)
return;
assert_equals(e.data, "PASS");
t.done();
}));
var otherDataUrl = "data:text/html," + encodeURIComponent(`
<script src="BLOB_URL_HERE"
onerror="parent.postMessage('PASS', '*');"
onload="parent.postMessage('FAIL: onload was fired', '*');">
<\/script>
`);
f.src = "data:text/html," + encodeURIComponent(`
<script>
var url = URL.createObjectURL(new Blob(["parent.postMessage('FAIL: This external blob:-script should have been blocked', '*');"]));
// Navigate to another data-URL, which has a new origin.
location.href = "${otherDataUrl}".replace("BLOB_URL_HERE", url);
<\/script>
`);
document.body.appendChild(f);
}, "'data:' URL frames cannot load 'blob:' resources originating from another data:-URL.");
</script>
</body>