gecko-dev/dom/workers/test/test_sharedWorker_thirdpart...

61 строка
1.8 KiB
HTML

<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<!DOCTYPE HTML>
<html>
<head>
<title>Test for SharedWorker in 3rd Party Iframes</title>
<script src="/tests/SimpleTest/SimpleTest.js"> </script>
<script src="/tests/SimpleTest/AddTask.js"> </script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
</head>
<body>
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test">
<script class="testbody">
function testThirdPartyFrame(name) {
return new Promise(resolve => {
let frame = document.createElement('iframe');
frame.src =
'http://example.org/tests/dom/workers/test/sharedWorker_thirdparty_frame.html?name=' + name;
document.body.appendChild(frame);
window.addEventListener('message', function messageListener(evt) {
if (evt.data.name !== name) {
return;
}
frame.remove();
window.removeEventListener('message', messageListener);
resolve(evt.data.result);
});
});
}
const COOKIE_BEHAVIOR_ACCEPT = 0;
const COOKIE_BEHAVIOR_REJECTFOREIGN = 1;
add_task(async function allowed() {
await SpecialPowers.pushPrefEnv({ set: [
["network.cookie.cookieBehavior", COOKIE_BEHAVIOR_ACCEPT]
]});
let result = await testThirdPartyFrame('allowed');
ok(result === 'allowed',
'SharedWorker should be allowed when 3rd party iframes can access storage');
});
add_task(async function blocked() {
await SpecialPowers.pushPrefEnv({ set: [
["network.cookie.cookieBehavior", COOKIE_BEHAVIOR_REJECTFOREIGN]
]});
let result = await testThirdPartyFrame('blocked');
ok(result === 'blocked',
'SharedWorker should not be allowed when 3rd party iframes are denied storage');
});
</script>
</pre>
</body>
</html>