summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/trusted-types/support/WorkerGlobalScope-importScripts.https.js
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/trusted-types/support/WorkerGlobalScope-importScripts.https.js')
-rw-r--r--testing/web-platform/tests/trusted-types/support/WorkerGlobalScope-importScripts.https.js84
1 files changed, 84 insertions, 0 deletions
diff --git a/testing/web-platform/tests/trusted-types/support/WorkerGlobalScope-importScripts.https.js b/testing/web-platform/tests/trusted-types/support/WorkerGlobalScope-importScripts.https.js
new file mode 100644
index 0000000000..c40e8550dd
--- /dev/null
+++ b/testing/web-platform/tests/trusted-types/support/WorkerGlobalScope-importScripts.https.js
@@ -0,0 +1,84 @@
+let test_setup_policy = trustedTypes.createPolicy("hurrayanythinggoes", {
+ createScriptURL: x => x
+});
+importScripts(test_setup_policy.createScriptURL("/resources/testharness.js"));
+
+// Determine worker type (for better logging)
+let worker_type = "unknown";
+if (this.DedicatedWorkerGlobalScope !== undefined) {
+ worker_type = "dedicated worker";
+} else if (this.SharedWorkerGlobalScope !== undefined) {
+ worker_type = "shared worker";
+} else if (this.ServiceWorkerGlobalScope !== undefined) {
+ worker_type = "service worker";
+}
+
+let test_policy = trustedTypes.createPolicy("xxx", {
+ createScriptURL: url => url.replace("play", "work")
+});
+
+test(t => {
+ self.result = "Fail";
+ let trusted_url = test_policy.createScriptURL("player.js");
+ assert_true(this.trustedTypes.isScriptURL(trusted_url));
+ importScripts(trusted_url); // worker.js modifies self.result.
+ assert_equals(self.result, "Pass");
+}, "importScripts with TrustedScriptURL works in " + worker_type);
+
+test(t => {
+ let untrusted_url = "player.js";
+ assert_throws_js(TypeError,
+ function() { importScripts(untrusted_url) },
+ "importScripts(untrusted_url)");
+}, "importScripts with untrusted URLs throws in " + worker_type);
+
+test(t => {
+ assert_throws_js(TypeError,
+ function() { importScripts(null) },
+ "importScripts(null)");
+}, "null is not a trusted script URL throws in " + worker_type);
+
+test(t => {
+ self.result = "Fail";
+ let trusted_url = test_policy.createScriptURL("player.js?variant1");
+ let trusted_url2 = test_policy.createScriptURL("player.js?variant2");
+ importScripts(trusted_url, trusted_url2);
+ assert_equals(self.result, "Pass");
+}, "importScripts with two URLs, both trusted, in " + worker_type);
+
+test(t => {
+ let untrusted_url = "player.js?variant1";
+ let untrusted_url2 = "player.js?variant2";
+ assert_throws_js(TypeError,
+ function() { importScripts(untrusted_url, untrusted_url2) },
+ "importScripts(untrusted_url, untrusted_url2)");
+}, "importScripts with two URLs, both strings, in " + worker_type);
+
+test(t => {
+ let untrusted_url = "player.js";
+ let trusted_url = test_policy.createScriptURL(untrusted_url);
+ assert_throws_js(TypeError,
+ function() { importScripts(untrusted_url, trusted_url) },
+ "importScripts(untrusted_url, trusted_url)");
+}, "importScripts with two URLs, one trusted, in " + worker_type);
+
+// Test default policy application:
+trustedTypes.createPolicy("default", {
+ createScriptURL: url => url.replace("play", "work")
+}, true);
+test(t => {
+ self.result = "Fail";
+ let untrusted_url = "player.js";
+ importScripts(untrusted_url);
+ assert_equals(self.result, "Pass");
+}, "importScripts with untrusted URLs and default policy works in " + worker_type);
+
+test(t => {
+ self.result = "Fail";
+ let untrusted_url = "player.js";
+ let trusted_url = test_policy.createScriptURL(untrusted_url);
+ importScripts(untrusted_url, trusted_url);
+ assert_equals(self.result, "Pass");
+}, "importScripts with one trusted and one untrusted URLs and default policy works in " + worker_type);
+
+done();