Handle properly alternate stylesheet

This commit is contained in:
charlesvdv 2017-01-07 17:02:06 +01:00 committed by Charles Vandevoorde
parent 50bba770d6
commit 19e31d5c50
2 changed files with 16 additions and 11 deletions

View file

@ -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> { 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 { fn string_is_stylesheet(value: &Option<String>) -> bool {
match *value { match *value {
Some(ref value) => { Some(ref value) => {
let mut found_stylesheet = false; value.split(HTML_SPACE_CHARACTERS)
for s in value.split(HTML_SPACE_CHARACTERS).into_iter() { .any(|s| s.eq_ignore_ascii_case("stylesheet"))
if s.eq_ignore_ascii_case("alternate") {
return false;
}
if s.eq_ignore_ascii_case("stylesheet") {
found_stylesheet = true;
}
}
found_stylesheet
}, },
None => false, None => false,
} }

View file

@ -138,6 +138,9 @@ impl FetchResponseListener for StylesheetContext {
Some(&loader), Some(&loader),
win.css_error_reporter(), win.css_error_reporter(),
ParserContextExtraData::default())); ParserContextExtraData::default()));
if elem.downcast::<HTMLLinkElement>().unwrap().is_alternate() {
sheet.set_disabled(true);
}
elem.downcast::<HTMLLinkElement>() elem.downcast::<HTMLLinkElement>()
.unwrap() .unwrap()
.set_stylesheet(sheet.clone()); .set_stylesheet(sheet.clone());