aboutsummaryrefslogtreecommitdiffstats
path: root/components/script_layout_interface/wrapper_traits.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script_layout_interface/wrapper_traits.rs')
-rw-r--r--components/script_layout_interface/wrapper_traits.rs34
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()
}
}
}