const workerURL = "http://mochi.test:8888/tests/dom/workers/test/importScripts_3rdParty_worker.js"; onmessage = function (a) { if (a.data.nested) { var worker = new Worker(workerURL); worker.onmessage = function (event) { postMessage(event.data); }; worker.onerror = function (event) { event.preventDefault(); postMessage({ error: event instanceof ErrorEvent && event.filename == workerURL, }); }; a.data.nested = false; worker.postMessage(a.data); return; } // This first URL will use the same origin of this script. var sameOriginURL = new URL(a.data.url); var fileName1 = 42; // This is cross-origin URL. var crossOriginURL = new URL(a.data.url); crossOriginURL.host = "example.com"; crossOriginURL.port = 80; var fileName2 = 42; if (a.data.test == "none") { importScripts(crossOriginURL.href); return; } try { importScripts(sameOriginURL.href); } catch (e) { if (!(e instanceof SyntaxError)) { postMessage({ result: false }); return; } fileName1 = e.fileName; } if (fileName1 != sameOriginURL.href || !fileName1) { postMessage({ result: false }); return; } if (a.data.test == "try") { var exception; try { importScripts(crossOriginURL.href); } catch (e) { fileName2 = e.filename; exception = e; } postMessage({ result: fileName2 == workerURL && exception.name == "NetworkError" && exception.code == DOMException.NETWORK_ERR, }); return; } if (a.data.test == "eventListener") { addEventListener("error", function (event) { event.preventDefault(); postMessage({ result: event instanceof ErrorEvent && event.filename == workerURL, }); }); } if (a.data.test == "onerror") { onerror = function (...args) { postMessage({ result: args[1] == workerURL }); }; } importScripts(crossOriginURL.href); };