diff --git a/servo/components/layout/wrapper.rs b/servo/components/layout/wrapper.rs index d56fb0925b57..561d750a754f 100644 --- a/servo/components/layout/wrapper.rs +++ b/servo/components/layout/wrapper.rs @@ -575,13 +575,6 @@ impl<'le> TElementAttributes for LayoutElement<'le> { } } -fn get_content(content_list: &content::T) -> Vec { - match *content_list { - content::T::Content(ref value) if !value.is_empty() => (*value).clone(), - _ => vec![], - } -} - #[derive(Copy, PartialEq, Clone)] pub enum PseudoElementType { Normal, @@ -794,17 +787,12 @@ impl<'ln> ThreadSafeLayoutNode<'ln> { } let mut opt_kid = self.first_child(); - loop { - match opt_kid { - None => break, - Some(mut kid) => { - if !kid.traverse_postorder_mut(traversal) { - return false - } - unsafe { - opt_kid = kid.next_sibling() - } - } + while let Some(mut kid) = opt_kid { + if !kid.traverse_postorder_mut(traversal) { + return false + } + unsafe { + opt_kid = kid.next_sibling() } } @@ -927,15 +915,17 @@ impl<'ln> ThreadSafeLayoutNode<'ln> { pub fn text_content(&self) -> Vec { if self.pseudo != PseudoElementType::Normal { let layout_data_ref = self.borrow_layout_data(); - let node_layout_data_wrapper = layout_data_ref.as_ref().unwrap(); + let data = &layout_data_ref.as_ref().unwrap().data; - if self.pseudo.is_before() { - let before_style = node_layout_data_wrapper.data.before_style.as_ref().unwrap(); - return get_content(&before_style.get_box().content) + let style = if self.pseudo.is_before() { + &data.before_style } else { - let after_style = node_layout_data_wrapper.data.after_style.as_ref().unwrap(); - return get_content(&after_style.get_box().content) - } + &data.after_style + }; + return match style.as_ref().unwrap().get_box().content { + content::T::Content(ref value) if !value.is_empty() => (*value).clone(), + _ => vec![], + }; } let this = unsafe { self.get_jsmanaged() }; @@ -1022,15 +1012,15 @@ impl<'a> Iterator for ThreadSafeLayoutNodeChildrenIterator<'a> { match self.parent_node { Some(ref parent_node) => { - if parent_node.pseudo == PseudoElementType::Normal { - self.current_node = self.current_node.clone().and_then(|node| { + self.current_node = if parent_node.pseudo == PseudoElementType::Normal { + self.current_node.clone().and_then(|node| { unsafe { node.next_sibling() } - }); + }) } else { - self.current_node = None; - } + None + }; } None => {} }