mirror of
https://github.com/servo/servo.git
synced 2025-09-11 07:28:19 +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
43
tests/wpt/web-platform-tests/web-locks/resources/iframe.html
Normal file
43
tests/wpt/web-platform-tests/web-locks/resources/iframe.html
Normal file
|
@ -0,0 +1,43 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Helper IFrame</title>
|
||||
<script>
|
||||
'use strict';
|
||||
|
||||
// Map of lock_id => function that releases a lock.
|
||||
|
||||
const held = new Map();
|
||||
let next_lock_id = 1;
|
||||
|
||||
self.addEventListener('message', e => {
|
||||
function respond(data) {
|
||||
parent.postMessage(Object.assign(data, {rqid: e.data.rqid}), '*');
|
||||
}
|
||||
|
||||
switch (e.data.op) {
|
||||
case 'request':
|
||||
navigator.locks.request(
|
||||
e.data.name, {
|
||||
mode: e.data.mode || 'exclusive',
|
||||
ifAvailable: e.data.ifAvailable || false
|
||||
}, lock => {
|
||||
if (lock === null) {
|
||||
respond({ack: 'request', failed: true});
|
||||
return;
|
||||
}
|
||||
let lock_id = next_lock_id++;
|
||||
let release;
|
||||
const promise = new Promise(r => { release = r; });
|
||||
held.set(lock_id, release);
|
||||
respond({ack: 'request', lock_id: lock_id});
|
||||
return promise
|
||||
});
|
||||
break;
|
||||
|
||||
case 'release':
|
||||
held.get(e.data.lock_id)();
|
||||
held.delete(e.data.lock_id);
|
||||
respond({ack: 'release', lock_id: e.data.lock_id});
|
||||
break;
|
||||
}
|
||||
});
|
||||
</script>
|
Loading…
Add table
Add a link
Reference in a new issue