diff --git a/components/net/fetch/methods.rs b/components/net/fetch/methods.rs index a073056ee56..b6b5d80231c 100644 --- a/components/net/fetch/methods.rs +++ b/components/net/fetch/methods.rs @@ -559,10 +559,10 @@ pub fn should_be_blocked_due_to_nosniff(request_type: Type, response_headers: &H mime!(Text / ("x-javascript")), ]; - javascript_mime_types.contains(mime_type) + javascript_mime_types.iter() + .any(|mime| mime.0 == mime_type.0 && mime.1 == mime_type.1) } - let text_css: Mime = mime!(Text / Css); // Assumes str::starts_with is equivalent to mime::TopLevel return match request_type { // Step 6 @@ -575,8 +575,8 @@ pub fn should_be_blocked_due_to_nosniff(request_type: Type, response_headers: &H // Step 7 Type::Style => { match content_type_header { - Some(&ContentType(ref mime_type)) => mime_type != &text_css, - None => true + Some(&ContentType(Mime(TopLevel::Text, SubLevel::Css, _))) => false, + _ => true } } // Step 8 diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 24d4a7ee7da..e6879b7492e 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -558502,7 +558502,7 @@ "testharness" ], "fetch/nosniff/image.html": [ - "da847d5aa65fc5f52313b4434a84f1938061c7f6", + "2b31b5f05d843c55640943e68224cb36a1670a5e", "testharness" ], "fetch/nosniff/importscripts.html": [ @@ -558510,7 +558510,7 @@ "testharness" ], "fetch/nosniff/importscripts.js": [ - "90f5f826fcac39388c603e10b6b76d01a9238427", + "e7c02b40c457cc5347acb5a13d0ce14268b8187d", "support" ], "fetch/nosniff/parsing-nosniff.html": [ @@ -558558,11 +558558,11 @@ "support" ], "fetch/nosniff/script.html": [ - "7701124283e0714ef4229fbc6d63a26f8e5e86b1", + "762b6033a5b75465417f9921f7d06781ad036cbe", "testharness" ], "fetch/nosniff/stylesheet.html": [ - "e2dda6ec5981c40dcad68c933336a0358639eec3", + "707b1031fc7594d49b6f1487c8ef71864791ea80", "testharness" ], "fetch/nosniff/worker.html": [ diff --git a/tests/wpt/web-platform-tests/fetch/nosniff/image.html b/tests/wpt/web-platform-tests/fetch/nosniff/image.html index e478789609c..3273f19fb1e 100644 --- a/tests/wpt/web-platform-tests/fetch/nosniff/image.html +++ b/tests/wpt/web-platform-tests/fetch/nosniff/image.html @@ -3,17 +3,25 @@
diff --git a/tests/wpt/web-platform-tests/fetch/nosniff/importscripts.js b/tests/wpt/web-platform-tests/fetch/nosniff/importscripts.js index aeb6154870b..d7b121316af 100644 --- a/tests/wpt/web-platform-tests/fetch/nosniff/importscripts.js +++ b/tests/wpt/web-platform-tests/fetch/nosniff/importscripts.js @@ -3,15 +3,26 @@ function log(w) { this.postMessage(w) } function f() { log("FAIL") } function p() { log("PASS") } -["", "?type=", "?type=x", "?type=x/x"].forEach(function(urlpart) { +const get_url = (mime, outcome) => { + let url = "resources/js.py" + if (mime != null) { + url += "?type=" + encodeURIComponent(mime) + } + if (outcome) { + url += "&outcome=p" + } + return url +} + +[null, "", "x", "x/x"].forEach(function(mime) { try { - importScripts("resources/js.py" + urlpart) + importScripts(get_url(mime)) } catch(e) { - (e.name == "NetworkError") ? p() : log("FAIL (no NetworkError exception): " + urlpart) + (e.name == "NetworkError") ? p() : log("FAIL (no NetworkError exception): " + mime) } }) -importScripts("resources/js.py?type=text/javascript&outcome=p") -importScripts("resources/js.py?type=text/ecmascript&outcome=p") -importScripts("resources/js.py?type=text/ecmascript;blah&outcome=p") +importScripts(get_url("text/javascript", true)) +importScripts(get_url("text/ecmascript", true)) +importScripts(get_url("text/ecmascript;blah", true)) log("END") diff --git a/tests/wpt/web-platform-tests/fetch/nosniff/script.html b/tests/wpt/web-platform-tests/fetch/nosniff/script.html index 667f3c99a6c..aec5a0886f5 100644 --- a/tests/wpt/web-platform-tests/fetch/nosniff/script.html +++ b/tests/wpt/web-platform-tests/fetch/nosniff/script.html @@ -4,29 +4,40 @@ diff --git a/tests/wpt/web-platform-tests/fetch/nosniff/stylesheet.html b/tests/wpt/web-platform-tests/fetch/nosniff/stylesheet.html index 0ad04038e20..9e47f757b97 100644 --- a/tests/wpt/web-platform-tests/fetch/nosniff/stylesheet.html +++ b/tests/wpt/web-platform-tests/fetch/nosniff/stylesheet.html @@ -3,28 +3,36 @@