diff --git a/components/script/dom/htmllinkelement.rs b/components/script/dom/htmllinkelement.rs index 1c84fbba784..773f1630489 100644 --- a/components/script/dom/htmllinkelement.rs +++ b/components/script/dom/htmllinkelement.rs @@ -154,7 +154,9 @@ impl VirtualMethods for HTMLLinkElement { }, &atom!("media") => { if string_is_stylesheet(&rel) { - self.handle_stylesheet_url(&attr.value()); + if let Some(href) = self.upcast::().get_attribute(&ns!(), &atom!("href")) { + self.handle_stylesheet_url(&href.value()); + } } }, _ => {}, diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 265c4e6ce34..ab77b057ea1 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -37714,6 +37714,20 @@ "deleted": [], "deleted_reftests": {}, "items": { + "reftest": { + "html/semantics/document-metadata/the-link-element/stylesheet-media.html": [ + { + "path": "html/semantics/document-metadata/the-link-element/stylesheet-media.html", + "references": [ + [ + "/html/semantics/document-metadata/the-link-element/stylesheet-media-ref.html", + "==" + ] + ], + "url": "/html/semantics/document-metadata/the-link-element/stylesheet-media.html" + } + ] + }, "testharness": { "html/semantics/forms/the-form-element/form-action-url.html": [ { @@ -37729,7 +37743,20 @@ ] } }, - "reftest_nodes": {} + "reftest_nodes": { + "html/semantics/document-metadata/the-link-element/stylesheet-media.html": [ + { + "path": "html/semantics/document-metadata/the-link-element/stylesheet-media.html", + "references": [ + [ + "/html/semantics/document-metadata/the-link-element/stylesheet-media-ref.html", + "==" + ] + ], + "url": "/html/semantics/document-metadata/the-link-element/stylesheet-media.html" + } + ] + } }, "reftest_nodes": { "2dcontext/building-paths/canvas_complexshapes_arcto_001.htm": [ diff --git a/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/all b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/all new file mode 100644 index 00000000000..60f1eab9713 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/all @@ -0,0 +1,3 @@ +body { + color: red; +} diff --git a/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/all.headers b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/all.headers new file mode 100644 index 00000000000..74e07a14e7c --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/all.headers @@ -0,0 +1 @@ +Content-Type: text/css diff --git a/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/stylesheet-media-ref.html b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/stylesheet-media-ref.html new file mode 100644 index 00000000000..63b75d0ae26 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/stylesheet-media-ref.html @@ -0,0 +1,9 @@ + + +Test + +

This text should be green. diff --git a/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/stylesheet-media.html b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/stylesheet-media.html new file mode 100644 index 00000000000..9a72924cf40 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/stylesheet-media.html @@ -0,0 +1,17 @@ + + +Test + + + + +

This text should be green. diff --git a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/handlers.py b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/handlers.py index 9f60fd0d722..c40321dfeab 100644 --- a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/handlers.py +++ b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/handlers.py @@ -147,9 +147,12 @@ class FileHandler(object): raise HTTPException(404) def get_headers(self, request, path): - rv = self.default_headers(path) - rv.extend(self.load_headers(request, os.path.join(os.path.split(path)[0], "__dir__"))) - rv.extend(self.load_headers(request, path)) + rv = (self.load_headers(request, os.path.join(os.path.split(path)[0], "__dir__")) + + self.load_headers(request, path)) + + if not any(key.lower() == "content-type" for (key, _) in rv): + rv.insert(0, ("Content-Type", guess_content_type(path))) + return rv def load_headers(self, request, path): @@ -206,9 +209,6 @@ class FileHandler(object): f.seek(byte_range.lower) return f.read(byte_range.upper - byte_range.lower) - def default_headers(self, path): - return [("Content-Type", guess_content_type(path))] - file_handler = FileHandler()