/* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ "use strict"; // Tests errors are handled properly by the DevToolsWorker. const { DevToolsWorker } = ChromeUtils.importESModule( "resource://devtools/shared/worker/worker.sys.mjs" ); add_task(async function () { try { new DevToolsWorker("resource://i/dont/exist.js"); ok(false, "Creating a DevToolsWorker with an invalid URL throws"); } catch (e) { ok(true, "Creating a DevToolsWorker with an invalid URL throws"); } const worker = new DevToolsWorker( getRootDirectory(gTestPath) + "file_worker-02.worker.js" ); try { await worker.performTask("myTask", { shouldThrow: true }); ok( false, "DevToolsWorker returns a rejected promise when an error occurs in the worker" ); } catch (e) { ok( true, "DevToolsWorker returns a rejected promise when an error occurs in the worker" ); } try { await worker.performTask("not a real task"); ok( false, "DevToolsWorker returns a rejected promise when task does not exist" ); } catch (e) { ok( true, "DevToolsWorker returns a rejected promise when task does not exist" ); } worker.destroy(); try { await worker.performTask("myTask"); ok( false, "DevToolsWorker rejects when performing a task on a destroyed worker" ); } catch (e) { ok( true, "DevToolsWorker rejects when performing a task on a destroyed worker" ); } });