From b15c55e407bf683e46deacc6a16586a06b4945d2 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Tue, 27 Sep 2016 17:01:13 +0200 Subject: [PATCH 1/3] Cherry-pick a wptserve change to support Content-Type in .headers files. --- .../tools/wptserve/wptserve/handlers.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) 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() From 361e41f0e7ef417b2a0b687783ad1499f91a4154 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Tue, 27 Sep 2016 15:17:31 +0200 Subject: [PATCH 2/3] Add a test for changing the media attribute on a link element. --- tests/wpt/metadata/MANIFEST.json | 29 ++++++++++++++++++- .../stylesheet-media.html.ini | 3 ++ .../document-metadata/the-link-element/all | 3 ++ .../the-link-element/all.headers | 1 + .../stylesheet-media-ref.html | 9 ++++++ .../the-link-element/stylesheet-media.html | 17 +++++++++++ 6 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 tests/wpt/metadata/html/semantics/document-metadata/the-link-element/stylesheet-media.html.ini create mode 100644 tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/all create mode 100644 tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/all.headers create mode 100644 tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/stylesheet-media-ref.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/stylesheet-media.html diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 7f95b602122..044c1d25df9 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-select-element/common-HTMLOptionsCollection-add.html": [ { @@ -37723,7 +37737,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/metadata/html/semantics/document-metadata/the-link-element/stylesheet-media.html.ini b/tests/wpt/metadata/html/semantics/document-metadata/the-link-element/stylesheet-media.html.ini new file mode 100644 index 00000000000..4bfa32eb543 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/document-metadata/the-link-element/stylesheet-media.html.ini @@ -0,0 +1,3 @@ +[stylesheet-media.html] + type: reftest + expected: FAIL 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. From d207919a0216556ea7d16e6efbaa19601a0099e6 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Tue, 27 Sep 2016 17:11:35 +0200 Subject: [PATCH 3/3] Pass the correct attribute to handle_stylesheet_url. --- components/script/dom/htmllinkelement.rs | 4 +++- .../the-link-element/stylesheet-media.html.ini | 3 --- 2 files changed, 3 insertions(+), 4 deletions(-) delete mode 100644 tests/wpt/metadata/html/semantics/document-metadata/the-link-element/stylesheet-media.html.ini 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/html/semantics/document-metadata/the-link-element/stylesheet-media.html.ini b/tests/wpt/metadata/html/semantics/document-metadata/the-link-element/stylesheet-media.html.ini deleted file mode 100644 index 4bfa32eb543..00000000000 --- a/tests/wpt/metadata/html/semantics/document-metadata/the-link-element/stylesheet-media.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[stylesheet-media.html] - type: reftest - expected: FAIL