tor-browser

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

test_serviceworker_interfaces.html (2520B)


      1 <!-- Any copyright is dedicated to the Public Domain.
      2   - http://creativecommons.org/publicdomain/zero/1.0/ -->
      3 <!DOCTYPE HTML>
      4 <html>
      5 <head>
      6  <title>Validate Interfaces Exposed to Service Workers</title>
      7  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      8  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
      9  <script src="../../tests/mochitest/general/interface_exposure_checker.js"></script>
     10  <script src="../worker_driver.js"></script>
     11 </head>
     12 <body>
     13 <script class="testbody" type="text/javascript">
     14 
     15  function setupSW(registration) {
     16    var iframe;
     17    var worker = registration.installing ||
     18                 registration.waiting ||
     19                 registration.active;
     20    window.onmessage = function(event) {
     21      if (event.data.type == 'finish') {
     22        iframe.remove();
     23        registration.unregister().then(function(success) {
     24          ok(success, "The service worker should be unregistered successfully");
     25 
     26          SimpleTest.finish();
     27        }, function(e) {
     28          dump("Unregistering the SW failed with " + e + "\n");
     29          SimpleTest.finish();
     30        });
     31      } else if (event.data.type == 'status') {
     32        ok(event.data.status, event.data.msg);
     33 
     34      } else if (event.data.type == 'getPrefs') {
     35        let result = {};
     36        event.data.prefs.forEach(function(pref) {
     37          result[pref] = SpecialPowers.Services.prefs.getBoolPref(pref);
     38        });
     39        worker.postMessage({
     40          type: 'returnPrefs',
     41          prefs: event.data.prefs,
     42          result
     43        });
     44 
     45      } else if (event.data.type == 'getHelperData') {
     46        worker.postMessage({
     47          type: 'returnHelperData',
     48          result: getHelperData(),
     49        });
     50      }
     51    }
     52 
     53    worker.onerror = function(event) {
     54      ok(false, 'Worker had an error: ' + event.data);
     55      SimpleTest.finish();
     56    };
     57 
     58    iframe = document.createElement("iframe");
     59    iframe.src = "message_receiver.html";
     60    iframe.onload = function() {
     61      worker.postMessage({ script: "test_serviceworker_interfaces.js" });
     62    };
     63    document.body.appendChild(iframe);
     64  }
     65 
     66  function runTest() {
     67    navigator.serviceWorker.register("serviceworker_wrapper.js", {scope: "."})
     68      .then(setupSW);
     69  }
     70 
     71  SimpleTest.waitForExplicitFinish();
     72  onload = function() {
     73    var prefs = [
     74      ["dom.serviceWorkers.exemptFromPerDomainMax", true],
     75      ["dom.serviceWorkers.enabled", true],
     76    ];
     77    SpecialPowers.pushPrefEnv({"set": prefs}, runTest);
     78  };
     79 </script>
     80 </body>
     81 </html>