diff options
author | Fernando Jiménez Moreno <ferjmoreno@gmail.com> | 2019-03-04 14:22:52 +0100 |
---|---|---|
committer | Fernando Jiménez Moreno <ferjmoreno@gmail.com> | 2019-04-26 11:31:18 +0200 |
commit | ccf8a436490992d01ad4bd99e79a2b4e2e649361 (patch) | |
tree | 269afa70e199ad0d554d6ba26eb9ead031bbf4f5 /components/script/dom/node.rs | |
parent | ea1fe15dfe76a838fbfd7b8948d07d284756e7be (diff) | |
download | servo-ccf8a436490992d01ad4bd99e79a2b4e2e649361.tar.gz servo-ccf8a436490992d01ad4bd99e79a2b4e2e649361.zip |
Document owner_shadow_root
Diffstat (limited to 'components/script/dom/node.rs')
-rw-r--r-- | components/script/dom/node.rs | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 7c50e4ae69d..22e157f3132 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -125,6 +125,8 @@ pub struct Node { owner_doc: MutNullableDom<Document>, /// The shadow root this node belongs to. + /// This is None if the node is not in a shadow tree or + /// if it is a ShadowRoot. owner_shadow_root: MutNullableDom<ShadowRoot>, /// The live list of children return by .childNodes. @@ -284,11 +286,10 @@ impl Node { for node in new_child.traverse_preorder(ShadowIncluding::No) { if parent_in_shadow_tree { - if let Some(shadow_root) = self.downcast::<ShadowRoot>() { - node.set_owner_shadow_root(&*shadow_root); - } else if let Some(shadow_root) = self.owner_shadow_root() { + if let Some(shadow_root) = self.owner_shadow_root() { node.set_owner_shadow_root(&*shadow_root); } + debug_assert!(node.owner_shadow_root().is_some()); } node.set_flag(NodeFlags::IS_IN_DOC, parent_in_doc); node.set_flag(NodeFlags::IS_IN_SHADOW_TREE, parent_in_shadow_tree); @@ -930,6 +931,9 @@ impl Node { } pub fn owner_shadow_root(&self) -> Option<DomRoot<ShadowRoot>> { + if let Some(ref shadow_root) = self.downcast::<ShadowRoot>() { + return Some(DomRoot::from_ref(shadow_root)); + } self.owner_shadow_root.get() } |