aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/dom/element.rs3
-rw-r--r--components/script/dom/node.rs8
2 files changed, 3 insertions, 8 deletions
diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs
index 870b5dc7a4f..2d12e93774d 100644
--- a/components/script/dom/element.rs
+++ b/components/script/dom/element.rs
@@ -497,6 +497,9 @@ impl Element {
// Steps 4, 5 and 6.
let shadow_root = ShadowRoot::new(self, &*self.node.owner_doc());
self.ensure_rare_data().shadow_root = Some(Dom::from_ref(&*shadow_root));
+ shadow_root
+ .upcast::<Node>()
+ .set_containing_shadow_root(&shadow_root);
if self.is_connected() {
self.node.owner_doc().register_shadow_root(&*shadow_root);
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs
index 630e16d6d0e..814378aca88 100644
--- a/components/script/dom/node.rs
+++ b/components/script/dom/node.rs
@@ -947,11 +947,6 @@ impl Node {
}
pub fn containing_shadow_root(&self) -> Option<DomRoot<ShadowRoot>> {
- // NodeRareData contains the shadow root the node belongs to,
- // but this node may be a shadow root itself.
- if let Some(ref shadow_root) = self.downcast::<ShadowRoot>() {
- return Some(DomRoot::from_ref(shadow_root));
- }
self.rare_data()
.as_ref()?
.containing_shadow_root
@@ -1281,9 +1276,6 @@ impl LayoutNodeHelpers for LayoutDom<Node> {
#[inline]
#[allow(unsafe_code)]
unsafe fn containing_shadow_root_for_layout(&self) -> Option<LayoutDom<ShadowRoot>> {
- if let Some(ref shadow_root) = self.downcast::<ShadowRoot>() {
- return Some(*shadow_root);
- }
(*self.unsafe_get())
.rare_data_for_layout()
.as_ref()?