tor-browser

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

browser_worker-02.js (1944B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 // Tests errors are handled properly by the DevToolsWorker.
      7 
      8 const { DevToolsWorker } = ChromeUtils.importESModule(
      9  "resource://devtools/shared/worker/worker.sys.mjs"
     10 );
     11 
     12 const blob = new Blob(
     13  [
     14    `
     15 importScripts("resource://gre/modules/workers/require.js");
     16 const { createTask } = require("resource://devtools/shared/worker/helper.js");
     17 
     18 createTask(self, "myTask", function({
     19  shouldThrow,
     20 } = {}) {
     21  if (shouldThrow) {
     22    throw new Error("err");
     23  }
     24 
     25  return "OK";
     26 });
     27    `,
     28  ],
     29  { type: "application/javascript" }
     30 );
     31 
     32 add_task(async function () {
     33  try {
     34    new DevToolsWorker("resource://i/dont/exist.js");
     35    ok(false, "Creating a DevToolsWorker with an invalid URL throws");
     36  } catch (e) {
     37    ok(true, "Creating a DevToolsWorker with an invalid URL throws");
     38  }
     39 
     40  const WORKER_URL = URL.createObjectURL(blob);
     41  const worker = new DevToolsWorker(WORKER_URL);
     42  try {
     43    await worker.performTask("myTask", { shouldThrow: true });
     44    ok(
     45      false,
     46      "DevToolsWorker returns a rejected promise when an error occurs in the worker"
     47    );
     48  } catch (e) {
     49    ok(
     50      true,
     51      "DevToolsWorker returns a rejected promise when an error occurs in the worker"
     52    );
     53  }
     54 
     55  try {
     56    await worker.performTask("not a real task");
     57    ok(
     58      false,
     59      "DevToolsWorker returns a rejected promise when task does not exist"
     60    );
     61  } catch (e) {
     62    ok(
     63      true,
     64      "DevToolsWorker returns a rejected promise when task does not exist"
     65    );
     66  }
     67 
     68  worker.destroy();
     69  try {
     70    await worker.performTask("myTask");
     71    ok(
     72      false,
     73      "DevToolsWorker rejects when performing a task on a destroyed worker"
     74    );
     75  } catch (e) {
     76    ok(
     77      true,
     78      "DevToolsWorker rejects when performing a task on a destroyed worker"
     79    );
     80  }
     81 
     82  URL.revokeObjectURL(WORKER_URL);
     83 });