diff options
-rw-r--r-- | components/layout_thread/dom_wrapper.rs | 18 | ||||
-rw-r--r-- | components/layout_thread_2020/dom_wrapper.rs | 18 | ||||
-rw-r--r-- | components/script/dom/element.rs | 41 | ||||
-rw-r--r-- | components/script/dom/node.rs | 17 |
4 files changed, 44 insertions, 50 deletions
diff --git a/components/layout_thread/dom_wrapper.rs b/components/layout_thread/dom_wrapper.rs index da605b9958b..5c9cf183053 100644 --- a/components/layout_thread/dom_wrapper.rs +++ b/components/layout_thread/dom_wrapper.rs @@ -203,11 +203,9 @@ impl<'ln> TNode for ServoLayoutNode<'ln> { type ConcreteShadowRoot = ServoShadowRoot<'ln>; fn parent_node(&self) -> Option<Self> { - unsafe { - self.node - .composed_parent_node_ref() - .map(Self::from_layout_js) - } + self.node + .composed_parent_node_ref() + .map(Self::from_layout_js) } fn first_child(&self) -> Option<Self> { @@ -745,12 +743,10 @@ impl<'le> ::selectors::Element for ServoLayoutElement<'le> { } fn parent_element(&self) -> Option<ServoLayoutElement<'le>> { - unsafe { - self.element - .upcast() - .composed_parent_node_ref() - .and_then(as_element) - } + self.element + .upcast() + .composed_parent_node_ref() + .and_then(as_element) } fn parent_node_is_shadow_root(&self) -> bool { diff --git a/components/layout_thread_2020/dom_wrapper.rs b/components/layout_thread_2020/dom_wrapper.rs index c96585a4456..0e527bd75d9 100644 --- a/components/layout_thread_2020/dom_wrapper.rs +++ b/components/layout_thread_2020/dom_wrapper.rs @@ -210,11 +210,9 @@ impl<'ln> TNode for ServoLayoutNode<'ln> { type ConcreteShadowRoot = ServoShadowRoot<'ln>; fn parent_node(&self) -> Option<Self> { - unsafe { - self.node - .composed_parent_node_ref() - .map(Self::from_layout_js) - } + self.node + .composed_parent_node_ref() + .map(Self::from_layout_js) } fn first_child(&self) -> Option<Self> { @@ -752,12 +750,10 @@ impl<'le> ::selectors::Element for ServoLayoutElement<'le> { } fn parent_element(&self) -> Option<ServoLayoutElement<'le>> { - unsafe { - self.element - .upcast() - .composed_parent_node_ref() - .and_then(as_element) - } + self.element + .upcast() + .composed_parent_node_ref() + .and_then(as_element) } fn parent_node_is_shadow_root(&self) -> bool { diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index 8bbdbf6e7dd..b59b342024f 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -985,32 +985,27 @@ impl<'dom> LayoutElementHelpers<'dom> for LayoutDom<'dom, Element> { unsafe { &(*self.unsafe_get()).namespace } } - #[allow(unsafe_code)] fn get_lang_for_layout(self) -> String { - unsafe { - let mut current_node = Some(self.upcast::<Node>()); - while let Some(node) = current_node { - current_node = node.composed_parent_node_ref(); - match node.downcast::<Element>() { - Some(elem) => { - if let Some(attr) = - elem.get_attr_val_for_layout(&ns!(xml), &local_name!("lang")) - { - return attr.to_owned(); - } - if let Some(attr) = - elem.get_attr_val_for_layout(&ns!(), &local_name!("lang")) - { - return attr.to_owned(); - } - }, - None => continue, - } + let mut current_node = Some(self.upcast::<Node>()); + while let Some(node) = current_node { + current_node = node.composed_parent_node_ref(); + match node.downcast::<Element>() { + Some(elem) => { + if let Some(attr) = + elem.get_attr_val_for_layout(&ns!(xml), &local_name!("lang")) + { + return attr.to_owned(); + } + if let Some(attr) = elem.get_attr_val_for_layout(&ns!(), &local_name!("lang")) { + return attr.to_owned(); + } + }, + None => continue, } - // TODO: Check meta tags for a pragma-set default language - // TODO: Check HTTP Content-Language header - String::new() } + // TODO: Check meta tags for a pragma-set default language + // TODO: Check HTTP Content-Language header + String::new() } #[inline] 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()); } |