tor-browser

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

cache-keys-attributes-for-service-worker.https.html (2563B)


      1 <!DOCTYPE html>
      2 <title>Cache.keys (checking request attributes that can be set only on service workers)</title>
      3 <link rel="help" href="https://w3c.github.io/ServiceWorker/#cache-keys">
      4 <script src="/resources/testharness.js"></script>
      5 <script src="/resources/testharnessreport.js"></script>
      6 <script src="./../service-worker/resources/test-helpers.sub.js"></script>
      7 <script>
      8 const worker = './resources/cache-keys-attributes-for-service-worker.js';
      9 
     10 function wait(ms) {
     11  return new Promise(resolve => step_timeout(resolve, ms));
     12 }
     13 
     14 promise_test(async (t) => {
     15    const scope = './resources/blank.html?name=isReloadNavigation';
     16    let frame;
     17    let reg;
     18 
     19    try {
     20      reg = await service_worker_unregister_and_register(t, worker, scope);
     21      await wait_for_state(t, reg.installing, 'activated');
     22      frame = await with_iframe(scope);
     23      assert_equals(frame.contentDocument.body.textContent,
     24                    'original: false, stored: false');
     25      await new Promise((resolve) => {
     26        frame.onload = resolve;
     27        frame.contentWindow.location.reload();
     28      });
     29      assert_equals(frame.contentDocument.body.textContent,
     30                    'original: true, stored: true');
     31    } finally {
     32      if (frame) {
     33        frame.remove();
     34      }
     35      if (reg) {
     36        await reg.unregister();
     37      }
     38    }
     39 }, 'Request.IsReloadNavigation should persist.');
     40 
     41 promise_test(async (t) => {
     42    const scope = './resources/blank.html?name=isHistoryNavigation';
     43    let frame;
     44    let reg;
     45 
     46    try {
     47      reg = await service_worker_unregister_and_register(t, worker, scope);
     48      await wait_for_state(t, reg.installing, 'activated');
     49      frame = await with_iframe(scope);
     50      assert_equals(frame.contentDocument.body.textContent,
     51                    'original: false, stored: false');
     52      // Use step_timeout(0) to ensure the history entry is created for Blink
     53      // and WebKit. See https://bugs.webkit.org/show_bug.cgi?id=42861.
     54      await wait(0);
     55      await new Promise((resolve) => {
     56        frame.onload = resolve;
     57        frame.src = '../resources/blank.html?ignore';
     58      });
     59      await wait(0);
     60      await new Promise((resolve) => {
     61        frame.onload = resolve;
     62        frame.contentWindow.history.go(-1);
     63      });
     64      assert_equals(frame.contentDocument.body.textContent,
     65                    'original: true, stored: true');
     66    } finally {
     67      if (frame) {
     68        frame.remove();
     69      }
     70      if (reg) {
     71        await reg.unregister();
     72      }
     73    }
     74 }, 'Request.IsHistoryNavigation should persist.');
     75 </script>