tor-browser

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

worker_wrapper.js (2032B)


      1 // Any copyright is dedicated to the Public Domain.
      2 // http://creativecommons.org/publicdomain/zero/1.0/
      3 //
      4 // Worker-side wrapper script for the worker_driver.js helper code.  See
      5 // the comments at the top of worker_driver.js for more information.
      6 
      7 function ok(a, msg) {
      8  dump("OK: " + !!a + "  =>  " + a + ": " + msg + "\n");
      9  postMessage({ type: "status", status: !!a, msg: a + ": " + msg });
     10 }
     11 
     12 function is(a, b, msg) {
     13  dump("IS: " + (a === b) + "  =>  " + a + " | " + b + ": " + msg + "\n");
     14  postMessage({
     15    type: "status",
     16    status: a === b,
     17    msg: a + " === " + b + ": " + msg,
     18  });
     19 }
     20 
     21 function workerTestArrayEquals(a, b) {
     22  if (!Array.isArray(a) || !Array.isArray(b) || a.length != b.length) {
     23    return false;
     24  }
     25  for (var i = 0, n = a.length; i < n; ++i) {
     26    if (a[i] !== b[i]) {
     27      return false;
     28    }
     29  }
     30  return true;
     31 }
     32 
     33 function workerTestDone() {
     34  postMessage({ type: "finish" });
     35 }
     36 
     37 function workerTestGetPermissions(permissions, cb) {
     38  addEventListener("message", function workerTestGetPermissionsCB(e) {
     39    if (
     40      e.data.type != "returnPermissions" ||
     41      !workerTestArrayEquals(permissions, e.data.permissions)
     42    ) {
     43      return;
     44    }
     45    removeEventListener("message", workerTestGetPermissionsCB);
     46    cb(e.data.result);
     47  });
     48  postMessage({
     49    type: "getPermissions",
     50    permissions,
     51  });
     52 }
     53 
     54 function workerTestGetHelperData(cb) {
     55  addEventListener("message", function workerTestGetHelperDataCB(e) {
     56    if (e.data.type !== "returnHelperData") {
     57      return;
     58    }
     59    removeEventListener("message", workerTestGetHelperDataCB);
     60    cb(e.data.result);
     61  });
     62  postMessage({
     63    type: "getHelperData",
     64  });
     65 }
     66 
     67 addEventListener("message", function workerWrapperOnMessage(e) {
     68  removeEventListener("message", workerWrapperOnMessage);
     69  var data = e.data;
     70  try {
     71    importScripts(data.script);
     72  } catch (ex) {
     73    postMessage({
     74      type: "status",
     75      status: false,
     76      msg: "worker failed to import " + data.script + "; error: " + ex.message,
     77    });
     78  }
     79 });