layout: script: Fix build.

This commit is contained in:
Emilio Cobos Álvarez 2018-06-23 20:00:26 +02:00
parent 750c223021
commit 895946bb18
No known key found for this signature in database
GPG key ID: 056B727BB9C1027C
23 changed files with 141 additions and 98 deletions

View file

@ -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 {

View file

@ -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 cant borrow `guard` twice at the same time.

View file

@ -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

View file

@ -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);

View file

@ -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)

View file

@ -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 {

View file

@ -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());

View file

@ -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);

View file

@ -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 {

View file

@ -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);