aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/dom/htmllinkelement.rs4
-rw-r--r--docs/components/style.md6
-rw-r--r--tests/wpt/metadata/MANIFEST.json29
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/all3
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/all.headers1
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/stylesheet-media-ref.html9
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/stylesheet-media.html17
-rw-r--r--tests/wpt/web-platform-tests/tools/wptserve/wptserve/handlers.py12
8 files changed, 70 insertions, 11 deletions
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::<Element>().get_attribute(&ns!(), &atom!("href")) {
+ self.handle_stylesheet_url(&href.value());
+ }
}
},
_ => {},
diff --git a/docs/components/style.md b/docs/components/style.md
index a4a83d4e8f2..8a1b4fac2d4 100644
--- a/docs/components/style.md
+++ b/docs/components/style.md
@@ -40,7 +40,7 @@ layout traits have the required traits implemented.
The [`stylist`][stylist] structure is the one that holds all the selectors and
device characteristics for a given document.
-The stylesheets' CSS rules are converted into [`Rule`][selectors-rules]s, and
+The stylesheets' CSS rules are converted into [`Rule`][selectors-rule]s, and
introduced in a [`SelectorMap`][selectors-selectormap] depending on the
pseudo-element (see [`PerPseudoElementSelectorMap`][per-pseudo-selectormap]),
stylesheet origin (see [`PerOriginSelectorMap`][per-origin-selectormap]), and
@@ -149,8 +149,8 @@ that you didn't find it here so it can be added :)
[mdn-pseudo-after]: https://developer.mozilla.org/en/docs/Web/CSS/::after
[mdn-pseudo-selection]: https://developer.mozilla.org/en/docs/Web/CSS/::selection
[stylist]: http://doc.servo.org/style/selector_matching/struct.Stylist.html
-[selectors-selectormap]: http://doc.servo.org/style/selector_matching/struct.SelectorMap.html
-[selectors-rule]: http://doc.servo.org/style/selector_matching/struct.Rule.html
+[selectors-selectormap]: http://doc.servo.org/selectors/matching/struct.SelectorMap.html
+[selectors-rule]: http://doc.servo.org/selectors/matching/struct.Rule.html
[per-pseudo-selectormap]: http://doc.servo.org/style/selector_matching/struct.PerPseudoElementSelectorMap.html
[per-origin-selectormap]: http://doc.servo.org/style/selector_matching/struct.PerOriginSelectorMap.html
[docs-pipeline]: https://github.com/servo/servo/blob/master/docs/glossary.md#pipeline
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 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>Test</title>
+<style>
+body {
+ color: green;
+}
+</style>
+<p>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 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>Test</title>
+<link rel=match href=stylesheet-media-ref.html>
+<style>
+body {
+ color: green;
+}
+</style>
+<link rel=stylesheet id=link>
+<script>
+// This tests for a bug in Servo, where it would treat the media attribute as
+// if it was the href attribute.
+var link = document.getElementById("link");
+link.setAttribute("media", "all")
+</script>
+<p>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()