aboutsummaryrefslogtreecommitdiffstats
path: root/components/script
diff options
context:
space:
mode:
authorcharlesvdv <charles.vandevoorde@hotmail.be>2017-01-07 17:02:06 +0100
committerCharles Vandevoorde <charles.vandevoorde@hotmail.be>2017-01-10 15:38:38 +0100
commit19e31d5c506f83585812856738e53d33a53d32c5 (patch)
tree76d18d6e3d5fec45dc63ca529c4b9eb91aafbbac /components/script
parent50bba770d6073bba6e6e219dbc3687087a864a42 (diff)
downloadservo-19e31d5c506f83585812856738e53d33a53d32c5.tar.gz
servo-19e31d5c506f83585812856738e53d33a53d32c5.zip
Handle properly alternate stylesheet
Diffstat (limited to 'components/script')
-rw-r--r--components/script/dom/htmllinkelement.rs24
-rw-r--r--components/script/stylesheet_loader.rs3
2 files changed, 16 insertions, 11 deletions
diff --git a/components/script/dom/htmllinkelement.rs b/components/script/dom/htmllinkelement.rs
index 24b4e779099..3466fa10dab 100644
--- a/components/script/dom/htmllinkelement.rs
+++ b/components/script/dom/htmllinkelement.rs
@@ -99,6 +99,17 @@ impl HTMLLinkElement {
})
})
}
+
+ pub fn is_alternate(&self) -> bool {
+ let rel = get_attr(self.upcast(), &local_name!("rel"));
+ match rel {
+ Some(ref value) => {
+ value.split(HTML_SPACE_CHARACTERS)
+ .any(|s| s.eq_ignore_ascii_case("alternate"))
+ },
+ None => false,
+ }
+ }
}
fn get_attr(element: &Element, local_name: &LocalName) -> Option<String> {
@@ -112,17 +123,8 @@ fn get_attr(element: &Element, local_name: &LocalName) -> Option<String> {
fn string_is_stylesheet(value: &Option<String>) -> bool {
match *value {
Some(ref value) => {
- let mut found_stylesheet = false;
- for s in value.split(HTML_SPACE_CHARACTERS).into_iter() {
- if s.eq_ignore_ascii_case("alternate") {
- return false;
- }
-
- if s.eq_ignore_ascii_case("stylesheet") {
- found_stylesheet = true;
- }
- }
- found_stylesheet
+ value.split(HTML_SPACE_CHARACTERS)
+ .any(|s| s.eq_ignore_ascii_case("stylesheet"))
},
None => false,
}
diff --git a/components/script/stylesheet_loader.rs b/components/script/stylesheet_loader.rs
index db70c9e8ebb..637f0619fc5 100644
--- a/components/script/stylesheet_loader.rs
+++ b/components/script/stylesheet_loader.rs
@@ -138,6 +138,9 @@ impl FetchResponseListener for StylesheetContext {
Some(&loader),
win.css_error_reporter(),
ParserContextExtraData::default()));
+ if elem.downcast::<HTMLLinkElement>().unwrap().is_alternate() {
+ sheet.set_disabled(true);
+ }
elem.downcast::<HTMLLinkElement>()
.unwrap()
.set_stylesheet(sheet.clone());