diff options
author | Fernando Jiménez Moreno <ferjmoreno@gmail.com> | 2019-01-29 15:06:34 +0100 |
---|---|---|
committer | Fernando Jiménez Moreno <ferjmoreno@gmail.com> | 2019-04-26 10:17:46 +0200 |
commit | 6a85409ffe674f92c08d5d79c4b6fe68dac5ad93 (patch) | |
tree | 59ddd1b4d848c56ae597f5a11fa0e6b3f96e5804 /components/script/dom/node.rs | |
parent | d6ddb08e23965c3b037bb61829015009a30f86fa (diff) | |
download | servo-6a85409ffe674f92c08d5d79c4b6fe68dac5ad93.tar.gz servo-6a85409ffe674f92c08d5d79c4b6fe68dac5ad93.zip |
Throw NotSupported when trying to deep clone a shadow root
Diffstat (limited to 'components/script/dom/node.rs')
-rw-r--r-- | components/script/dom/node.rs | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index e05bd2b9aa4..cecad5d7b76 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -280,7 +280,9 @@ impl Node { new_child.parent_node.set(Some(self)); if let Some(shadow_root) = self.downcast::<ShadowRoot>() { - new_child.composed_parent_node.set(Some(shadow_root.Host().upcast::<Node>())); + new_child + .composed_parent_node + .set(Some(shadow_root.Host().upcast::<Node>())); } else { new_child.composed_parent_node.set(Some(self)); } @@ -2528,8 +2530,11 @@ impl NodeMethods for Node { } // https://dom.spec.whatwg.org/#dom-node-clonenode - fn CloneNode(&self, deep: bool) -> DomRoot<Node> { - Node::clone( + fn CloneNode(&self, deep: bool) -> Fallible<DomRoot<Node>> { + if deep && self.is::<ShadowRoot>() { + return Err(Error::NotSupported); + } + Ok(Node::clone( self, None, if deep { @@ -2537,7 +2542,7 @@ impl NodeMethods for Node { } else { CloneChildrenFlag::DoNotCloneChildren }, - ) + )) } // https://dom.spec.whatwg.org/#dom-node-isequalnode |