tor-browser

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

client.sjs (2177B)


      1 /* Any copyright is dedicated to the Public Domain.
      2  * http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 const RESPONSE = `
      5 <!DOCTYPE HTML>
      6 <html>
      7 <head>
      8   <title>Bug 1172870 - page opened by ServiceWorkerClients.OpenWindow</title>
      9 </head>
     10 <body>
     11 <p id="display"></p>
     12 <div id="content" style="display: none"></div>
     13 <pre id="test"></pre>
     14 <h1>client.sjs</h1>
     15 <script class="testbody" type="text/javascript">
     16 
     17   window.onload = function() {
     18     if (document.domain === "example.com") {
     19       navigator.serviceWorker.ready.then(function(result) {
     20         navigator.serviceWorker.onmessage = function(event) {
     21           if (event.data !== "CLOSE") {
     22             dump("ERROR: unexepected reply from the service worker.\\n");
     23           }
     24           if (parent) {
     25             parent.postMessage("CLOSE", "*");
     26           }
     27           window.close();
     28         }
     29 
     30         let message = window.crossOriginIsolated ? "NEW_ISOLATED_WINDOW" : "NEW_WINDOW";
     31         navigator.serviceWorker.controller.postMessage(message);
     32       })
     33     } else {
     34       window.onmessage = function(event) {
     35         if (event.data !== "CLOSE") {
     36             dump("ERROR: unexepected reply from the iframe.\\n");
     37         }
     38         window.close();
     39       }
     40 
     41       var iframe = document.createElement('iframe');
     42       iframe.src = "https://example.com/tests/dom/notification/test/mochitest/open_window/client.sjs";
     43       document.body.appendChild(iframe);
     44     }
     45   }
     46 
     47 </script>
     48 </pre>
     49 </body>
     50 </html>
     51 `;
     52 
     53 function handleRequest(request, response) {
     54   let query = new URLSearchParams(request.queryString);
     55 
     56   // If the request has been marked to be isolated with COOP+COEP, set the appropriate headers.
     57   if (query.get("crossOriginIsolated") == "true") {
     58     response.setHeader("Cross-Origin-Opener-Policy", "same-origin", false);
     59   }
     60 
     61   // Always set the COEP and CORP headers, so that this document can be framed
     62   // by a document which has also set COEP to require-corp.
     63   response.setHeader("Cross-Origin-Embedder-Policy", "require-corp", false);
     64   response.setHeader("Cross-Origin-Resource-Policy", "cross-origin", false);
     65 
     66   response.setHeader("Content-Type", "text/html", false);
     67   response.write(RESPONSE);
     68 }