summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/fetch/nosniff/parsing-nosniff.window.js
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/fetch/nosniff/parsing-nosniff.window.js')
-rw-r--r--testing/web-platform/tests/fetch/nosniff/parsing-nosniff.window.js27
1 files changed, 27 insertions, 0 deletions
diff --git a/testing/web-platform/tests/fetch/nosniff/parsing-nosniff.window.js b/testing/web-platform/tests/fetch/nosniff/parsing-nosniff.window.js
new file mode 100644
index 0000000000..2a2648653c
--- /dev/null
+++ b/testing/web-platform/tests/fetch/nosniff/parsing-nosniff.window.js
@@ -0,0 +1,27 @@
+promise_test(() => fetch("resources/x-content-type-options.json").then(res => res.json()).then(runTests), "Loading JSONā€¦");
+
+function runTests(allTestData) {
+ for (let i = 0; i < allTestData.length; i++) {
+ const testData = allTestData[i],
+ input = encodeURIComponent(testData.input);
+ promise_test(t => {
+ let resolve;
+ const promise = new Promise(r => resolve = r);
+ const script = document.createElement("script");
+ t.add_cleanup(() => script.remove());
+ // A <script> element loading a classic script does not care about the MIME type, unless
+ // X-Content-Type-Options: nosniff is specified, in which case a JavaScript MIME type is
+ // enforced, which x/x is not.
+ if (testData.nosniff) {
+ script.onerror = resolve;
+ script.onload = t.unreached_func("Script should not have loaded");
+ } else {
+ script.onerror = t.unreached_func("Script should have loaded");
+ script.onload = resolve;
+ }
+ script.src = "resources/nosniff.py?nosniff=" + input;
+ document.body.appendChild(script);
+ return promise;
+ }, input);
+ }
+}