tor-browser

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

test_serviceworker.html (2104B)


      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 1137245 - Allow IndexedDB usage in ServiceWorkers</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 <p id="display"></p>
     14 <div id="content" style="display: none"></div>
     15 <pre id="test"></pre>
     16 <script src="utils.js"></script>
     17 <script class="testbody" type="text/javascript">
     18 
     19  var regisration;
     20  function simpleRegister() {
     21    return navigator.serviceWorker.register("service_worker.js", {
     22      scope: 'service_worker_client.html'
     23    }).then(swr => waitForState(swr.installing, 'activated', swr));
     24  }
     25 
     26  function unregister() {
     27    return registration.unregister();
     28  }
     29 
     30  function testIndexedDBAvailable(sw) {
     31    registration = sw;
     32    var p = new Promise(function(resolve, reject) {
     33      window.onmessage = function(e) {
     34        if (e.data === "READY") {
     35          sw.active.postMessage("GO");
     36          return;
     37        }
     38 
     39        if (!("available" in e.data)) {
     40          ok(false, "Something went wrong");
     41          reject();
     42          return;
     43        }
     44 
     45        ok(e.data.available, "IndexedDB available in service worker.");
     46        resolve();
     47      }
     48    });
     49 
     50    var content = document.getElementById("content");
     51    ok(content, "Parent exists.");
     52 
     53    iframe = document.createElement("iframe");
     54    iframe.setAttribute('src', "service_worker_client.html");
     55    content.appendChild(iframe);
     56 
     57    return p.then(() => content.removeChild(iframe));
     58  }
     59 
     60  function runTest() {
     61    simpleRegister()
     62      .then(testIndexedDBAvailable)
     63      .then(unregister)
     64      .then(SimpleTest.finish)
     65      .catch(function(e) {
     66        ok(false, "Some test failed with error " + e);
     67        SimpleTest.finish();
     68      });
     69  }
     70 
     71  SimpleTest.waitForExplicitFinish();
     72  SpecialPowers.pushPrefEnv({"set": [
     73    ["dom.serviceWorkers.enabled", true],
     74    ["dom.serviceWorkers.testing.enabled", true]
     75  ]}, runTest);
     76 </script>
     77 </pre>
     78 </body>
     79 </html>