aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/layout_thread/dom_wrapper.rs18
-rw-r--r--components/layout_thread_2020/dom_wrapper.rs18
-rw-r--r--components/script/dom/element.rs41
-rw-r--r--components/script/dom/node.rs17
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());
}