aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
authorEmilio Cobos Álvarez <emilio@crisal.io>2018-06-23 20:00:26 +0200
committerEmilio Cobos Álvarez <emilio@crisal.io>2018-06-23 20:34:10 +0200
commit895946bb186a194d1545e4782715f074cc8f8f6c (patch)
treeaad4d22255799cd13706f20338e1e5d9e81010ec /components/script/dom
parent750c223021220da374b35bced42edb60d16e0106 (diff)
downloadservo-895946bb186a194d1545e4782715f074cc8f8f6c.tar.gz
servo-895946bb186a194d1545e4782715f074cc8f8f6c.zip
layout: script: Fix build.
Diffstat (limited to 'components/script/dom')
-rw-r--r--components/script/dom/css.rs6
-rw-r--r--components/script/dom/cssmediarule.rs14
-rw-r--r--components/script/dom/cssstyledeclaration.rs17
-rw-r--r--components/script/dom/csssupportsrule.rs10
-rw-r--r--components/script/dom/document.rs7
-rw-r--r--components/script/dom/htmlimageelement.rs11
-rw-r--r--components/script/dom/htmllinkelement.rs7
-rw-r--r--components/script/dom/htmlstyleelement.rs33
-rw-r--r--components/script/dom/medialist.rs32
-rw-r--r--components/script/dom/window.rs18
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);