aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/node.rs
diff options
context:
space:
mode:
authorFernando Jiménez Moreno <ferjmoreno@gmail.com>2019-03-04 14:22:52 +0100
committerFernando Jiménez Moreno <ferjmoreno@gmail.com>2019-04-26 11:31:18 +0200
commitccf8a436490992d01ad4bd99e79a2b4e2e649361 (patch)
tree269afa70e199ad0d554d6ba26eb9ead031bbf4f5 /components/script/dom/node.rs
parentea1fe15dfe76a838fbfd7b8948d07d284756e7be (diff)
downloadservo-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.rs10
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()
}