aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom')
-rw-r--r--components/script/dom/document.rs10
1 files changed, 8 insertions, 2 deletions
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs
index 623ebe79722..14dc0643925 100644
--- a/components/script/dom/document.rs
+++ b/components/script/dom/document.rs
@@ -87,6 +87,7 @@ use crate::dom::progressevent::ProgressEvent;
use crate::dom::promise::Promise;
use crate::dom::range::Range;
use crate::dom::servoparser::ServoParser;
+use crate::dom::shadowroot::ShadowRoot;
use crate::dom::storageevent::StorageEvent;
use crate::dom::stylesheetlist::StyleSheetList;
use crate::dom::text::Text;
@@ -3625,7 +3626,7 @@ impl DocumentMethods for Document {
// https://dom.spec.whatwg.org/#dom-document-importnode
fn ImportNode(&self, node: &Node, deep: bool) -> Fallible<DomRoot<Node>> {
// Step 1.
- if node.is::<Document>() {
+ if node.is::<Document>() || node.is::<ShadowRoot>() {
return Err(Error::NotSupported);
}
@@ -3647,9 +3648,14 @@ impl DocumentMethods for Document {
}
// Step 2.
- Node::adopt(node, self);
+ if node.is::<ShadowRoot>() {
+ return Err(Error::HierarchyRequest);
+ }
// Step 3.
+ Node::adopt(node, self);
+
+ // Step 4.
Ok(DomRoot::from_ref(node))
}