diff options
author | Emilio Cobos Álvarez <emilio@crisal.io> | 2021-02-26 12:40:48 +0100 |
---|---|---|
committer | Emilio Cobos Álvarez <emilio@crisal.io> | 2021-02-26 17:53:55 +0100 |
commit | 31e8e418ea888b3366128ba42a9c771780f97e87 (patch) | |
tree | f47d0f809e944341d1ea6a724153c2e7386ca2ba /components/script | |
parent | 5158f658104c1edbb87a94958c4ab424d3b854b4 (diff) | |
download | servo-31e8e418ea888b3366128ba42a9c771780f97e87.tar.gz servo-31e8e418ea888b3366128ba42a9c771780f97e87.zip |
Miscellaneous build / tidy fixes.
Diffstat (limited to 'components/script')
-rw-r--r-- | components/script/Cargo.toml | 2 | ||||
-rw-r--r-- | components/script/dom/attr.rs | 31 | ||||
-rw-r--r-- | components/script/dom/css.rs | 8 | ||||
-rw-r--r-- | components/script/dom/cssmediarule.rs | 5 | ||||
-rw-r--r-- | components/script/dom/cssnamespacerule.rs | 2 | ||||
-rw-r--r-- | components/script/dom/cssstyledeclaration.rs | 4 | ||||
-rw-r--r-- | components/script/dom/csssupportsrule.rs | 5 | ||||
-rw-r--r-- | components/script/dom/document.rs | 12 | ||||
-rw-r--r-- | components/script/dom/element.rs | 28 | ||||
-rw-r--r-- | components/script/dom/htmllinkelement.rs | 5 | ||||
-rw-r--r-- | components/script/dom/htmlstyleelement.rs | 3 | ||||
-rw-r--r-- | components/script/dom/medialist.rs | 11 | ||||
-rw-r--r-- | components/script/dom/window.rs | 5 |
13 files changed, 72 insertions, 49 deletions
diff --git a/components/script/Cargo.toml b/components/script/Cargo.toml index 68ac6638907..a09ccf8f257 100644 --- a/components/script/Cargo.toml +++ b/components/script/Cargo.toml @@ -42,7 +42,7 @@ chrono = "0.4" content-security-policy = { version = "0.4.0", features = ["serde"] } cookie = "0.11" crossbeam-channel = "0.4" -cssparser = "0.27" +cssparser = "0.28" data-url = "0.1.0" deny_public_fields = { path = "../deny_public_fields" } devtools_traits = { path = "../devtools_traits" } diff --git a/components/script/dom/attr.rs b/components/script/dom/attr.rs index e2e8b79f9af..9c4b221f6f3 100644 --- a/components/script/dom/attr.rs +++ b/components/script/dom/attr.rs @@ -21,6 +21,7 @@ use servo_atoms::Atom; use std::borrow::ToOwned; use std::mem; use style::attr::{AttrIdentifier, AttrValue}; +use style::values::GenericAtomIdent; // https://dom.spec.whatwg.org/#interface-attr #[dom_struct] @@ -46,10 +47,10 @@ impl Attr { Attr { node_: Node::new_inherited(document), identifier: AttrIdentifier { - local_name: local_name, - name: name, - namespace: namespace, - prefix: prefix, + local_name: GenericAtomIdent(local_name), + name: GenericAtomIdent(name), + namespace: GenericAtomIdent(namespace), + prefix: prefix.map(GenericAtomIdent), }, value: DomRefCell::new(value), owner: MutNullableDom::new(owner), @@ -75,17 +76,17 @@ impl Attr { #[inline] pub fn name(&self) -> &LocalName { - &self.identifier.name + &self.identifier.name.0 } #[inline] pub fn namespace(&self) -> &Namespace { - &self.identifier.namespace + &self.identifier.namespace.0 } #[inline] pub fn prefix(&self) -> Option<&Prefix> { - self.identifier.prefix.as_ref() + Some(&self.identifier.prefix.as_ref()?.0) } } @@ -105,7 +106,7 @@ impl AttrMethods for Attr { // https://dom.spec.whatwg.org/#dom-attr-value fn SetValue(&self, value: DOMString) { if let Some(owner) = self.owner() { - let value = owner.parse_attribute(&self.identifier.namespace, self.local_name(), value); + let value = owner.parse_attribute(self.namespace(), self.local_name(), value); self.set_value(value, &owner); } else { *self.value.borrow_mut() = AttrValue::String(value.into()); @@ -115,12 +116,12 @@ impl AttrMethods for Attr { // https://dom.spec.whatwg.org/#dom-attr-name fn Name(&self) -> DOMString { // FIXME(ajeffrey): convert directly from LocalName to DOMString - DOMString::from(&*self.identifier.name) + DOMString::from(&**self.name()) } // https://dom.spec.whatwg.org/#dom-attr-namespaceuri fn GetNamespaceURI(&self) -> Option<DOMString> { - match self.identifier.namespace { + match *self.namespace() { ns!() => None, ref url => Some(DOMString::from(&**url)), } @@ -170,7 +171,7 @@ impl Attr { assert_eq!(Some(owner), self.owner().as_deref()); owner.will_mutate_attr(self); self.swap_value(&mut value); - if self.identifier.namespace == ns!() { + if *self.namespace() == ns!() { vtable_for(owner.upcast()) .attribute_mutated(self, AttributeMutation::Set(Some(&value))); } @@ -196,7 +197,7 @@ impl Attr { /// Sets the owner element. Should be called after the attribute is added /// or removed from its older parent. pub fn set_owner(&self, owner: Option<&Element>) { - let ns = &self.identifier.namespace; + let ns = self.namespace(); match (self.owner(), owner) { (Some(old), None) => { // Already gone from the list of attributes of old owner. @@ -218,7 +219,7 @@ impl Attr { pub fn summarize(&self) -> AttrInfo { AttrInfo { - namespace: (*self.identifier.namespace).to_owned(), + namespace: (**self.namespace()).to_owned(), name: String::from(self.Name()), value: String::from(self.Value()), } @@ -263,11 +264,11 @@ impl<'dom> AttrHelpersForLayout<'dom> for LayoutDom<'dom, Attr> { #[inline] fn local_name(self) -> &'dom LocalName { - unsafe { &self.unsafe_get().identifier.local_name } + unsafe { &self.unsafe_get().identifier.local_name.0 } } #[inline] fn namespace(self) -> &'dom Namespace { - unsafe { &self.unsafe_get().identifier.namespace } + unsafe { &self.unsafe_get().identifier.namespace.0 } } } diff --git a/components/script/dom/css.rs b/components/script/dom/css.rs index 138ffb6b9da..8c9600549c5 100644 --- a/components/script/dom/css.rs +++ b/components/script/dom/css.rs @@ -14,7 +14,7 @@ use dom_struct::dom_struct; use style::context::QuirksMode; use style::parser::ParserContext; use style::stylesheets::supports_rule::{parse_condition_or_declaration, Declaration}; -use style::stylesheets::CssRuleType; +use style::stylesheets::{CssRuleType, Origin}; use style_traits::ParsingMode; #[dom_struct] @@ -39,7 +39,8 @@ impl CSS { decl.push_str(&value); let decl = Declaration(decl); let url = win.Document().url(); - let context = ParserContext::new_for_cssom( + let context = ParserContext::new( + Origin::Author, &url, Some(CssRuleType::Style), ParsingMode::DEFAULT, @@ -60,7 +61,8 @@ impl CSS { }; let url = win.Document().url(); - let context = ParserContext::new_for_cssom( + let context = ParserContext::new( + Origin::Author, &url, Some(CssRuleType::Style), ParsingMode::DEFAULT, diff --git a/components/script/dom/cssmediarule.rs b/components/script/dom/cssmediarule.rs index 2f54b0a0839..ca2bdd4d447 100644 --- a/components/script/dom/cssmediarule.rs +++ b/components/script/dom/cssmediarule.rs @@ -18,7 +18,7 @@ use servo_arc::Arc; use style::media_queries::MediaList as StyleMediaList; use style::parser::ParserContext; use style::shared_lock::{Locked, ToCssWithGuard}; -use style::stylesheets::{CssRuleType, MediaRule}; +use style::stylesheets::{CssRuleType, MediaRule, Origin}; use style_traits::{ParsingMode, ToCss}; #[dom_struct] @@ -82,7 +82,8 @@ 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( + let context = ParserContext::new( + Origin::Author, &url, Some(CssRuleType::Media), ParsingMode::DEFAULT, diff --git a/components/script/dom/cssnamespacerule.rs b/components/script/dom/cssnamespacerule.rs index f3ff8df36d9..3a15c7d5ffd 100644 --- a/components/script/dom/cssnamespacerule.rs +++ b/components/script/dom/cssnamespacerule.rs @@ -63,7 +63,7 @@ impl CSSNamespaceRuleMethods for CSSNamespaceRule { // https://drafts.csswg.org/cssom/#dom-cssnamespacerule-namespaceuri fn NamespaceURI(&self) -> DOMString { let guard = self.cssrule.shared_lock().read(); - (*self.namespacerule.read_with(&guard).url).into() + (**self.namespacerule.read_with(&guard).url).into() } } diff --git a/components/script/dom/cssstyledeclaration.rs b/components/script/dom/cssstyledeclaration.rs index 3c0d63ce92f..41101afd625 100644 --- a/components/script/dom/cssstyledeclaration.rs +++ b/components/script/dom/cssstyledeclaration.rs @@ -25,6 +25,7 @@ use style::properties::{ }; use style::selector_parser::PseudoElement; use style::shared_lock::Locked; +use style::stylesheets::{CssRuleType, Origin}; use style_traits::ParsingMode; // http://dev.w3.org/csswg/cssom/#the-cssstyledeclaration-interface @@ -302,10 +303,12 @@ impl CSSStyleDeclaration { &mut declarations, id, &value, + Origin::Author, &self.owner.base_url(), window.css_error_reporter(), ParsingMode::DEFAULT, quirks_mode, + CssRuleType::Style, ); // Step 6 @@ -461,6 +464,7 @@ impl CSSStyleDeclarationMethods for CSSStyleDeclaration { &self.owner.base_url(), window.css_error_reporter(), quirks_mode, + CssRuleType::Style, ); }); diff --git a/components/script/dom/csssupportsrule.rs b/components/script/dom/csssupportsrule.rs index c462faf7eba..8a028e9efb2 100644 --- a/components/script/dom/csssupportsrule.rs +++ b/components/script/dom/csssupportsrule.rs @@ -16,7 +16,7 @@ use servo_arc::Arc; use style::parser::ParserContext; use style::shared_lock::{Locked, ToCssWithGuard}; use style::stylesheets::supports_rule::SupportsCondition; -use style::stylesheets::{CssRuleType, SupportsRule}; +use style::stylesheets::{CssRuleType, Origin, SupportsRule}; use style_traits::{ParsingMode, ToCss}; #[dom_struct] @@ -71,7 +71,8 @@ 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( + let context = ParserContext::new( + Origin::Author, &url, Some(CssRuleType::Supports), ParsingMode::DEFAULT, diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index eccc14f67ed..8ae80be66a1 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -3454,7 +3454,12 @@ impl Document { let window_size = self.window().window_size(); let viewport_size = window_size.initial_viewport; let device_pixel_ratio = window_size.device_pixel_ratio; - Device::new(MediaType::screen(), viewport_size, device_pixel_ratio) + Device::new( + MediaType::screen(), + self.quirks_mode(), + viewport_size, + device_pixel_ratio, + ) } pub fn salvageable(&self) -> bool { @@ -3551,8 +3556,9 @@ impl Document { } else { snapshot.other_attributes_changed = true; } - if !snapshot.changed_attrs.contains(attr.local_name()) { - snapshot.changed_attrs.push(attr.local_name().clone()); + let local_name = style::LocalName::cast(attr.local_name()); + if !snapshot.changed_attrs.contains(local_name) { + snapshot.changed_attrs.push(local_name.clone()); } if snapshot.attrs.is_none() { let attrs = el diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index d3813b34001..e69fd558f5c 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -129,9 +129,10 @@ use style::selector_parser::{ NonTSPseudoClass, PseudoElement, RestyleDamage, SelectorImpl, SelectorParser, }; use style::shared_lock::{Locked, SharedRwLock}; +use style::stylesheets::CssRuleType; use style::thread_state; use style::values::generics::NonNegative; -use style::values::{computed, specified, CSSFloat}; +use style::values::{computed, specified, AtomIdent, AtomString, CSSFloat}; use style::CaseSensitivityExt; use xml5ever::serialize as xmlSerialize; use xml5ever::serialize::SerializeOpts as XmlSerializeOpts; @@ -568,7 +569,7 @@ pub fn get_attr_for_layout<'dom>( pub trait LayoutElementHelpers<'dom> { fn attrs(self) -> &'dom [LayoutDom<'dom, Attr>]; - fn has_class_for_layout(self, name: &Atom, case_sensitivity: CaseSensitivity) -> bool; + fn has_class_for_layout(self, name: &AtomIdent, case_sensitivity: CaseSensitivity) -> bool; fn get_classes_for_layout(self) -> Option<&'dom [Atom]>; fn synthesize_presentational_hints_for_legacy_attributes<V>(self, hints: &mut V) @@ -616,7 +617,7 @@ impl<'dom> LayoutElementHelpers<'dom> for LayoutDom<'dom, Element> { } #[inline] - fn has_class_for_layout(self, name: &Atom, case_sensitivity: CaseSensitivity) -> bool { + fn has_class_for_layout(self, name: &AtomIdent, case_sensitivity: CaseSensitivity) -> bool { get_attr_for_layout(self, &ns!(), &local_name!("class")).map_or(false, |attr| { attr.as_tokens() .unwrap() @@ -2851,6 +2852,7 @@ impl VirtualMethods for Element { &doc.base_url(), win.css_error_reporter(), doc.quirks_mode(), + CssRuleType::Style, ))) }; @@ -3135,16 +3137,16 @@ impl<'a> SelectorsElement for DomRoot<Element> { fn attr_matches( &self, - ns: &NamespaceConstraint<&Namespace>, - local_name: &LocalName, - operation: &AttrSelectorOperation<&String>, + ns: &NamespaceConstraint<&style::Namespace>, + local_name: &style::LocalName, + operation: &AttrSelectorOperation<&AtomString>, ) -> bool { match *ns { NamespaceConstraint::Specific(ref ns) => self .get_attribute(ns, local_name) .map_or(false, |attr| attr.value().eval_selector(operation)), NamespaceConstraint::Any => self.attrs.borrow().iter().any(|attr| { - attr.local_name() == local_name && attr.value().eval_selector(operation) + *attr.local_name() == **local_name && attr.value().eval_selector(operation) }), } } @@ -3240,23 +3242,23 @@ impl<'a> SelectorsElement for DomRoot<Element> { } } - fn has_id(&self, id: &Atom, case_sensitivity: CaseSensitivity) -> bool { + fn has_id(&self, id: &AtomIdent, case_sensitivity: CaseSensitivity) -> bool { self.id_attribute .borrow() .as_ref() - .map_or(false, |atom| case_sensitivity.eq_atom(id, atom)) + .map_or(false, |atom| case_sensitivity.eq_atom(&*id, atom)) } - fn is_part(&self, _name: &Atom) -> bool { + fn is_part(&self, _name: &AtomIdent) -> bool { false } - fn imported_part(&self, _: &Atom) -> Option<Atom> { + fn imported_part(&self, _: &AtomIdent) -> Option<AtomIdent> { None } - fn has_class(&self, name: &Atom, case_sensitivity: CaseSensitivity) -> bool { - Element::has_class(&**self, name, case_sensitivity) + fn has_class(&self, name: &AtomIdent, case_sensitivity: CaseSensitivity) -> bool { + Element::has_class(&**self, &name, case_sensitivity) } fn is_html_element_in_html_document(&self) -> bool { diff --git a/components/script/dom/htmllinkelement.rs b/components/script/dom/htmllinkelement.rs index d240b913a9e..30a45471203 100644 --- a/components/script/dom/htmllinkelement.rs +++ b/components/script/dom/htmllinkelement.rs @@ -39,7 +39,7 @@ use style::attr::AttrValue; use style::media_queries::MediaList; use style::parser::ParserContext as CssParserContext; use style::str::HTML_SPACE_CHARACTERS; -use style::stylesheets::{CssRuleType, Stylesheet}; +use style::stylesheets::{CssRuleType, Origin, Stylesheet}; use style_traits::ParsingMode; #[derive(Clone, Copy, JSTraceable, MallocSizeOf, PartialEq)] @@ -310,7 +310,8 @@ impl HTMLLinkElement { // 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. - let context = CssParserContext::new_for_cssom( + let context = CssParserContext::new( + Origin::Author, &doc_url, Some(CssRuleType::Media), ParsingMode::DEFAULT, diff --git a/components/script/dom/htmlstyleelement.rs b/components/script/dom/htmlstyleelement.rs index 4e81837fc35..83d35fc78c8 100644 --- a/components/script/dom/htmlstyleelement.rs +++ b/components/script/dom/htmlstyleelement.rs @@ -96,7 +96,8 @@ impl HTMLStyleElement { .expect("Element.textContent must be a string"); let url = window.get_url(); let css_error_reporter = window.css_error_reporter(); - let context = CssParserContext::new_for_cssom( + let context = CssParserContext::new( + Origin::Author, &url, Some(CssRuleType::Media), ParsingMode::DEFAULT, diff --git a/components/script/dom/medialist.rs b/components/script/dom/medialist.rs index de0f61d0c00..772c508fc04 100644 --- a/components/script/dom/medialist.rs +++ b/components/script/dom/medialist.rs @@ -16,7 +16,7 @@ use style::media_queries::MediaList as StyleMediaList; use style::media_queries::MediaQuery; use style::parser::ParserContext; use style::shared_lock::{Locked, SharedRwLock}; -use style::stylesheets::CssRuleType; +use style::stylesheets::{CssRuleType, Origin}; use style_traits::{ParsingMode, ToCss}; #[dom_struct] @@ -81,7 +81,8 @@ 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( + let context = ParserContext::new( + Origin::Author, &url, Some(CssRuleType::Media), ParsingMode::DEFAULT, @@ -122,7 +123,8 @@ 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( + let context = ParserContext::new( + Origin::Author, &url, Some(CssRuleType::Media), ParsingMode::DEFAULT, @@ -159,7 +161,8 @@ 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( + let context = ParserContext::new( + Origin::Author, &url, Some(CssRuleType::Media), ParsingMode::DEFAULT, diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs index 71ceb293664..7e36c8086fb 100644 --- a/components/script/dom/window.rs +++ b/components/script/dom/window.rs @@ -142,7 +142,7 @@ use style::properties::style_structs::Font; use style::properties::{PropertyId, ShorthandId}; use style::selector_parser::PseudoElement; use style::str::HTML_SPACE_CHARACTERS; -use style::stylesheets::CssRuleType; +use style::stylesheets::{CssRuleType, Origin}; use style_traits::{CSSPixel, DevicePixel, ParsingMode}; use url::Position; use webrender_api::units::{DeviceIntPoint, DeviceIntSize, LayoutPixel}; @@ -1307,7 +1307,8 @@ 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( + let context = CssParserContext::new( + Origin::Author, &url, Some(CssRuleType::Media), ParsingMode::DEFAULT, |