aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/node.rs
diff options
context:
space:
mode:
authorFernando Jiménez Moreno <ferjmoreno@gmail.com>2019-01-29 15:06:34 +0100
committerFernando Jiménez Moreno <ferjmoreno@gmail.com>2019-04-26 10:17:46 +0200
commit6a85409ffe674f92c08d5d79c4b6fe68dac5ad93 (patch)
tree59ddd1b4d848c56ae597f5a11fa0e6b3f96e5804 /components/script/dom/node.rs
parentd6ddb08e23965c3b037bb61829015009a30f86fa (diff)
downloadservo-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.rs13
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