tor-browser

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

controlled-dedicatedworker-postMessage.https.html (1628B)


      1 <html>
      2 <head>
      3 <meta name="timeout" content="long">
      4 <script src="/resources/testharness.js"></script>
      5 <script src="/resources/testharnessreport.js"></script>
      6 <script src="resources/test-helpers.sub.js"></script>
      7 </head>
      8 <body>
      9 <script>
     10 promise_test(async (test) => {
     11    const registration = await navigator.serviceWorker.register("postMessage-client-worker.js", { scope : 'resources' });
     12    activeWorker = registration.active;
     13    if (activeWorker)
     14        return;
     15 
     16    activeWorker = registration.installing;
     17    await new Promise(resolve => {
     18        activeWorker.addEventListener('statechange', () => {
     19            if (activeWorker.state === "activated")
     20                resolve();
     21        });
     22    });
     23 }, "Register service worker");
     24 
     25 promise_test(async (test) => {
     26    const worker = new Worker('resources/controlled-worker-postMessage.js');
     27    const event = await new Promise((resolve, reject) => {
     28       test.step_timeout(() => reject("test timed out"), 3000);
     29       worker.onmessage = resolve;
     30    });
     31    assert_equals(event.data, 0);
     32 }, "Verify dedicated worker gets messages if setting event listener early");
     33 
     34 promise_test(async (test) => {
     35    const worker = new Worker('resources/controlled-worker-late-postMessage.js?repeatMessages');
     36    const event = await new Promise((resolve, reject) => {
     37       test.step_timeout(() => reject("test timed out"), 3000);
     38       worker.onmessage = resolve;
     39    });
     40    assert_not_equals(event.data, "No message received");
     41    assert_true(event.data > 0);
     42 }, "Verify dedicated worker does not get all messages if not setting event listener early");
     43 </script>
     44 </body>
     45 </html>