diff options
author | charlesvdv <charles.vandevoorde@hotmail.be> | 2017-01-07 17:02:06 +0100 |
---|---|---|
committer | Charles Vandevoorde <charles.vandevoorde@hotmail.be> | 2017-01-10 15:38:38 +0100 |
commit | 19e31d5c506f83585812856738e53d33a53d32c5 (patch) | |
tree | 76d18d6e3d5fec45dc63ca529c4b9eb91aafbbac /components/script | |
parent | 50bba770d6073bba6e6e219dbc3687087a864a42 (diff) | |
download | servo-19e31d5c506f83585812856738e53d33a53d32c5.tar.gz servo-19e31d5c506f83585812856738e53d33a53d32c5.zip |
Handle properly alternate stylesheet
Diffstat (limited to 'components/script')
-rw-r--r-- | components/script/dom/htmllinkelement.rs | 24 | ||||
-rw-r--r-- | components/script/stylesheet_loader.rs | 3 |
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()); |