aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/element.rs
diff options
context:
space:
mode:
authorConnor Brewster <connor.brewster@eagles.oc.edu>2017-08-01 12:20:31 -0600
committerConnor Brewster <connor.brewster@eagles.oc.edu>2017-08-09 14:36:22 -0600
commit9f51c7df21b9a03c40235cbccd1b7930528f23a2 (patch)
treedc4a777b268ce2d6bb7000caac1d0a26e9119f6a /components/script/dom/element.rs
parente700006fb218f04cdfdfab0d6c4e07d6901ab94d (diff)
downloadservo-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.rs20
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);
}