tor-browser

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

service-worker.https.html (1588B)


      1 <!DOCTYPE html>
      2 <meta charset=utf-8>
      3 <script src="/resources/testharness.js"></script>
      4 <script src="/resources/testharnessreport.js"></script>
      5 <script>
      6 
      7 const SERVICE_WORKER_TEST_CHANNEL_NAME = 'service worker';
      8 const events = [];
      9 const c1 = new BroadcastChannel(SERVICE_WORKER_TEST_CHANNEL_NAME);
     10 const c2 = new BroadcastChannel(SERVICE_WORKER_TEST_CHANNEL_NAME);
     11 c1.onmessage = e => events.push(e);
     12 c2.onmessage = e => events.push(e);
     13 
     14 function testCompletion(t) {
     15  return new Promise((resolve) => {
     16    c2.addEventListener("message", t.step_func(e => {
     17      if (e.data == 'from worker') {
     18        c2.postMessage('from c2');
     19      } else if (e.data == 'done') {
     20        assert_equals(events.length, 5);
     21        assert_equals(events[0].data, 'from worker');
     22        assert_equals(events[0].target, c1);
     23        assert_equals(events[1].data, 'from worker');
     24        assert_equals(events[1].target, c2);
     25        assert_equals(events[2].data, 'from c2');
     26        assert_equals(events[3].data, 'done');
     27        assert_equals(events[3].target, c1);
     28        assert_equals(events[4].data, 'done');
     29        assert_equals(events[4].target, c2);
     30        resolve();
     31      }
     32    }));
     33  });
     34 }
     35 
     36 promise_test(async t => {
     37 
     38    const testResults = testCompletion(t);
     39    const SCRIPT = "resources/service-worker.js";
     40    const SCOPE = "/webmessaging/broadcastchannel/resources/not-used/";
     41 
     42    const reg = await navigator.serviceWorker.register(SCRIPT, {'scope': SCOPE});
     43    t.add_cleanup(() => reg.unregister());
     44 
     45    return testResults;
     46  }, 'BroadcastChannel works in service workers');
     47 </script>