tor-browser

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

WorkerGlobalScope-close.js (1691B)


      1 // Check to see if the worker handles pending events. Messages after close() will not be sent to the parent page, so we use exceptions instead to report failures after close().
      2 onmessage = function(evt)
      3 {
      4    if (evt.data == "closeWithPendingEvents") {
      5        // Set a timer to generate an event - minimum timeout is 1ms.
      6        setTimeout(function() {
      7                postMessage("pending event processed");
      8                throw "should not be executed";
      9            }, 1);
     10        var start = new Date().getTime();
     11        // Loop for 10 ms so the timer is ready to fire
     12        while (new Date().getTime() - start < 100)
     13            ;
     14        // Now close - timer should not fire
     15        close();
     16    } else if (evt.data == "typeofClose") {
     17        postMessage("typeof close: " + (typeof close));
     18    } else if (evt.data == "close") {
     19        close();
     20        postMessage("Should be delivered");
     21    } else if (evt.data == "ping") {
     22        postMessage("pong");
     23    } else if (evt.data == "throw") {
     24        throw "should never be executed";
     25    } else if (evt.data == "closeWithError") {
     26        close();
     27        nonExistentFunction();  // Undefined function - throws exception
     28    } else if (evt.data == "close_post_loop") {
     29        close();
     30        postMessage("closed");
     31        while(true) {} // Should loop forever.
     32    } else if (evt.data == "take_port") {
     33        messagePort = evt.ports[0];
     34        messagePort.onmessage = function(event) {
     35            close();
     36            postMessage("echo_" + event.data);
     37        }
     38    } else if (evt.data == "start_port") {
     39        messagePort.start();
     40    } else {
     41        postMessage("FAIL: Unknown message type: " + evt.data);
     42    }
     43 }