summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/workers/constructors/Worker
diff options
context:
space:
mode:
authorMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
committerMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
commit5f8de423f190bbb79a62f804151bc24824fa32d8 (patch)
tree10027f336435511475e392454359edea8e25895d /testing/web-platform/tests/workers/constructors/Worker
parent49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff)
downloadUXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip
Add m-esr52 at 52.6.0
Diffstat (limited to 'testing/web-platform/tests/workers/constructors/Worker')
-rw-r--r--testing/web-platform/tests/workers/constructors/Worker/11
-rw-r--r--testing/web-platform/tests/workers/constructors/Worker/AbstractWorker.onerror.html48
-rw-r--r--testing/web-platform/tests/workers/constructors/Worker/Blob-url.html21
-rw-r--r--testing/web-platform/tests/workers/constructors/Worker/DedicatedWorkerGlobalScope-members.worker.js18
-rw-r--r--testing/web-platform/tests/workers/constructors/Worker/ctor-1.html23
-rw-r--r--testing/web-platform/tests/workers/constructors/Worker/ctor-null.html23
-rw-r--r--testing/web-platform/tests/workers/constructors/Worker/ctor-undefined.html23
-rw-r--r--testing/web-platform/tests/workers/constructors/Worker/expected-self-properties.worker.js11
-rw-r--r--testing/web-platform/tests/workers/constructors/Worker/no-arguments-ctor.html13
-rw-r--r--testing/web-platform/tests/workers/constructors/Worker/null1
-rw-r--r--testing/web-platform/tests/workers/constructors/Worker/resolve-empty-string.html22
-rw-r--r--testing/web-platform/tests/workers/constructors/Worker/same-origin.html63
-rw-r--r--testing/web-platform/tests/workers/constructors/Worker/sample_worker/worker.js1
-rw-r--r--testing/web-platform/tests/workers/constructors/Worker/terminate.html44
-rw-r--r--testing/web-platform/tests/workers/constructors/Worker/undefined1
-rw-r--r--testing/web-platform/tests/workers/constructors/Worker/unexpected-self-properties.worker.js11
-rw-r--r--testing/web-platform/tests/workers/constructors/Worker/unresolvable-url.html12
-rw-r--r--testing/web-platform/tests/workers/constructors/Worker/use-base-url.html18
18 files changed, 354 insertions, 0 deletions
diff --git a/testing/web-platform/tests/workers/constructors/Worker/1 b/testing/web-platform/tests/workers/constructors/Worker/1
new file mode 100644
index 000000000..ea0b7c8f4
--- /dev/null
+++ b/testing/web-platform/tests/workers/constructors/Worker/1
@@ -0,0 +1 @@
+postMessage('1');
diff --git a/testing/web-platform/tests/workers/constructors/Worker/AbstractWorker.onerror.html b/testing/web-platform/tests/workers/constructors/Worker/AbstractWorker.onerror.html
new file mode 100644
index 000000000..c40424d65
--- /dev/null
+++ b/testing/web-platform/tests/workers/constructors/Worker/AbstractWorker.onerror.html
@@ -0,0 +1,48 @@
+<!--
+for (;) // should cause onerror to be invoked, but onerror is null, so
+ // the error is "not handled". should fire an ErrorEvent on the
+ // worker.
+ break;
+postMessage(1); // shouldn't do anything since the script doesn't compile
+/*
+-->
+<!doctype html>
+<title>AbstractWorker.onerror</title>
+<link rel=help href="https://html.spec.whatwg.org/multipage/#runtime-script-errors-2">
+<link rel=help href="https://html.spec.whatwg.org/multipage/#report-the-error">
+<link rel=help href="https://html.spec.whatwg.org/multipage/#the-event-handler-processing-algorithm">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id="log"></div>
+<script>
+setup({allow_uncaught_exception:true});
+async_test(function() {
+ var worker = new Worker('#');
+ var error;
+ worker.onerror = this.step_func(function(a, b, c) {
+ error = a;
+ assert_equals('' + a, '[object ErrorEvent]');
+ assert_true("message" in a, 'ErrorEvent.message');
+ assert_equals(typeof a.message, "string", 'ErrorEvent.message');
+ assert_equals(a.filename, document.URL + '#', 'ErrorEvent.filename');
+ assert_true("lineno" in a, 'ErrorEvent.lineno');
+ assert_equals(typeof a.lineno, "number", 'ErrorEvent.lineno');
+ assert_equals(b, undefined, 'unexpected second argument to onerror');
+ assert_equals(c, undefined, 'unexpected third argument to onerror');
+ });
+ worker.onmessage = this.step_func(function(e) {
+ assert_unreached('onmessage was invoked but worker script shouldn\'t have compiled');
+ });
+ window.onerror = this.step_func_done(function(a, b, c, d, e, f) {
+ assert_equals(a, error.message, 'message');
+ assert_equals(b, error.filename, 'filename');
+ assert_equals(c, error.lineno, 'lineno');
+ assert_equals(d, error.colno, 'colno');
+ assert_equals(e, error.error, 'error');
+ assert_equals(f, undefined, 'unexpected sixth argument to onerror');
+ });
+});
+</script>
+<!--
+*/
+//-->
diff --git a/testing/web-platform/tests/workers/constructors/Worker/Blob-url.html b/testing/web-platform/tests/workers/constructors/Worker/Blob-url.html
new file mode 100644
index 000000000..168fc91ae
--- /dev/null
+++ b/testing/web-platform/tests/workers/constructors/Worker/Blob-url.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Web Workers: Worker - Blob url</title>
+<link rel="author" title="Intel" href="http://www.intel.com">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id="log"></div>
+<script>
+
+ async_test(function(t) {
+ var blob = new Blob(["onmessage = function(event) { postMessage(event.data); }"], {type: "text/plain"});
+ var worker = new Worker(window.URL.createObjectURL(blob));
+ var data = "Blob URL";
+ worker.postMessage(data);
+ worker.onmessage = t.step_func(function(event) {
+ assert_equals(event.data, data, "event.data");
+ t.done();
+ });
+ }, "Worker supports Blob url");
+
+</script>
diff --git a/testing/web-platform/tests/workers/constructors/Worker/DedicatedWorkerGlobalScope-members.worker.js b/testing/web-platform/tests/workers/constructors/Worker/DedicatedWorkerGlobalScope-members.worker.js
new file mode 100644
index 000000000..2ef466ccd
--- /dev/null
+++ b/testing/web-platform/tests/workers/constructors/Worker/DedicatedWorkerGlobalScope-members.worker.js
@@ -0,0 +1,18 @@
+importScripts("/resources/testharness.js");
+
+var expected = [
+ 'postMessage', 'onmessage', /* DedicatedWorkerGlobalScope */
+ 'self', 'location', 'close', 'onerror', 'onoffline', 'ononline', /* WorkerGlobalScope */
+ 'addEventListener', 'removeEventListener', 'dispatchEvent', /* EventListener */
+ 'importScripts', 'navigator', /* WorkerUtils */
+ 'setTimeout', 'clearTimeout', 'setInterval', 'clearInterval', /* WindowTimers */
+ 'btoa', 'atob' /* WindowBase64 */
+];
+for (var i = 0; i < expected.length; ++i) {
+ var property = expected[i];
+ test(function() {
+ assert_true(property in self);
+ }, "existence of " + property);
+}
+
+done();
diff --git a/testing/web-platform/tests/workers/constructors/Worker/ctor-1.html b/testing/web-platform/tests/workers/constructors/Worker/ctor-1.html
new file mode 100644
index 000000000..bd865261f
--- /dev/null
+++ b/testing/web-platform/tests/workers/constructors/Worker/ctor-1.html
@@ -0,0 +1,23 @@
+<!--
+postMessage('FAIL');
+/*
+-->
+<!doctype html>
+<title>1 as argument</title>
+<link rel=help href="http://www.whatwg.org/html/#dom-worker">
+<link rel=help href="http://dev.w3.org/2006/webapi/WebIDL/#es-DOMString">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id="log"></div>
+<script>
+var t = async_test();
+t.step(function() {
+ var worker = new Worker(1);
+ worker.addEventListener('message', t.step_func_done(function(e) {
+ assert_equals(e.data, '1')
+ }), false);
+});
+</script>
+<!--
+*/
+//-->
diff --git a/testing/web-platform/tests/workers/constructors/Worker/ctor-null.html b/testing/web-platform/tests/workers/constructors/Worker/ctor-null.html
new file mode 100644
index 000000000..94ab71aef
--- /dev/null
+++ b/testing/web-platform/tests/workers/constructors/Worker/ctor-null.html
@@ -0,0 +1,23 @@
+<!--
+postMessage('FAIL');
+/*
+-->
+<!doctype html>
+<title>null as argument</title>
+<link rel=help href="http://www.whatwg.org/html/#dom-worker">
+<link rel=help href="http://dev.w3.org/2006/webapi/WebIDL/#es-DOMString">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id="log"></div>
+<script>
+var t = async_test();
+t.step(function() {
+ var worker = new Worker(null);
+ worker.addEventListener('message', t.step_func_done(function(e) {
+ assert_equals(e.data, 'null')
+ }), false);
+});
+</script>
+<!--
+*/
+//-->
diff --git a/testing/web-platform/tests/workers/constructors/Worker/ctor-undefined.html b/testing/web-platform/tests/workers/constructors/Worker/ctor-undefined.html
new file mode 100644
index 000000000..2d9eb6e65
--- /dev/null
+++ b/testing/web-platform/tests/workers/constructors/Worker/ctor-undefined.html
@@ -0,0 +1,23 @@
+<!--
+postMessage('FAIL');
+/*
+-->
+<!doctype html>
+<title>undefined as argument</title>
+<link rel=help href="http://www.whatwg.org/html/#dom-worker">
+<link rel=help href="http://dev.w3.org/2006/webapi/WebIDL/#es-DOMString">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id="log"></div>
+<script>
+var t = async_test();
+t.step(function() {
+ var worker = new Worker(undefined);
+ worker.addEventListener('message', t.step_func_done(function(e) {
+ assert_equals(e.data, 'undefined')
+ }), false);
+});
+</script>
+<!--
+*/
+//-->
diff --git a/testing/web-platform/tests/workers/constructors/Worker/expected-self-properties.worker.js b/testing/web-platform/tests/workers/constructors/Worker/expected-self-properties.worker.js
new file mode 100644
index 000000000..0ce41b59e
--- /dev/null
+++ b/testing/web-platform/tests/workers/constructors/Worker/expected-self-properties.worker.js
@@ -0,0 +1,11 @@
+importScripts("/resources/testharness.js");
+
+var expected = ['XMLHttpRequest', 'WebSocket', 'EventSource', 'MessageChannel', 'Worker', 'SharedWorker'];
+for (var i = 0; i < expected.length; ++i) {
+ var property = expected[i];
+ test(function() {
+ assert_true(property in self);
+ }, "existence of " + property);
+}
+
+done();
diff --git a/testing/web-platform/tests/workers/constructors/Worker/no-arguments-ctor.html b/testing/web-platform/tests/workers/constructors/Worker/no-arguments-ctor.html
new file mode 100644
index 000000000..770c7cc93
--- /dev/null
+++ b/testing/web-platform/tests/workers/constructors/Worker/no-arguments-ctor.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>without arguments</title>
+<link rel=help href="http://dev.w3.org/2006/webapi/WebIDL/#es-interface-call">
+<link rel=help href="http://www.whatwg.org/html/#dedicated-workers-and-the-worker-interface">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id="log"></div>
+<script>
+test(function() {
+ assert_throws(new TypeError(), function() { new Worker(); });
+});
+</script>
diff --git a/testing/web-platform/tests/workers/constructors/Worker/null b/testing/web-platform/tests/workers/constructors/Worker/null
new file mode 100644
index 000000000..6d079b514
--- /dev/null
+++ b/testing/web-platform/tests/workers/constructors/Worker/null
@@ -0,0 +1 @@
+postMessage('null');
diff --git a/testing/web-platform/tests/workers/constructors/Worker/resolve-empty-string.html b/testing/web-platform/tests/workers/constructors/Worker/resolve-empty-string.html
new file mode 100644
index 000000000..0426223e0
--- /dev/null
+++ b/testing/web-platform/tests/workers/constructors/Worker/resolve-empty-string.html
@@ -0,0 +1,22 @@
+<!--
+postMessage('ok');
+/*
+-->
+<!doctype html>
+<meta charset=utf-8>
+<title>resolve the empty string</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id="log"></div>
+<script>
+var t = async_test();
+t.step(function() {
+ var worker = new Worker('');
+ worker.addEventListener('message', t.step_func_done(function(e) {
+ assert_equals(e.data, 'ok');
+ }), false);
+});
+</script>
+<!--
+*/
+//-->
diff --git a/testing/web-platform/tests/workers/constructors/Worker/same-origin.html b/testing/web-platform/tests/workers/constructors/Worker/same-origin.html
new file mode 100644
index 000000000..9b0148da3
--- /dev/null
+++ b/testing/web-platform/tests/workers/constructors/Worker/same-origin.html
@@ -0,0 +1,63 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>same-origin checks; the script is in a script element</title>
+<link rel=help href="http://www.whatwg.org/html/#dom-worker">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id="log"></div>
+<script>
+// Needed to prevent a race condition if a worker throws an exception that may or may
+// not propogate to the window before the tests finish
+setup({allow_uncaught_exception: true});
+
+function testSharedWorkerHelper(t, script) {
+ try {
+ var worker = new SharedWorker(script, '');
+ worker.onerror = t.step_func_done(function(e) {
+ assert_true(e instanceof ErrorEvent);
+ });
+ } catch (e) {
+ t.step_func_done(function(e) { assert_true(true); });
+ }
+}
+
+test(function() {
+ assert_throws("SecurityError", function() { new Worker('unsupported:'); });
+}, "unsupported_scheme");
+
+async_test(function() {
+ var worker = new Worker('data:,postMessage(1);');
+ worker.onmessage = this.step_func_done(function(e) {
+ assert_equals(e.data, 1);
+ });
+}, "data_url");
+
+async_test(function(t) {
+ testSharedWorkerHelper(t, 'about:blank');
+}, "about_blank");
+
+async_test(function(t) {
+ testSharedWorkerHelper(t, 'http://www.example.invalid/');
+}, "example_invalid");
+
+async_test(function(t) {
+ testSharedWorkerHelper(t, location.protocol+'//'+location.hostname+':81/');
+}, "port_81");
+
+async_test(function(t) {
+ testSharedWorkerHelper(t, 'https://'+location.hostname+':80/');
+}, "https_port_80");
+
+async_test(function(t) {
+ testSharedWorkerHelper(t, 'https://'+location.hostname+':8000/');
+}, "https_port_8000");
+
+async_test(function(t) {
+ testSharedWorkerHelper(t, 'http://'+location.hostname+':8012/');
+}, "http_post_8012");
+
+async_test(function(t) {
+ testSharedWorkerHelper(t,'javascript:""');
+}, "javascript_url");
+
+</script>
diff --git a/testing/web-platform/tests/workers/constructors/Worker/sample_worker/worker.js b/testing/web-platform/tests/workers/constructors/Worker/sample_worker/worker.js
new file mode 100644
index 000000000..19bbea58e
--- /dev/null
+++ b/testing/web-platform/tests/workers/constructors/Worker/sample_worker/worker.js
@@ -0,0 +1 @@
+onmessage = function(event) { postMessage(event.data); }
diff --git a/testing/web-platform/tests/workers/constructors/Worker/terminate.html b/testing/web-platform/tests/workers/constructors/Worker/terminate.html
new file mode 100644
index 000000000..52f9707df
--- /dev/null
+++ b/testing/web-platform/tests/workers/constructors/Worker/terminate.html
@@ -0,0 +1,44 @@
+<!--
+(function f() {
+ postMessage(1);
+ setTimeout(f, 0);
+})();
+/*
+-->
+<!doctype html>
+<title>terminate()</title>
+<link rel=help href="http://www.whatwg.org/html/#dom-worker-terminate">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id="log"></div>
+<script>
+var t = async_test();
+t.step(function() {
+ var worker = new Worker('#');
+ var i = 0;
+ var expected;
+
+ worker.onmessage = t.step_func(function() {
+ i++;
+ });
+
+ setTimeout(t.step_func(function() {
+ expected = i;
+ start_time = Date.now();
+ //Hang the main thread for a bit to give the worker the chance to post some more messages
+ while(Date.now() - start_time < 500) {
+ //pass
+ }
+ worker.terminate();
+
+ setTimeout(t.step_func(function() {
+ assert_equals(i, expected);
+ t.done();
+ }), 100);
+
+ }), 100);
+});
+</script>
+<!--
+*/
+//-->
diff --git a/testing/web-platform/tests/workers/constructors/Worker/undefined b/testing/web-platform/tests/workers/constructors/Worker/undefined
new file mode 100644
index 000000000..bc7f482e9
--- /dev/null
+++ b/testing/web-platform/tests/workers/constructors/Worker/undefined
@@ -0,0 +1 @@
+postMessage('undefined');
diff --git a/testing/web-platform/tests/workers/constructors/Worker/unexpected-self-properties.worker.js b/testing/web-platform/tests/workers/constructors/Worker/unexpected-self-properties.worker.js
new file mode 100644
index 000000000..aba850116
--- /dev/null
+++ b/testing/web-platform/tests/workers/constructors/Worker/unexpected-self-properties.worker.js
@@ -0,0 +1,11 @@
+importScripts("/resources/testharness.js");
+
+var unexpected = ['open', 'print', 'stop', 'getComputedStyle', 'getSelection', 'releaseEvents', 'captureEvents', 'alert', 'confirm', 'prompt', 'addEventStream', 'removeEventStream', 'back', 'forward', 'attachEvent', 'detachEvent', 'navigate', 'DOMParser', 'XMLSerializer', 'XPathEvaluator', 'XSLTProcessor', 'opera', 'Image', 'Option', 'frames', 'Audio', 'SVGUnitTypes', 'SVGZoomAndPan', 'java', 'netscape', 'sun', 'Packages', 'ByteArray', 'closed', 'defaultStatus', 'document', 'event', 'frameElement', 'history', 'innerHeight', 'innerWidth', 'name', 'opener', 'outerHeight', 'outerWidth', 'pageXOffset', 'pageYOffset', 'parent', 'screen', 'screenLeft', 'screenTop', 'screenX', 'screenY', 'status', 'top', 'window', 'length']; // iterated window in opera and removed expected ones
+for (var i = 0; i < unexpected.length; ++i) {
+ var property = unexpected[i];
+ test(function() {
+ assert_false(property in self);
+ }, "existence of " + property);
+}
+
+done();
diff --git a/testing/web-platform/tests/workers/constructors/Worker/unresolvable-url.html b/testing/web-platform/tests/workers/constructors/Worker/unresolvable-url.html
new file mode 100644
index 000000000..8c04b0087
--- /dev/null
+++ b/testing/web-platform/tests/workers/constructors/Worker/unresolvable-url.html
@@ -0,0 +1,12 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>unresolvable url</title>
+<link rel=help href="http://www.whatwg.org/html/#dom-worker">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id="log"></div>
+<script>
+test(function() {
+ assert_throws("SyntaxError", function() { new Worker('http://invalid url/'); });
+});
+</script>
diff --git a/testing/web-platform/tests/workers/constructors/Worker/use-base-url.html b/testing/web-platform/tests/workers/constructors/Worker/use-base-url.html
new file mode 100644
index 000000000..94ce2a71f
--- /dev/null
+++ b/testing/web-platform/tests/workers/constructors/Worker/use-base-url.html
@@ -0,0 +1,18 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>Use the document base url when resolving worker URLs</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<base href="/workers/constructors/Worker/sample_worker/">
+<script>
+ async_test(function(t) {
+ var worker = new Worker('worker.js');
+ var data = "foo";
+ worker.postMessage(data);
+ worker.onmessage = t.step_func_done(function(event) {
+ assert_equals(event.data, data, "event.data does not match expected data");
+ });
+ worker.onerror = t.unreached_func("received error event");
+ }, "Use the document base url when resolving worker URLs");
+</script>