diff options
author | Anthony Ramine <n.oxyde@gmail.com> | 2017-04-23 11:07:48 +0200 |
---|---|---|
committer | Anthony Ramine <n.oxyde@gmail.com> | 2017-04-27 10:41:55 +0200 |
commit | f68e2fded92e769a1fc0d5bdc963f47da366d651 (patch) | |
tree | 9482e5104d03ecbf4bbc4626694389ca9de10e17 /components/script | |
parent | 10fb8e61c77fcb2ad1adfe517aa08ecbe64d4db6 (diff) | |
download | servo-f68e2fded92e769a1fc0d5bdc963f47da366d651.tar.gz servo-f68e2fded92e769a1fc0d5bdc963f47da366d651.zip |
Propagate quirks mode all the way to ParserContext
The quirks mode is still not properly propagated in geckolib.
Diffstat (limited to 'components/script')
-rw-r--r-- | components/script/dom/css.rs | 7 | ||||
-rw-r--r-- | components/script/dom/cssmediarule.rs | 5 | ||||
-rw-r--r-- | components/script/dom/cssstyledeclaration.rs | 9 | ||||
-rw-r--r-- | components/script/dom/csssupportsrule.rs | 4 | ||||
-rw-r--r-- | components/script/dom/element.rs | 3 | ||||
-rw-r--r-- | components/script/dom/htmllinkelement.rs | 3 | ||||
-rw-r--r-- | components/script/dom/htmlmetaelement.rs | 1 | ||||
-rw-r--r-- | components/script/dom/htmlstyleelement.rs | 6 | ||||
-rw-r--r-- | components/script/dom/medialist.rs | 13 | ||||
-rw-r--r-- | components/script/dom/mediaquerylist.rs | 2 | ||||
-rw-r--r-- | components/script/dom/window.rs | 4 | ||||
-rw-r--r-- | components/script/stylesheet_loader.rs | 3 |
12 files changed, 44 insertions, 16 deletions
diff --git a/components/script/dom/css.rs b/components/script/dom/css.rs index 0e4a7f85065..72cdbfa5be6 100644 --- a/components/script/dom/css.rs +++ b/components/script/dom/css.rs @@ -9,6 +9,7 @@ use dom::bindings::reflector::Reflector; use dom::bindings::str::DOMString; use dom::window::Window; use dom_struct::dom_struct; +use style::context::QuirksMode; use style::parser::{LengthParsingMode, ParserContext}; use style::stylesheets::CssRuleType; use style::supports::{Declaration, parse_condition_or_declaration}; @@ -31,7 +32,8 @@ impl CSS { let decl = Declaration { prop: property.into(), val: value.into() }; let url = win.Document().url(); let context = ParserContext::new_for_cssom(&url, win.css_error_reporter(), Some(CssRuleType::Supports), - LengthParsingMode::Default); + LengthParsingMode::Default, + QuirksMode::NoQuirks); decl.eval(&context) } @@ -42,7 +44,8 @@ impl CSS { if let Ok(cond) = cond { let url = win.Document().url(); let context = ParserContext::new_for_cssom(&url, win.css_error_reporter(), Some(CssRuleType::Supports), - LengthParsingMode::Default); + LengthParsingMode::Default, + QuirksMode::NoQuirks); cond.eval(&context) } else { false diff --git a/components/script/dom/cssmediarule.rs b/components/script/dom/cssmediarule.rs index aff12e2e2ad..45bf65b1adf 100644 --- a/components/script/dom/cssmediarule.rs +++ b/components/script/dom/cssmediarule.rs @@ -5,6 +5,7 @@ use cssparser::Parser; use dom::bindings::codegen::Bindings::CSSMediaRuleBinding; use dom::bindings::codegen::Bindings::CSSMediaRuleBinding::CSSMediaRuleMethods; +use dom::bindings::codegen::Bindings::WindowBinding::WindowBinding::WindowMethods; use dom::bindings::js::{MutNullableJS, Root}; use dom::bindings::reflector::{DomObject, reflect_dom_object}; use dom::bindings::str::DOMString; @@ -72,8 +73,10 @@ impl CSSMediaRule { let global = self.global(); let win = global.as_window(); let url = win.get_url(); + let quirks_mode = win.Document().quirks_mode(); let context = ParserContext::new_for_cssom(&url, win.css_error_reporter(), Some(CssRuleType::Media), - LengthParsingMode::Default); + LengthParsingMode::Default, + quirks_mode); let new_medialist = parse_media_query_list(&context, &mut input); let mut guard = self.cssconditionrule.shared_lock().write(); diff --git a/components/script/dom/cssstyledeclaration.rs b/components/script/dom/cssstyledeclaration.rs index 22fd1194034..d0996f04567 100644 --- a/components/script/dom/cssstyledeclaration.rs +++ b/components/script/dom/cssstyledeclaration.rs @@ -256,9 +256,12 @@ impl CSSStyleDeclaration { // Step 6 let window = self.owner.window(); + let quirks_mode = window.Document().quirks_mode(); let result = parse_one_declaration(id, &value, &self.owner.base_url(), - window.css_error_reporter(), LengthParsingMode::Default); + window.css_error_reporter(), + LengthParsingMode::Default, + quirks_mode); // Step 7 let parsed = match result { @@ -434,11 +437,13 @@ impl CSSStyleDeclarationMethods for CSSStyleDeclaration { return Err(Error::NoModificationAllowed); } + let quirks_mode = window.Document().quirks_mode(); self.owner.mutate_associated_block(|mut pdb, mut _changed| { // Step 3 *pdb = parse_style_attribute(&value, &self.owner.base_url(), - window.css_error_reporter()); + window.css_error_reporter(), + quirks_mode); }); Ok(()) diff --git a/components/script/dom/csssupportsrule.rs b/components/script/dom/csssupportsrule.rs index 3ac60a00e06..86aedf10864 100644 --- a/components/script/dom/csssupportsrule.rs +++ b/components/script/dom/csssupportsrule.rs @@ -61,8 +61,10 @@ impl CSSSupportsRule { let global = self.global(); let win = global.as_window(); let url = win.Document().url(); + let quirks_mode = win.Document().quirks_mode(); let context = ParserContext::new_for_cssom(&url, win.css_error_reporter(), Some(CssRuleType::Supports), - LengthParsingMode::Default); + LengthParsingMode::Default, + quirks_mode); let enabled = cond.eval(&context); let mut guard = self.cssconditionrule.shared_lock().write(); let rule = self.supportsrule.write_with(&mut guard); diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index 7b56b6c6e81..d6974fb9075 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -2196,7 +2196,8 @@ impl VirtualMethods for Element { Arc::new(doc.style_shared_lock().wrap(parse_style_attribute( &attr.value(), &doc.base_url(), - win.css_error_reporter()))) + win.css_error_reporter(), + doc.quirks_mode()))) }; Some(block) diff --git a/components/script/dom/htmllinkelement.rs b/components/script/dom/htmllinkelement.rs index c0d0d12a775..bf36d28b29d 100644 --- a/components/script/dom/htmllinkelement.rs +++ b/components/script/dom/htmllinkelement.rs @@ -282,7 +282,8 @@ impl HTMLLinkElement { let win = document.window(); let doc_url = document.url(); let context = CssParserContext::new_for_cssom(&doc_url, win.css_error_reporter(), Some(CssRuleType::Media), - LengthParsingMode::Default); + LengthParsingMode::Default, + document.quirks_mode()); let media = parse_media_query_list(&context, &mut css_parser); let im_attribute = element.get_attribute(&ns!(), &local_name!("integrity")); diff --git a/components/script/dom/htmlmetaelement.rs b/components/script/dom/htmlmetaelement.rs index 3c4e817a132..62d7215e3df 100644 --- a/components/script/dom/htmlmetaelement.rs +++ b/components/script/dom/htmlmetaelement.rs @@ -113,6 +113,7 @@ impl HTMLMetaElement { // force all styles to be recomputed. dirty_on_viewport_size_change: AtomicBool::new(false), disabled: AtomicBool::new(false), + quirks_mode: document.quirks_mode(), })); let doc = document_from_node(self); doc.invalidate_stylesheets(); diff --git a/components/script/dom/htmlstyleelement.rs b/components/script/dom/htmlstyleelement.rs index 0c026fcfe9a..8905c3baa65 100644 --- a/components/script/dom/htmlstyleelement.rs +++ b/components/script/dom/htmlstyleelement.rs @@ -76,6 +76,7 @@ impl HTMLStyleElement { assert!(node.is_in_doc()); let win = window_from_node(node); + let doc = document_from_node(self); let mq_attribute = element.get_attribute(&ns!(), &local_name!("media")); let mq_str = match mq_attribute { @@ -88,7 +89,8 @@ impl HTMLStyleElement { let context = CssParserContext::new_for_cssom(&url, win.css_error_reporter(), Some(CssRuleType::Media), - LengthParsingMode::Default); + LengthParsingMode::Default, + doc.quirks_mode()); let shared_lock = node.owner_doc().style_shared_lock().clone(); let mq = Arc::new(shared_lock.wrap( parse_media_query_list(&context, &mut CssParser::new(&mq_str)))); @@ -96,6 +98,7 @@ impl HTMLStyleElement { let sheet = Stylesheet::from_str(&data, win.get_url(), Origin::Author, mq, shared_lock, Some(&loader), win.css_error_reporter(), + doc.quirks_mode(), self.line_number); let sheet = Arc::new(sheet); @@ -107,7 +110,6 @@ impl HTMLStyleElement { win.layout_chan().send(Msg::AddStylesheet(sheet.clone())).unwrap(); *self.stylesheet.borrow_mut() = Some(sheet); - let doc = document_from_node(self); doc.invalidate_stylesheets(); } diff --git a/components/script/dom/medialist.rs b/components/script/dom/medialist.rs index 881c17966da..f2a2299d169 100644 --- a/components/script/dom/medialist.rs +++ b/components/script/dom/medialist.rs @@ -5,6 +5,7 @@ use cssparser::Parser; use dom::bindings::codegen::Bindings::MediaListBinding; use dom::bindings::codegen::Bindings::MediaListBinding::MediaListMethods; +use dom::bindings::codegen::Bindings::WindowBinding::WindowBinding::WindowMethods; use dom::bindings::js::{JS, Root}; use dom::bindings::reflector::{DomObject, Reflector, reflect_dom_object}; use dom::bindings::str::DOMString; @@ -74,8 +75,10 @@ impl MediaListMethods for MediaList { let global = self.global(); let win = global.as_window(); let url = win.get_url(); + let quirks_mode = win.Document().quirks_mode(); let context = ParserContext::new_for_cssom(&url, win.css_error_reporter(), Some(CssRuleType::Media), - LengthParsingMode::Default); + LengthParsingMode::Default, + quirks_mode); *media_queries = parse_media_query_list(&context, &mut parser); } @@ -108,8 +111,10 @@ impl MediaListMethods for MediaList { let global = self.global(); let win = global.as_window(); let url = win.get_url(); + let quirks_mode = win.Document().quirks_mode(); let context = ParserContext::new_for_cssom(&url, win.css_error_reporter(), Some(CssRuleType::Media), - LengthParsingMode::Default); + LengthParsingMode::Default, + quirks_mode); let m = MediaQuery::parse(&context, &mut parser); // Step 2 if let Err(_) = m { @@ -134,8 +139,10 @@ impl MediaListMethods for MediaList { let global = self.global(); let win = global.as_window(); let url = win.get_url(); + let quirks_mode = win.Document().quirks_mode(); let context = ParserContext::new_for_cssom(&url, win.css_error_reporter(), Some(CssRuleType::Media), - LengthParsingMode::Default); + LengthParsingMode::Default, + quirks_mode); let m = MediaQuery::parse(&context, &mut parser); // Step 2 if let Err(_) = m { diff --git a/components/script/dom/mediaquerylist.rs b/components/script/dom/mediaquerylist.rs index dafc7602794..b25e041f4ef 100644 --- a/components/script/dom/mediaquerylist.rs +++ b/components/script/dom/mediaquerylist.rs @@ -77,7 +77,7 @@ impl MediaQueryList { if let Some(window_size) = self.document.window().window_size() { let viewport_size = window_size.initial_viewport; let device = Device::new(MediaType::Screen, viewport_size); - self.media_query_list.evaluate(&device) + self.media_query_list.evaluate(&device, self.document.quirks_mode()) } else { false } diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs index eaba1ded928..6b8857b81b1 100644 --- a/components/script/dom/window.rs +++ b/components/script/dom/window.rs @@ -976,8 +976,10 @@ impl WindowMethods for Window { fn MatchMedia(&self, query: DOMString) -> Root<MediaQueryList> { let mut parser = Parser::new(&query); let url = self.get_url(); + let quirks_mode = self.Document().quirks_mode(); let context = CssParserContext::new_for_cssom(&url, self.css_error_reporter(), Some(CssRuleType::Media), - LengthParsingMode::Default); + LengthParsingMode::Default, + quirks_mode); let media_query_list = media_queries::parse_media_query_list(&context, &mut parser); let document = self.Document(); let mql = MediaQueryList::new(&document, media_query_list); diff --git a/components/script/stylesheet_loader.rs b/components/script/stylesheet_loader.rs index a859e798818..14b8c385e39 100644 --- a/components/script/stylesheet_loader.rs +++ b/components/script/stylesheet_loader.rs @@ -144,7 +144,8 @@ impl FetchResponseListener for StylesheetContext { media.take().unwrap(), shared_lock, Some(&loader), - win.css_error_reporter())); + win.css_error_reporter(), + document.quirks_mode())); if link.is_alternate() { sheet.set_disabled(true); |