tor-browser

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

release-across-thread.tentative.https.html (2192B)


      1 <!DOCTYPE html>
      2 <meta charset=utf-8>
      3 <meta name="timeout" content="long">
      4 <title>Web Locks API: bfcache</title>
      5 <link rel=help href="https://w3c.github.io/web-locks/">
      6 <script src="/resources/testharness.js"></script>
      7 <script src="/resources/testharnessreport.js"></script>
      8 <script src="/common/utils.js"></script>
      9 <script src="/common/dispatcher/dispatcher.js"></script>
     10 <script src="/html/browsers/browsing-the-web/back-forward-cache/resources/helper.sub.js"></script>
     11 <script type="module">
     12  import { runWebLocksBfcacheTest } from "./helpers.js";
     13 
     14  runWebLocksBfcacheTest({
     15    funcBeforeNavigation: async () => {
     16      navigator.locks.request(uniqueNameByQuery(), () => new Promise(() => { }));
     17      window.worker = new Worker("/web-locks/resources/worker.js");
     18      const { lock_id } = await postToWorkerAndWait(worker, { op: "request", name: uniqueNameByQuery() });
     19      await postToWorkerAndWait(worker, { op: "release", lock_id });
     20    },
     21    shouldBeCached: false,
     22  }, "A held lock on main thread must prevent bfcache even after worker releases locks");
     23 
     24  runWebLocksBfcacheTest({
     25    funcBeforeNavigation: async () => {
     26      const controller = new AbortController();
     27      navigator.locks.request(uniqueNameByQuery(), { signal: controller.signal }, () => new Promise(() => { }));
     28      window.worker = new Worker("/web-locks/resources/worker.js");
     29      await postToWorkerAndWait(worker, { op: "request", name: uniqueNameByQuery() });
     30      controller.abort();
     31    },
     32    shouldBeCached: false,
     33  }, "A held lock on worker must prevent bfcache even after main thread releases locks");
     34 
     35  runWebLocksBfcacheTest({
     36    funcBeforeNavigation: async () => {
     37      const controller = new AbortController();
     38      navigator.locks.request(uniqueNameByQuery(), { signal: controller.signal }, () => new Promise(() => { }));
     39      window.worker = new SharedWorker("/web-locks/resources/worker.js");
     40      worker.port.start();
     41      await postToWorkerAndWait(worker.port, { op: "request", name: uniqueNameByQuery() });
     42      controller.abort();
     43    },
     44    shouldBeCached: false,
     45  }, "A held lock on shared worker must prevent bfcache even after main thread releases locks");
     46 </script>