tor-browser

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

test_workerUnregister.html (2398B)


      1 <!--
      2  Any copyright is dedicated to the Public Domain.
      3  http://creativecommons.org/publicdomain/zero/1.0/
      4 -->
      5 <!DOCTYPE HTML>
      6 <html>
      7 <head>
      8  <title>Bug 982728 - Test ServiceWorkerGlobalScope.unregister</title>
      9  <script src="/tests/SimpleTest/SimpleTest.js"></script>
     10  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
     11 </head>
     12 <body>
     13 <div id="container"></div>
     14 <script class="testbody" type="text/javascript">
     15 
     16  function simpleRegister() {
     17    return navigator.serviceWorker.register("worker_unregister.js", { scope: "unregister/" }).then(function(swr) {
     18      if (swr.installing) {
     19        return new Promise(function(resolve, reject) {
     20          swr.installing.onstatechange = function(e) {
     21            if (swr.waiting) {
     22              swr.waiting.onstatechange = function(event) {
     23                if (swr.active) {
     24                  resolve();
     25                } else if (swr.waiting && swr.waiting.state == "redundant") {
     26                  reject("Should not go into redundant");
     27                }
     28              }
     29            } else {
     30              if (swr.active) {
     31                resolve();
     32              } else {
     33                reject("No waiting and no active!");
     34              }
     35            }
     36          }
     37        });
     38      } else {
     39        return Promise.reject("Installing should be non-null");
     40      }
     41    });
     42  }
     43 
     44  function waitForMessages(sw) {
     45    var p = new Promise(function(resolve, reject) {
     46      window.onmessage = function(e) {
     47        if (e.data === "DONE") {
     48          ok(true, "The worker has unregistered itself");
     49        } else if (e.data === "ERROR") {
     50          ok(false, "The worker has unregistered itself");
     51        } else if (e.data === "FINISH") {
     52          resolve();
     53        }
     54      }
     55    });
     56 
     57    var frame = document.createElement("iframe");
     58    frame.setAttribute("src", "unregister/unregister.html");
     59    document.body.appendChild(frame);
     60 
     61    return p;
     62  }
     63 
     64  function runTest() {
     65    simpleRegister().then(waitForMessages).catch(function(e) {
     66      ok(false, "Something went wrong.");
     67    }).then(function() {
     68      SimpleTest.finish();
     69    });
     70  }
     71 
     72  SimpleTest.waitForExplicitFinish();
     73  SpecialPowers.pushPrefEnv({"set": [
     74    ["dom.serviceWorkers.exemptFromPerDomainMax", true],
     75    ["dom.serviceWorkers.enabled", true],
     76    ["dom.serviceWorkers.testing.enabled", true]
     77  ]}, runTest);
     78 </script>
     79 </pre>
     80 </body>
     81 </html>