aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
authorbors-servo <infra@servo.org>2023-06-12 12:11:30 +0200
committerGitHub <noreply@github.com>2023-06-12 12:11:30 +0200
commit9260683b5fbc7fa9fe2cc75bbfccbcd9d0e245fd (patch)
tree7f2372c5064ae230bea51aa5a54d06fd0eaff796 /components/script/dom
parent1d69e7b2347ff6aa40a9f3dc4e20f0edf14cf80b (diff)
parentaefaa3f16cd3d8e2df7399f0d10022cd2cebd5a0 (diff)
downloadservo-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.rs3
-rw-r--r--components/script/dom/cssstylerule.rs12
-rw-r--r--components/script/dom/element.rs14
-rw-r--r--components/script/dom/node.rs14
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.