mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
Handle properly alternate stylesheet
This commit is contained in:
parent
50bba770d6
commit
19e31d5c50
2 changed files with 16 additions and 11 deletions
|
@ -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,
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue