tor-browser

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

multi_sharedWorker_frame.html (1615B)


      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>Test for SharedWorker</title>
      9  </head>
     10  <body>
     11    <script type="text/javascript">
     12      "use strict";
     13 
     14      function postMessageToParentOrOpener(message) {
     15        if (parent != window) {
     16          parent.postMessage(message, "*");
     17        }
     18      }
     19 
     20      function debug(message) {
     21        if (typeof(message) != "string") {
     22          throw new Error("debug() only accepts strings!");
     23        }
     24        postMessageToParentOrOpener(message);
     25      }
     26 
     27      let worker;
     28 
     29      window.addEventListener("message", function(event) {
     30        if (!worker) {
     31          worker = new SharedWorker("multi_sharedWorker_sharedWorker.js",
     32                                    "FrameWorker");
     33          worker.onerror = function(error) {
     34            debug("Worker error: " + error.message);
     35            error.preventDefault();
     36 
     37            let data = {
     38              type: "error",
     39              message: error.message,
     40              filename: error.filename,
     41              lineno: error.lineno,
     42              isErrorEvent: error instanceof ErrorEvent
     43            };
     44            postMessageToParentOrOpener(data);
     45          };
     46 
     47          worker.port.onmessage = function(msg) {
     48            debug("Worker message: " + JSON.stringify(msg.data));
     49            postMessageToParentOrOpener(msg.data);
     50          };
     51        }
     52 
     53        debug("Posting message: " + JSON.stringify(event.data));
     54        worker.port.postMessage(event.data);
     55      });
     56    </script>
     57  </body>
     58 </html>