diff options
author | Fernando Jiménez Moreno <ferjmoreno@gmail.com> | 2019-03-06 18:02:10 +0100 |
---|---|---|
committer | Fernando Jiménez Moreno <ferjmoreno@gmail.com> | 2019-04-26 11:42:37 +0200 |
commit | 0313e38074d4fb768c914bfe6e73ae959e098394 (patch) | |
tree | 9b0ce023206fe8fb40d06eb38bdc875fed4d63ab /components/script/dom/element.rs | |
parent | b8925a0297af9d49372db9097af277bef50d59ee (diff) | |
download | servo-0313e38074d4fb768c914bfe6e73ae959e098394.tar.gz servo-0313e38074d4fb768c914bfe6e73ae959e098394.zip |
Tweak list of shadow roots attached to doc
Diffstat (limited to 'components/script/dom/element.rs')
-rw-r--r-- | components/script/dom/element.rs | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index 34a4ec41cfa..e0659729673 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -489,7 +489,9 @@ impl Element { .shadow_root .or_init(|| ShadowRoot::new(self, &*self.node.owner_doc())); - self.node.owner_doc().register_shadow_root(&*shadow_root); + if self.is_connected() { + self.node.owner_doc().register_shadow_root(&*shadow_root); + } Ok(shadow_root) } @@ -2802,7 +2804,10 @@ impl VirtualMethods for Element { f.bind_form_control_to_tree(); } + let doc = document_from_node(self); + if let Some(shadow_root) = self.rare_data.shadow_root.get() { + doc.register_shadow_root(&shadow_root); let shadow_root = shadow_root.upcast::<Node>(); shadow_root.set_flag(NodeFlags::IS_CONNECTED, context.tree_connected); for node in shadow_root.children() { @@ -2815,7 +2820,6 @@ impl VirtualMethods for Element { return; } - let doc = document_from_node(self); if let Some(ref value) = *self.id_attribute.borrow() { if let Some(shadow_root) = self.upcast::<Node>().owner_shadow_root() { shadow_root.register_named_element(self, value.clone()); |