diff --git a/components/layout/wrapper.rs b/components/layout/wrapper.rs index 7a7d7d9277c..9ea869d35cd 100644 --- a/components/layout/wrapper.rs +++ b/components/layout/wrapper.rs @@ -683,33 +683,21 @@ impl<'ln> ThreadSafeLayoutNode<'ln> { } #[inline] - pub fn get_before_display(&self) -> display::T { + pub fn get_before_display(&self) -> Option { let mut layout_data_ref = self.mutate_layout_data(); let node_layout_data_wrapper = layout_data_ref.as_mut().unwrap(); - let style = node_layout_data_wrapper.data.before_style.as_ref().unwrap(); - style.get_box().display + node_layout_data_wrapper.data.before_style.as_ref().map(|style| { + style.get_box().display + }) } #[inline] - pub fn get_after_display(&self) -> display::T { + pub fn get_after_display(&self) -> Option { let mut layout_data_ref = self.mutate_layout_data(); let node_layout_data_wrapper = layout_data_ref.as_mut().unwrap(); - let style = node_layout_data_wrapper.data.after_style.as_ref().unwrap(); - style.get_box().display - } - - #[inline] - pub fn has_before_pseudo(&self) -> bool { - let layout_data_wrapper = self.borrow_layout_data(); - let layout_data_wrapper_ref = layout_data_wrapper.as_ref().unwrap(); - layout_data_wrapper_ref.data.before_style.is_some() - } - - #[inline] - pub fn has_after_pseudo(&self) -> bool { - let layout_data_wrapper = self.borrow_layout_data(); - let layout_data_wrapper_ref = layout_data_wrapper.as_ref().unwrap(); - layout_data_wrapper_ref.data.after_style.is_some() + node_layout_data_wrapper.data.after_style.as_ref().map(|style| { + style.get_box().display + }) } /// Borrows the layout data without checking. @@ -944,15 +932,14 @@ impl<'a> ThreadSafeLayoutNodeChildrenIterator<'a> { return None } - if parent.has_before_pseudo() { - let pseudo = PseudoElementType::Before(parent.get_before_display()); - return Some(parent.with_pseudo(pseudo)); - } - - unsafe { - parent.get_jsmanaged().first_child_ref() - .map(|node| parent.new_with_this_lifetime(&node)) - } + parent.get_before_display().map(|display| { + parent.with_pseudo(PseudoElementType::Before(display)) + }).or_else(|| { + unsafe { + parent.get_jsmanaged().first_child_ref() + .map(|node| parent.new_with_this_lifetime(&node)) + } + }) } ThreadSafeLayoutNodeChildrenIterator { @@ -977,13 +964,10 @@ impl<'a> Iterator for ThreadSafeLayoutNodeChildrenIterator<'a> { }) }, None => { - if self.parent_node.has_after_pseudo() { - let pseudo = PseudoElementType::After( - self.parent_node.get_after_display()); - Some(self.parent_node.with_pseudo(pseudo)) - } else { - None - } + self.parent_node.get_after_display().map(|display| { + self.parent_node.with_pseudo( + PseudoElementType::After(display)) + }) } } }, @@ -995,14 +979,11 @@ impl<'a> Iterator for ThreadSafeLayoutNodeChildrenIterator<'a> { }) }, None => { - if self.parent_node.has_after_pseudo() { - let pseudo = PseudoElementType::After( - self.parent_node.get_after_display()); - Some(self.parent_node.with_pseudo(pseudo)) - } else { - None - } - } + self.parent_node.get_after_display().map(|display| { + self.parent_node.with_pseudo( + PseudoElementType::After(display)) + }) + }, } }, PseudoElementType::After(_) => {