diff options
Diffstat (limited to 'components/script_layout_interface/wrapper_traits.rs')
-rw-r--r-- | components/script_layout_interface/wrapper_traits.rs | 34 |
1 files changed, 15 insertions, 19 deletions
diff --git a/components/script_layout_interface/wrapper_traits.rs b/components/script_layout_interface/wrapper_traits.rs index 08de74f0e21..a1c59d83114 100644 --- a/components/script_layout_interface/wrapper_traits.rs +++ b/components/script_layout_interface/wrapper_traits.rs @@ -339,7 +339,7 @@ pub trait ThreadSafeLayoutElement: Clone + Copy + Sized + Debug + .unwrap() .borrow() .styles().pseudos - .contains_key(&PseudoElement::Before) { + .has(&PseudoElement::Before) { Some(self.with_pseudo(PseudoElementType::Before(None))) } else { None @@ -352,7 +352,7 @@ pub trait ThreadSafeLayoutElement: Clone + Copy + Sized + Debug + .unwrap() .borrow() .styles().pseudos - .contains_key(&PseudoElement::After) { + .has(&PseudoElement::After) { Some(self.with_pseudo(PseudoElementType::After(None))) } else { None @@ -397,31 +397,29 @@ pub trait ThreadSafeLayoutElement: Clone + Copy + Sized + Debug + // Precompute non-eagerly-cascaded pseudo-element styles if not // cached before. let style_pseudo = other.style_pseudo_element(); + let mut data = self.get_style_data().unwrap().borrow_mut(); match style_pseudo.cascade_type() { // Already computed during the cascade. - PseudoElementCascadeType::Eager => {}, + PseudoElementCascadeType::Eager => { + data.styles().pseudos.get(&style_pseudo) + .unwrap().values().clone() + }, PseudoElementCascadeType::Precomputed => { - if !self.get_style_data() - .unwrap() - .borrow() - .styles().pseudos.contains_key(&style_pseudo) { - let mut data = self.get_style_data().unwrap().borrow_mut(); + if !data.styles().cached_pseudos.contains_key(&style_pseudo) { let new_style = context.stylist.precomputed_values_for_pseudo( &context.guards, &style_pseudo, Some(data.styles().primary.values()), CascadeFlags::empty()); - data.styles_mut().pseudos + data.styles_mut().cached_pseudos .insert(style_pseudo.clone(), new_style); } + data.styles().cached_pseudos.get(&style_pseudo) + .unwrap().values().clone() } PseudoElementCascadeType::Lazy => { - if !self.get_style_data() - .unwrap() - .borrow() - .styles().pseudos.contains_key(&style_pseudo) { - let mut data = self.get_style_data().unwrap().borrow_mut(); + if !data.styles().cached_pseudos.contains_key(&style_pseudo) { let new_style = context.stylist .lazily_compute_pseudo_element_style( @@ -429,15 +427,13 @@ pub trait ThreadSafeLayoutElement: Clone + Copy + Sized + Debug + unsafe { &self.unsafe_get() }, &style_pseudo, data.styles().primary.values()); - data.styles_mut().pseudos + data.styles_mut().cached_pseudos .insert(style_pseudo.clone(), new_style.unwrap()); } + data.styles().cached_pseudos.get(&style_pseudo) + .unwrap().values().clone() } } - - self.get_style_data().unwrap().borrow() - .styles().pseudos.get(&style_pseudo) - .unwrap().values().clone() } } } |