Source code
Revision control
Copy as Markdown
Other Tools
<!--
Any copyright is dedicated to the Public Domain.
-->
<html>
<head>
<meta charset="utf-8" />
<meta name="timeout" content="long" />
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="testHelpers.js"></script>
<iframe id="read-frame-window"></iframe>
<iframe id="read-frame-worker"></iframe>
<script>
const messageHub = createMotherListener();
async function runTests() {
const params = new URL(window.location.href).searchParams;
const api = params.get("api");
assert_true(!!api);
console.log("Tested API " + api);
const testIdWindow = "ReadIFrameWriteDifferentOriginWindowWith" + api;
const testIdWorker = "Worker" + testIdWindow;
const writeWindows = new Map();
const readWindows = new Map();
messageHub.registerReadWindow(testIdWindow);
const readFrameWindow = document.getElementById("read-frame-window");
readFrameWindow.src =
testIdWindow;
readWindows.set(testIdWindow, readFrameWindow.contentWindow);
messageHub.registerReadWindow(testIdWorker);
const readFrameWorker = document.getElementById("read-frame-worker");
readFrameWorker.src =
testIdWorker;
readWindows.set(testIdWorker, readFrameWorker.contentWindow);
const setup = { readWindows, writeWindows };
await messageHub.getReadWindow(testIdWindow);
async_test(t => {
messageHub.registerWindow(t, testIdWindow, api, "deny", setup);
writeWindows.set(
testIdWindow,
window.open(
testIdWindow
)
);
}, "Read for iframe not allowed when write was done by an iframe in a window of different origin " + api);
await messageHub.getReadWindow(testIdWorker);
async_test(t => {
messageHub.registerWorker(t, testIdWorker, api, "deny", setup);
writeWindows.set(
testIdWorker,
window.open(
testIdWorker
)
);
}, "Read by worker in iframe not allowed when write was done by an iframe in a window of different origin " + api);
}
</script>
</head>
<body onload="runTests();"></body>
</html>