aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/node.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/node.rs')
-rw-r--r--components/script/dom/node.rs17
1 files changed, 12 insertions, 5 deletions
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs
index a42f2371d3d..7348431d4f3 100644
--- a/components/script/dom/node.rs
+++ b/components/script/dom/node.rs
@@ -1307,7 +1307,7 @@ pub unsafe fn from_untrusted_node_address(
pub trait LayoutNodeHelpers<'dom> {
fn type_id_for_layout(self) -> NodeTypeId;
- unsafe fn composed_parent_node_ref(self) -> Option<LayoutDom<'dom, Node>>;
+ fn composed_parent_node_ref(self) -> Option<LayoutDom<'dom, Node>>;
fn first_child_ref(self) -> Option<LayoutDom<'dom, Node>>;
fn last_child_ref(self) -> Option<LayoutDom<'dom, Node>>;
fn prev_sibling_ref(self) -> Option<LayoutDom<'dom, Node>>;
@@ -1339,6 +1339,14 @@ pub trait LayoutNodeHelpers<'dom> {
fn opaque(self) -> OpaqueNode;
}
+impl<'dom> LayoutDom<'dom, Node> {
+ #[inline]
+ #[allow(unsafe_code)]
+ fn parent_node_ref(self) -> Option<LayoutDom<'dom, Node>> {
+ unsafe { self.unsafe_get().parent_node.get_inner_as_layout() }
+ }
+}
+
impl<'dom> LayoutNodeHelpers<'dom> for LayoutDom<'dom, Node> {
#[inline]
#[allow(unsafe_code)]
@@ -1352,10 +1360,9 @@ impl<'dom> LayoutNodeHelpers<'dom> for LayoutDom<'dom, Node> {
}
#[inline]
- #[allow(unsafe_code)]
- unsafe fn composed_parent_node_ref(self) -> Option<LayoutDom<'dom, Node>> {
- let parent = (*self.unsafe_get()).parent_node.get_inner_as_layout();
- if let Some(ref parent) = parent {
+ fn composed_parent_node_ref(self) -> Option<LayoutDom<'dom, Node>> {
+ let parent = self.parent_node_ref();
+ if let Some(parent) = parent {
if let Some(shadow_root) = parent.downcast::<ShadowRoot>() {
return Some(shadow_root.get_host_for_layout().upcast());
}