tor-browser

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

test_eventsource_intercept.html (3583B)


      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 1182103 - Test EventSource scenarios with fetch interception</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 class="testbody" type="text/javascript">
     17 
     18  function testFrame(src) {
     19    return new Promise(function(resolve, reject) {
     20      var iframe = document.createElement("iframe");
     21      iframe.src = src;
     22      window.onmessage = function(e) {
     23        if (e.data.status == "callback") {
     24          switch(e.data.data) {
     25            case "ok":
     26              ok(e.data.condition, e.data.message);
     27              break;
     28            case "ready":
     29              iframe.contentWindow.postMessage({status: "callback", data: "eventsource"}, "*");
     30              break;
     31            case "done":
     32              window.onmessage = null;
     33              iframe.src = "about:blank";
     34              document.body.removeChild(iframe);
     35              iframe = null;
     36              resolve();
     37              break;
     38            default:
     39              ok(false, "Something went wrong");
     40              break;
     41          }
     42        } else {
     43          ok(false, "Something went wrong");
     44        }
     45      };
     46      document.body.appendChild(iframe);
     47    });
     48  }
     49 
     50  function runTest() {
     51      Promise.resolve()
     52        .then(() => {
     53        info("Going to intercept and test opaque responses");
     54        return testFrame("eventsource/eventsource_register_worker.html" +
     55                         "?script=eventsource_opaque_response_intercept_worker.js");
     56      })
     57      .then(() => {
     58        return testFrame("eventsource/eventsource_opaque_response.html");
     59      })
     60      .then(() => {
     61        info("Going to intercept and test cors responses");
     62        return testFrame("eventsource/eventsource_register_worker.html" +
     63                         "?script=eventsource_cors_response_intercept_worker.js");
     64      })
     65      .then(() => {
     66        return testFrame("eventsource/eventsource_cors_response.html");
     67      })
     68      .then(() => {
     69        info("Going to intercept and test synthetic responses");
     70        return testFrame("eventsource/eventsource_register_worker.html" +
     71                         "?script=eventsource_synthetic_response_intercept_worker.js");
     72      })
     73      .then(() => {
     74        return testFrame("eventsource/eventsource_synthetic_response.html");
     75      })
     76      .then(() => {
     77        info("Going to intercept and test mixed content cors responses");
     78        return testFrame("https://example.com/tests/dom/serviceworkers/test/" +
     79                         "eventsource/eventsource_register_worker.html" +
     80                         "?script=eventsource_mixed_content_cors_response_intercept_worker.js");
     81      })
     82      .then(() => {
     83        return testFrame("https://example.com/tests/dom/serviceworkers/test/" +
     84                         "eventsource/eventsource_mixed_content_cors_response.html");
     85      })
     86      .then(SimpleTest.finish)
     87      .catch(function(e) {
     88        ok(false, "Some test failed with error " + e);
     89        SimpleTest.finish();
     90      });
     91  }
     92 
     93  SimpleTest.waitForExplicitFinish();
     94  SpecialPowers.pushPrefEnv({"set": [
     95    ["dom.serviceWorkers.exemptFromPerDomainMax", true],
     96    ["dom.serviceWorkers.enabled", true],
     97    ["dom.serviceWorkers.testing.enabled", true],
     98  ]}, runTest);
     99 </script>
    100 </pre>
    101 </body>
    102 </html>