tor-browser

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

threadTimeouts_worker.js (1132B)


      1 /**
      2 * Any copyright is dedicated to the Public Domain.
      3 * http://creativecommons.org/publicdomain/zero/1.0/
      4 */
      5 var gTimeoutId;
      6 var gTimeoutCount = 0;
      7 var gIntervalCount = 0;
      8 
      9 function timeoutFunc() {
     10  if (++gTimeoutCount > 1) {
     11    throw new Error("Timeout called more than once!");
     12  }
     13  postMessage("timeoutFinished");
     14 }
     15 
     16 function intervalFunc() {
     17  if (++gIntervalCount == 2) {
     18    postMessage("intervalFinished");
     19  }
     20 }
     21 
     22 function messageListener(event) {
     23  switch (event.data) {
     24    case "startTimeout":
     25      gTimeoutId = setTimeout(timeoutFunc, 2000);
     26      clearTimeout(gTimeoutId);
     27      gTimeoutId = setTimeout(timeoutFunc, 2000);
     28      break;
     29    case "startInterval":
     30      gTimeoutId = setInterval(intervalFunc, 2000);
     31      break;
     32    case "cancelInterval":
     33      clearInterval(gTimeoutId);
     34      postMessage("intervalCanceled");
     35      break;
     36    case "startExpression":
     37      // eslint-disable-next-line no-implied-eval
     38      setTimeout("this.postMessage('expressionFinished');", 2000);
     39      break;
     40    default:
     41      throw "Bad message: " + event.data;
     42  }
     43 }
     44 
     45 addEventListener("message", messageListener, false);