diff options
author | Emilio Cobos Álvarez <emilio@crisal.io> | 2018-06-23 20:00:26 +0200 |
---|---|---|
committer | Emilio Cobos Álvarez <emilio@crisal.io> | 2018-06-23 20:34:10 +0200 |
commit | 895946bb186a194d1545e4782715f074cc8f8f6c (patch) | |
tree | aad4d22255799cd13706f20338e1e5d9e81010ec /components/script/dom | |
parent | 750c223021220da374b35bced42edb60d16e0106 (diff) | |
download | servo-895946bb186a194d1545e4782715f074cc8f8f6c.tar.gz servo-895946bb186a194d1545e4782715f074cc8f8f6c.zip |
layout: script: Fix build.
Diffstat (limited to 'components/script/dom')
-rw-r--r-- | components/script/dom/css.rs | 6 | ||||
-rw-r--r-- | components/script/dom/cssmediarule.rs | 14 | ||||
-rw-r--r-- | components/script/dom/cssstyledeclaration.rs | 17 | ||||
-rw-r--r-- | components/script/dom/csssupportsrule.rs | 10 | ||||
-rw-r--r-- | components/script/dom/document.rs | 7 | ||||
-rw-r--r-- | components/script/dom/htmlimageelement.rs | 11 | ||||
-rw-r--r-- | components/script/dom/htmllinkelement.rs | 7 | ||||
-rw-r--r-- | components/script/dom/htmlstyleelement.rs | 33 | ||||
-rw-r--r-- | components/script/dom/medialist.rs | 32 | ||||
-rw-r--r-- | components/script/dom/window.rs | 18 |
10 files changed, 99 insertions, 56 deletions
diff --git a/components/script/dom/css.rs b/components/script/dom/css.rs index 4b67f516e83..d642b44a19f 100644 --- a/components/script/dom/css.rs +++ b/components/script/dom/css.rs @@ -42,7 +42,8 @@ impl CSS { &url, Some(CssRuleType::Style), ParsingMode::DEFAULT, - QuirksMode::NoQuirks + QuirksMode::NoQuirks, + None, ); decl.eval(&context) } @@ -58,7 +59,8 @@ impl CSS { &url, Some(CssRuleType::Style), ParsingMode::DEFAULT, - QuirksMode::NoQuirks + QuirksMode::NoQuirks, + None, ); cond.eval(&context) } else { diff --git a/components/script/dom/cssmediarule.rs b/components/script/dom/cssmediarule.rs index 0ecdf71a314..23f3c46a251 100644 --- a/components/script/dom/cssmediarule.rs +++ b/components/script/dom/cssmediarule.rs @@ -75,15 +75,15 @@ impl CSSMediaRule { let window = global.as_window(); let url = window.get_url(); let quirks_mode = window.Document().quirks_mode(); - let context = ParserContext::new_for_cssom(&url, Some(CssRuleType::Media), - ParsingMode::DEFAULT, - quirks_mode); - - let new_medialist = StyleMediaList::parse( - &context, - &mut input, + let context = ParserContext::new_for_cssom( + &url, + Some(CssRuleType::Media), + ParsingMode::DEFAULT, + quirks_mode, window.css_error_reporter(), ); + + let new_medialist = StyleMediaList::parse(&context, &mut input); let mut guard = self.cssconditionrule.shared_lock().write(); // Clone an Arc because we can’t borrow `guard` twice at the same time. diff --git a/components/script/dom/cssstyledeclaration.rs b/components/script/dom/cssstyledeclaration.rs index e3a4a20d380..9f6c97dbc7d 100644 --- a/components/script/dom/cssstyledeclaration.rs +++ b/components/script/dom/cssstyledeclaration.rs @@ -181,6 +181,19 @@ macro_rules! css_properties( ); ); +fn remove_property( + decls: &mut PropertyDeclarationBlock, + id: &PropertyId, +) -> bool { + let first_declaration = decls.first_declaration_to_remove(id); + let first_declaration = match first_declaration { + Some(i) => i, + None => return false, + }; + decls.remove_property(id, first_declaration); + true +} + impl CSSStyleDeclaration { #[allow(unrooted_must_root)] pub fn new_inherited(owner: CSSStyleOwner, @@ -253,7 +266,7 @@ impl CSSStyleDeclaration { self.owner.mutate_associated_block(|pdb, changed| { if value.is_empty() { // Step 3 - *changed = pdb.remove_property(&id, |_| {}); + *changed = remove_property(pdb, &id); return Ok(()); } @@ -365,7 +378,7 @@ impl CSSStyleDeclarationMethods for CSSStyleDeclaration { let mut string = String::new(); self.owner.mutate_associated_block(|pdb, changed| { pdb.property_value_to_css(&id, &mut string).unwrap(); - *changed = pdb.remove_property(&id, |_| {}); + *changed = remove_property(pdb, &id); }); // Step 6 diff --git a/components/script/dom/csssupportsrule.rs b/components/script/dom/csssupportsrule.rs index 68d02aa241a..a96cd706b86 100644 --- a/components/script/dom/csssupportsrule.rs +++ b/components/script/dom/csssupportsrule.rs @@ -63,9 +63,13 @@ impl CSSSupportsRule { let win = global.as_window(); let url = win.Document().url(); let quirks_mode = win.Document().quirks_mode(); - let context = ParserContext::new_for_cssom(&url, Some(CssRuleType::Supports), - ParsingMode::DEFAULT, - quirks_mode); + let context = ParserContext::new_for_cssom( + &url, + Some(CssRuleType::Supports), + ParsingMode::DEFAULT, + quirks_mode, + None, + ); 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/document.rs b/components/script/dom/document.rs index 9e048161633..26c59bdb8ec 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -127,6 +127,7 @@ use std::cell::{Cell, Ref, RefMut}; use std::collections::{HashMap, HashSet, VecDeque}; use std::collections::hash_map::Entry::{Occupied, Vacant}; use std::default::Default; +use std::fmt; use std::mem; use std::ptr::NonNull; use std::rc::Rc; @@ -213,6 +214,12 @@ struct StyleSheetInDocument { owner: Dom<Element>, } +impl fmt::Debug for StyleSheetInDocument { + fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result { + self.sheet.fmt(formatter) + } +} + impl PartialEq for StyleSheetInDocument { fn eq(&self, other: &Self) -> bool { Arc::ptr_eq(&self.sheet, &other.sheet) diff --git a/components/script/dom/htmlimageelement.rs b/components/script/dom/htmlimageelement.rs index 8206af23e3e..61acecda71d 100644 --- a/components/script/dom/htmlimageelement.rs +++ b/components/script/dom/htmlimageelement.rs @@ -770,10 +770,13 @@ pub fn parse_a_sizes_attribute(input: DOMString, width: Option<u32>) -> Vec<Size } let mut input = ParserInput::new(&trimmed); let url = ServoUrl::parse("about:blank").unwrap(); - let context = ParserContext::new_for_cssom(&url, - None, - ParsingMode::empty(), - QuirksMode::NoQuirks); + let context = ParserContext::new_for_cssom( + &url, + None, + ParsingMode::empty(), + QuirksMode::NoQuirks, + None, + ); let mut parser = Parser::new(&mut input); let length = parser.try(|i| Length::parse_non_negative(&context, i)); match length { diff --git a/components/script/dom/htmllinkelement.rs b/components/script/dom/htmllinkelement.rs index ab84906d223..a86789dcd71 100644 --- a/components/script/dom/htmllinkelement.rs +++ b/components/script/dom/htmllinkelement.rs @@ -277,6 +277,7 @@ impl HTMLLinkElement { let mut input = ParserInput::new(&mq_str); let mut css_parser = CssParser::new(&mut input); let doc_url = document.url(); + let window = document.window(); // FIXME(emilio): This looks somewhat fishy, since we use the context // only to parse the media query list, CssRuleType::Media doesn't make // much sense. @@ -285,13 +286,9 @@ impl HTMLLinkElement { Some(CssRuleType::Media), ParsingMode::DEFAULT, document.quirks_mode(), - ); - let window = document.window(); - let media = MediaList::parse( - &context, - &mut css_parser, window.css_error_reporter(), ); + let media = MediaList::parse(&context, &mut css_parser); let im_attribute = element.get_attribute(&ns!(), &local_name!("integrity")); let integrity_val = im_attribute.r().map(|a| a.value()); diff --git a/components/script/dom/htmlstyleelement.rs b/components/script/dom/htmlstyleelement.rs index 6778af92218..82da9ba6180 100644 --- a/components/script/dom/htmlstyleelement.rs +++ b/components/script/dom/htmlstyleelement.rs @@ -84,25 +84,32 @@ impl HTMLStyleElement { let data = node.GetTextContent().expect("Element.textContent must be a string"); let url = window.get_url(); - let context = CssParserContext::new_for_cssom(&url, - Some(CssRuleType::Media), - ParsingMode::DEFAULT, - doc.quirks_mode()); + let css_error_reporter = window.css_error_reporter(); + let context = CssParserContext::new_for_cssom( + &url, + Some(CssRuleType::Media), + ParsingMode::DEFAULT, + doc.quirks_mode(), + css_error_reporter, + ); let shared_lock = node.owner_doc().style_shared_lock().clone(); let mut input = ParserInput::new(&mq_str); - let css_error_reporter = window.css_error_reporter(); let mq = Arc::new(shared_lock.wrap(MediaList::parse( &context, &mut CssParser::new(&mut input), - css_error_reporter), - )); + ))); let loader = StylesheetLoader::for_element(self.upcast()); - let sheet = Stylesheet::from_str(&data, window.get_url(), - Origin::Author, mq, - shared_lock, Some(&loader), - css_error_reporter, - doc.quirks_mode(), - self.line_number as u32); + let sheet = Stylesheet::from_str( + &data, + window.get_url(), + Origin::Author, + mq, + shared_lock, + Some(&loader), + css_error_reporter, + doc.quirks_mode(), + self.line_number as u32, + ); let sheet = Arc::new(sheet); diff --git a/components/script/dom/medialist.rs b/components/script/dom/medialist.rs index 2f5b33c1016..d43f6d3a710 100644 --- a/components/script/dom/medialist.rs +++ b/components/script/dom/medialist.rs @@ -77,14 +77,14 @@ impl MediaListMethods for MediaList { let window = global.as_window(); let url = window.get_url(); let quirks_mode = window.Document().quirks_mode(); - let context = ParserContext::new_for_cssom(&url, Some(CssRuleType::Media), - ParsingMode::DEFAULT, - quirks_mode); - *media_queries = StyleMediaList::parse( - &context, - &mut parser, + let context = ParserContext::new_for_cssom( + &url, + Some(CssRuleType::Media), + ParsingMode::DEFAULT, + quirks_mode, window.css_error_reporter(), ); + *media_queries = StyleMediaList::parse(&context, &mut parser); } // https://drafts.csswg.org/cssom/#dom-medialist-length @@ -117,9 +117,13 @@ impl MediaListMethods for MediaList { let win = global.as_window(); let url = win.get_url(); let quirks_mode = win.Document().quirks_mode(); - let context = ParserContext::new_for_cssom(&url, Some(CssRuleType::Media), - ParsingMode::DEFAULT, - quirks_mode); + let context = ParserContext::new_for_cssom( + &url, + Some(CssRuleType::Media), + ParsingMode::DEFAULT, + quirks_mode, + win.css_error_reporter(), + ); let m = MediaQuery::parse(&context, &mut parser); // Step 2 if let Err(_) = m { @@ -146,9 +150,13 @@ impl MediaListMethods for MediaList { let win = global.as_window(); let url = win.get_url(); let quirks_mode = win.Document().quirks_mode(); - let context = ParserContext::new_for_cssom(&url, Some(CssRuleType::Media), - ParsingMode::DEFAULT, - quirks_mode); + let context = ParserContext::new_for_cssom( + &url, + Some(CssRuleType::Media), + ParsingMode::DEFAULT, + quirks_mode, + win.css_error_reporter(), + ); let m = MediaQuery::parse(&context, &mut parser); // Step 2 if let Err(_) = m { diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs index 0f259dd2ea7..b536f28345f 100644 --- a/components/script/dom/window.rs +++ b/components/script/dom/window.rs @@ -100,6 +100,7 @@ use std::sync::{Arc, Mutex}; use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::mpsc::{Sender, channel}; use std::sync::mpsc::TryRecvError::{Disconnected, Empty}; +use style::error_reporting::ParseErrorReporter; use style::media_queries; use style::parser::ParserContext as CssParserContext; use style::properties::{ComputedValues, PropertyId}; @@ -389,8 +390,8 @@ impl Window { &self.bluetooth_extra_permission_data } - pub fn css_error_reporter(&self) -> &CSSErrorReporter { - &self.error_reporter + pub fn css_error_reporter(&self) -> Option<&ParseErrorReporter> { + Some(&self.error_reporter) } /// Sets a new list of scroll offsets. @@ -1017,14 +1018,15 @@ impl WindowMethods for Window { let mut parser = Parser::new(&mut input); let url = self.get_url(); let quirks_mode = self.Document().quirks_mode(); - let context = CssParserContext::new_for_cssom(&url, Some(CssRuleType::Media), - ParsingMode::DEFAULT, - quirks_mode); - let media_query_list = media_queries::MediaList::parse( - &context, - &mut parser, + let context = CssParserContext::new_for_cssom( + &url, + Some(CssRuleType::Media), + ParsingMode::DEFAULT, + quirks_mode, self.css_error_reporter(), ); + let media_query_list = + media_queries::MediaList::parse(&context, &mut parser); let document = self.Document(); let mql = MediaQueryList::new(&document, media_query_list); self.media_query_lists.push(&*mql); |