diff options
author | Patrick Shaughnessy <pshaughn@comcast.net> | 2020-01-27 21:00:34 -0500 |
---|---|---|
committer | Patrick Shaughnessy <pshaughn@comcast.net> | 2020-01-30 10:09:51 -0500 |
commit | 8ca4db2cd64344c874016f110922cefd9e4ebb58 (patch) | |
tree | ef8e52137eeb311b7783d75dd708eacd2863c443 /components/script/dom | |
parent | 6d220d02de9cd8e50421080179355875789f1100 (diff) | |
download | servo-8ca4db2cd64344c874016f110922cefd9e4ebb58.tar.gz servo-8ca4db2cd64344c874016f110922cefd9e4ebb58.zip |
:defined works
Diffstat (limited to 'components/script/dom')
-rw-r--r-- | components/script/dom/create.rs | 2 | ||||
-rw-r--r-- | components/script/dom/element.rs | 14 |
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 | |