tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

mode-exclusive.https.any.js (1029B)


      1 // META: title=Web Locks API: Exclusive Mode
      2 // META: global=window,dedicatedworker,sharedworker,serviceworker
      3 
      4 'use strict';
      5 
      6 promise_test(async t => {
      7  const granted = [];
      8  function log_grant(n) { return () => { granted.push(n); }; }
      9 
     10  await Promise.all([
     11    navigator.locks.request('a', log_grant(1)),
     12    navigator.locks.request('a', log_grant(2)),
     13    navigator.locks.request('a', log_grant(3))
     14  ]);
     15  assert_array_equals(granted, [1, 2, 3]);
     16 }, 'Lock requests are granted in order');
     17 
     18 promise_test(async t => {
     19  const granted = [];
     20  function log_grant(n) { return () => { granted.push(n); }; }
     21 
     22  let inner_promise;
     23  await navigator.locks.request('a', async lock => {
     24    inner_promise = Promise.all([
     25      // This will be blocked.
     26      navigator.locks.request('a', log_grant(1)),
     27      // But this should be grantable immediately.
     28      navigator.locks.request('b', log_grant(2))
     29    ]);
     30  });
     31 
     32  await inner_promise;
     33  assert_array_equals(granted, [2, 1]);
     34 }, 'Requests for distinct resources can be granted');