aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2020-01-31 01:48:35 -0500
committerGitHub <noreply@github.com>2020-01-31 01:48:35 -0500
commit4edd1590f48bf61d60e69254b2e05bf62185ef77 (patch)
tree3b5c0083de28ceb6d408a98af228116ecc052a71 /components/script/dom
parentb2f466d9e421656b12ccce9f9572a71b113986c5 (diff)
parent8ca4db2cd64344c874016f110922cefd9e4ebb58 (diff)
downloadservo-4edd1590f48bf61d60e69254b2e05bf62185ef77.tar.gz
servo-4edd1590f48bf61d60e69254b2e05bf62185ef77.zip
Auto merge of #25627 - pshaughn:definedpseudo, r=emilio,jdm
Implement :defined CSS selector <!-- Please describe your changes on the following line: --> ElementState::IN_DEFINED_STATE already existed but wasn't hooked up to anything; now it is set appropriately, and CSS is aware of it. The main test for this selector needed the window named getter for no important reason, so I made a one-line test change to avoid that. Remaining failures in the test are all about SVG elements. --- <!-- 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 - [X] These changes fix #25010 <!-- Either: --> - [X] 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/create.rs2
-rw-r--r--components/script/dom/element.rs14
2 files changed, 14 insertions, 2 deletions
diff --git a/components/script/dom/create.rs b/components/script/dom/create.rs
index d67550ee47f..f68a680483d 100644
--- a/components/script/dom/create.rs
+++ b/components/script/dom/create.rs
@@ -200,6 +200,8 @@ fn create_html_element(
None => {
if is_valid_custom_element_name(&*name.local) {
result.set_custom_element_state(CustomElementState::Undefined);
+ } else {
+ result.set_custom_element_state(CustomElementState::Uncustomized);
}
},
};
diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs
index 29bdaf2f3bf..c26e492d544 100644
--- a/components/script/dom/element.rs
+++ b/components/script/dom/element.rs
@@ -324,14 +324,23 @@ impl Element {
}
pub fn set_custom_element_state(&self, state: CustomElementState) {
- self.ensure_rare_data().custom_element_state = state;
+ // no need to inflate rare data for uncustomized
+ if state != CustomElementState::Uncustomized || self.rare_data().is_some() {
+ self.ensure_rare_data().custom_element_state = state;
+ }
+ // https://dom.spec.whatwg.org/#concept-element-defined
+ let in_defined_state = match state {
+ CustomElementState::Uncustomized | CustomElementState::Custom => true,
+ _ => false,
+ };
+ self.set_state(ElementState::IN_DEFINED_STATE, in_defined_state)
}
pub fn get_custom_element_state(&self) -> CustomElementState {
if let Some(rare_data) = self.rare_data().as_ref() {
return rare_data.custom_element_state;
}
- CustomElementState::Undefined
+ CustomElementState::Uncustomized
}
pub fn set_custom_element_definition(&self, definition: Rc<CustomElementDefinition>) {
@@ -3039,6 +3048,7 @@ impl<'a> SelectorsElement for DomRoot<Element> {
NonTSPseudoClass::Focus |
NonTSPseudoClass::Fullscreen |
NonTSPseudoClass::Hover |
+ NonTSPseudoClass::Defined |
NonTSPseudoClass::Enabled |
NonTSPseudoClass::Disabled |
NonTSPseudoClass::Checked |