diff options
author | Connor Brewster <connor.brewster@eagles.oc.edu> | 2017-08-01 12:20:31 -0600 |
---|---|---|
committer | Connor Brewster <connor.brewster@eagles.oc.edu> | 2017-08-09 14:36:22 -0600 |
commit | 9f51c7df21b9a03c40235cbccd1b7930528f23a2 (patch) | |
tree | dc4a777b268ce2d6bb7000caac1d0a26e9119f6a /components/script/dom/element.rs | |
parent | e700006fb218f04cdfdfab0d6c4e07d6901ab94d (diff) | |
download | servo-9f51c7df21b9a03c40235cbccd1b7930528f23a2.tar.gz servo-9f51c7df21b9a03c40235cbccd1b7930528f23a2.zip |
Track custom element state
Diffstat (limited to 'components/script/dom/element.rs')
-rw-r--r-- | components/script/dom/element.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index 270d7d7e020..6aeef3ce986 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -150,6 +150,8 @@ pub struct Element { /// https://dom.spec.whatwg.org/#concept-element-custom-element-definition #[ignore_heap_size_of = "Rc"] custom_element_definition: DOMRefCell<Option<Rc<CustomElementDefinition>>>, + /// https://dom.spec.whatwg.org/#concept-element-custom-element-state + custom_element_state: Cell<CustomElementState>, } impl fmt::Debug for Element { @@ -179,6 +181,15 @@ pub enum CustomElementCreationMode { Asynchronous, } +/// https://dom.spec.whatwg.org/#concept-element-custom-element-state +#[derive(Clone, Copy, PartialEq, Eq, HeapSizeOf, JSTraceable)] +pub enum CustomElementState { + Undefined, + Failed, + Uncustomized, + Custom, +} + impl ElementCreator { pub fn is_parser_created(&self) -> bool { match *self { @@ -255,6 +266,7 @@ impl Element { selector_flags: Cell::new(ElementSelectorFlags::empty()), custom_element_reaction_queue: Default::default(), custom_element_definition: Default::default(), + custom_element_state: Cell::new(CustomElementState::Uncustomized), } } @@ -289,6 +301,14 @@ impl Element { self.is.borrow().clone() } + pub fn set_custom_element_state(&self, state: CustomElementState) { + self.custom_element_state.set(state); + } + + pub fn get_custom_element_state(&self) -> CustomElementState { + self.custom_element_state.get() + } + pub fn set_custom_element_definition(&self, definition: Rc<CustomElementDefinition>) { *self.custom_element_definition.borrow_mut() = Some(definition); } |