mirror of
https://github.com/servo/servo.git
synced 2025-09-15 09:28:20 +01:00
Update web-platform-tests to revision 60220357131c65146444da1f54624d5b54d0975d
This commit is contained in:
parent
c45192614c
commit
775b784f79
2144 changed files with 58115 additions and 29658 deletions
|
@ -0,0 +1,61 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset=utf-8>
|
||||
<title>Web Locks API: Opaque origins</title>
|
||||
<link rel=help href="https://github.com/inexorabletash/web-locks">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script>
|
||||
|
||||
function load_iframe(src, sandbox) {
|
||||
return new Promise(resolve => {
|
||||
const iframe = document.createElement('iframe');
|
||||
iframe.onload = () => { resolve(iframe); };
|
||||
if (sandbox)
|
||||
iframe.sandbox = sandbox;
|
||||
iframe.srcdoc = src;
|
||||
iframe.style.display = 'none';
|
||||
document.documentElement.appendChild(iframe);
|
||||
});
|
||||
}
|
||||
|
||||
function wait_for_message(iframe) {
|
||||
return new Promise(resolve => {
|
||||
self.addEventListener('message', function listener(e) {
|
||||
if (e.source === iframe.contentWindow) {
|
||||
resolve(e.data);
|
||||
self.removeEventListener('message', listener);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
const script = `
|
||||
<script>
|
||||
"use strict";
|
||||
window.onmessage = async () => {
|
||||
try {
|
||||
await navigator.locks.request('name', lock => {});
|
||||
window.parent.postMessage({result: "no exception"}, "*");
|
||||
} catch (ex) {
|
||||
window.parent.postMessage({result: ex.name}, "*");
|
||||
};
|
||||
};
|
||||
<\/script>
|
||||
`;
|
||||
|
||||
promise_test(async t => {
|
||||
const iframe = await load_iframe(script);
|
||||
iframe.contentWindow.postMessage({}, '*');
|
||||
const message = await wait_for_message(iframe);
|
||||
assert_equals(message.result, 'no exception',
|
||||
'navigator.locks.request() should not throw');
|
||||
}, 'navigator.locks.request() in non-sandboxed iframe should not throw');
|
||||
|
||||
promise_test(async t => {
|
||||
const iframe = await load_iframe(script, 'allow-scripts');
|
||||
iframe.contentWindow.postMessage({}, '*');
|
||||
const message = await wait_for_message(iframe);
|
||||
assert_equals(message.result, 'SecurityError',
|
||||
'Exception should be SecurityError');
|
||||
}, 'navigator.locks.request() in sandboxed iframe should throw SecurityError');
|
||||
</script>
|
Loading…
Add table
Add a link
Reference in a new issue