summaryrefslogtreecommitdiffstats
path: root/dom/workers/test/importScripts_3rdParty_worker.js
diff options
context:
space:
mode:
Diffstat (limited to 'dom/workers/test/importScripts_3rdParty_worker.js')
-rw-r--r--dom/workers/test/importScripts_3rdParty_worker.js88
1 files changed, 88 insertions, 0 deletions
diff --git a/dom/workers/test/importScripts_3rdParty_worker.js b/dom/workers/test/importScripts_3rdParty_worker.js
new file mode 100644
index 0000000000..326d48f77a
--- /dev/null
+++ b/dom/workers/test/importScripts_3rdParty_worker.js
@@ -0,0 +1,88 @@
+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);
+};