Change lazily_compute_pseudo_element_style to take an &Arc for the parent style.

This makes it easier to do later changes that want to pass an Arc here.

Part 1 of the fix for Gecko bug 1364242: https://bugzilla.mozilla.org/show_bug.cgi?id=1364242
This commit is contained in:
Boris Zbarsky 2017-06-29 16:20:47 -07:00
parent 8f37de05b2
commit 351c7f7859
2 changed files with 5 additions and 5 deletions

View file

@ -679,7 +679,7 @@ impl Stylist {
element: &E, element: &E,
pseudo: &PseudoElement, pseudo: &PseudoElement,
rule_inclusion: RuleInclusion, rule_inclusion: RuleInclusion,
parent_style: &ComputedValues, parent_style: &Arc<ComputedValues>,
font_metrics: &FontMetricsProvider) font_metrics: &FontMetricsProvider)
-> Option<Arc<ComputedValues>> -> Option<Arc<ComputedValues>>
where E: TElement, where E: TElement,

View file

@ -1479,7 +1479,7 @@ pub extern "C" fn Servo_ResolvePseudoStyle(element: RawGeckoElementBorrowed,
&pseudo, &pseudo,
RuleInclusion::All, RuleInclusion::All,
&data.styles, &data.styles,
ComputedValues::arc_from_borrowed(&inherited_style).map(|v| v.as_ref()), ComputedValues::arc_from_borrowed(&inherited_style),
&*doc_data, &*doc_data,
is_probe is_probe
); );
@ -1533,7 +1533,7 @@ fn get_pseudo_style(
pseudo: &PseudoElement, pseudo: &PseudoElement,
rule_inclusion: RuleInclusion, rule_inclusion: RuleInclusion,
styles: &ElementStyles, styles: &ElementStyles,
inherited_styles: Option<&ComputedValues>, inherited_styles: Option<&Arc<ComputedValues>>,
doc_data: &PerDocumentStyleDataImpl, doc_data: &PerDocumentStyleDataImpl,
is_probe: bool, is_probe: bool,
) -> Option<Arc<ComputedValues>> { ) -> Option<Arc<ComputedValues>> {
@ -1563,7 +1563,7 @@ fn get_pseudo_style(
}, },
_ => { _ => {
debug_assert!(inherited_styles.is_none() || debug_assert!(inherited_styles.is_none() ||
ptr::eq(inherited_styles.unwrap(), ptr::eq(&**inherited_styles.unwrap(),
&**styles.primary())); &**styles.primary()));
styles.pseudos.get(&pseudo).cloned() styles.pseudos.get(&pseudo).cloned()
}, },
@ -1572,7 +1572,7 @@ fn get_pseudo_style(
PseudoElementCascadeType::Precomputed => unreachable!("No anonymous boxes"), PseudoElementCascadeType::Precomputed => unreachable!("No anonymous boxes"),
PseudoElementCascadeType::Lazy => { PseudoElementCascadeType::Lazy => {
debug_assert!(inherited_styles.is_none() || debug_assert!(inherited_styles.is_none() ||
ptr::eq(inherited_styles.unwrap(), ptr::eq(&**inherited_styles.unwrap(),
&**styles.primary())); &**styles.primary()));
let base = if pseudo.inherits_from_default_values() { let base = if pseudo.inherits_from_default_values() {
doc_data.default_computed_values() doc_data.default_computed_values()