diff options
author | bors-servo <infra@servo.org> | 2023-06-12 12:11:30 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-12 12:11:30 +0200 |
commit | 9260683b5fbc7fa9fe2cc75bbfccbcd9d0e245fd (patch) | |
tree | 7f2372c5064ae230bea51aa5a54d06fd0eaff796 /components/script/dom | |
parent | 1d69e7b2347ff6aa40a9f3dc4e20f0edf14cf80b (diff) | |
parent | aefaa3f16cd3d8e2df7399f0d10022cd2cebd5a0 (diff) | |
download | servo-9260683b5fbc7fa9fe2cc75bbfccbcd9d0e245fd.tar.gz servo-9260683b5fbc7fa9fe2cc75bbfccbcd9d0e245fd.zip |
Auto merge of #29848 - Loirooriol:sync, r=mrobinson
Backport several style changes from Gecko (4)
<!-- Please describe your changes on the following line: -->
This continues https://github.com/servo/servo/pull/29816.
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [ ] These changes fix #___ (GitHub issue number if applicable)
<!-- Either: -->
- [ ] There are tests for these changes OR
- [ ] These changes do not require tests because ___
<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
Diffstat (limited to 'components/script/dom')
-rw-r--r-- | components/script/dom/cssrule.rs | 3 | ||||
-rw-r--r-- | components/script/dom/cssstylerule.rs | 12 | ||||
-rw-r--r-- | components/script/dom/element.rs | 14 | ||||
-rw-r--r-- | components/script/dom/node.rs | 14 |
4 files changed, 22 insertions, 21 deletions
diff --git a/components/script/dom/cssrule.rs b/components/script/dom/cssrule.rs index 853a9c9b643..e23e6721301 100644 --- a/components/script/dom/cssrule.rs +++ b/components/script/dom/cssrule.rs @@ -105,7 +105,8 @@ impl CSSRule { }, StyleCssRule::Page(_) => unreachable!(), StyleCssRule::Document(_) => unimplemented!(), // TODO - StyleCssRule::Layer(_) => unimplemented!(), // TODO + StyleCssRule::LayerBlock(_) => unimplemented!(), // TODO + StyleCssRule::LayerStatement(_) => unimplemented!(), // TODO StyleCssRule::ScrollTimeline(_) => unimplemented!(), // TODO } } diff --git a/components/script/dom/cssstylerule.rs b/components/script/dom/cssstylerule.rs index a84c5c598b7..f81f30ab258 100644 --- a/components/script/dom/cssstylerule.rs +++ b/components/script/dom/cssstylerule.rs @@ -96,19 +96,15 @@ impl CSSStyleRuleMethods for CSSStyleRule { // https://drafts.csswg.org/cssom/#dom-cssstylerule-selectortext fn SetSelectorText(&self, value: DOMString) { + let contents = &self.cssrule.parent_stylesheet().style_stylesheet().contents; // It's not clear from the spec if we should use the stylesheet's namespaces. // https://github.com/w3c/csswg-drafts/issues/1511 - let namespaces = self - .cssrule - .parent_stylesheet() - .style_stylesheet() - .contents - .namespaces - .read(); + let namespaces = contents.namespaces.read(); + let url_data = contents.url_data.read(); let parser = SelectorParser { stylesheet_origin: Origin::Author, namespaces: &namespaces, - url_data: None, + url_data: &url_data, }; let mut css_parser = CssParserInput::new(&*value); let mut css_parser = CssParser::new(&mut css_parser); diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index f2de9aaa1a1..2e94e635b26 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -130,6 +130,7 @@ use style::selector_parser::{ NonTSPseudoClass, PseudoElement, RestyleDamage, SelectorImpl, SelectorParser, }; use style::shared_lock::{Locked, SharedRwLock}; +use style::stylesheets::layer_rule::LayerOrder; use style::stylesheets::CssRuleType; use style::thread_state; use style::values::generics::NonNegative; @@ -665,6 +666,7 @@ impl<'dom> LayoutElementHelpers<'dom> for LayoutDom<'dom, Element> { Importance::Normal, ))), CascadeLevel::PresHints, + LayerOrder::root(), ) } @@ -2700,12 +2702,14 @@ impl ElementMethods for Element { // https://dom.spec.whatwg.org/#dom-element-matches fn Matches(&self, selectors: DOMString) -> Fallible<bool> { - let selectors = match SelectorParser::parse_author_origin_no_namespace(&selectors) { + let doc = document_from_node(self); + let url = doc.url(); + let selectors = match SelectorParser::parse_author_origin_no_namespace(&selectors, &url) { Err(_) => return Err(Error::Syntax), Ok(selectors) => selectors, }; - let quirks_mode = document_from_node(self).quirks_mode(); + let quirks_mode = doc.quirks_mode(); let element = DomRoot::from_ref(self); Ok(dom_apis::element_matches(&element, &selectors, quirks_mode)) @@ -2718,12 +2722,14 @@ impl ElementMethods for Element { // https://dom.spec.whatwg.org/#dom-element-closest fn Closest(&self, selectors: DOMString) -> Fallible<Option<DomRoot<Element>>> { - let selectors = match SelectorParser::parse_author_origin_no_namespace(&selectors) { + let doc = document_from_node(self); + let url = doc.url(); + let selectors = match SelectorParser::parse_author_origin_no_namespace(&selectors, &url) { Err(_) => return Err(Error::Syntax), Ok(selectors) => selectors, }; - let quirks_mode = document_from_node(self).quirks_mode(); + let quirks_mode = doc.quirks_mode(); Ok(dom_apis::element_closest( DomRoot::from_ref(self), &selectors, diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index c98e9b93bfe..f419dcab485 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -949,18 +949,15 @@ impl Node { // https://dom.spec.whatwg.org/#dom-parentnode-queryselector pub fn query_selector(&self, selectors: DOMString) -> Fallible<Option<DomRoot<Element>>> { // Step 1. - match SelectorParser::parse_author_origin_no_namespace(&selectors) { + let doc = self.owner_doc(); + match SelectorParser::parse_author_origin_no_namespace(&selectors, &doc.url()) { // Step 2. Err(_) => Err(Error::Syntax), // Step 3. Ok(selectors) => { // FIXME(bholley): Consider an nth-index cache here. - let mut ctx = MatchingContext::new( - MatchingMode::Normal, - None, - None, - self.owner_doc().quirks_mode(), - ); + let mut ctx = + MatchingContext::new(MatchingMode::Normal, None, None, doc.quirks_mode()); Ok(self .traverse_preorder(ShadowIncluding::No) .filter_map(DomRoot::downcast) @@ -975,7 +972,8 @@ impl Node { /// whilst iterating, otherwise the iterator may be invalidated. pub fn query_selector_iter(&self, selectors: DOMString) -> Fallible<QuerySelectorIterator> { // Step 1. - match SelectorParser::parse_author_origin_no_namespace(&selectors) { + let url = self.owner_doc().url(); + match SelectorParser::parse_author_origin_no_namespace(&selectors, &url) { // Step 2. Err(_) => Err(Error::Syntax), // Step 3. |