Implement :visited handling for lazy pseudo-elements in stylo.

Part 2 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:22:13 -07:00
parent 351c7f7859
commit 52d1b59515
5 changed files with 134 additions and 47 deletions

View file

@ -10,7 +10,7 @@ use selectors::Element;
use std::env;
use std::fmt::Write;
use std::ptr;
use style::context::{QuirksMode, SharedStyleContext, StyleContext};
use style::context::{CascadeInputs, QuirksMode, SharedStyleContext, StyleContext};
use style::context::ThreadLocalStyleContext;
use style::data::{ElementData, ElementStyles, RestyleData};
use style::dom::{AnimationOnlyDirtyDescendants, DirtyDescendants};
@ -1550,13 +1550,13 @@ fn get_pseudo_style(
inherited_styles.unwrap_or(styles.primary());
let guards = StylesheetGuards::same(guard);
let metrics = get_metrics_provider_for_product();
let rule_node = match styles.pseudos.get(&pseudo) {
Some(styles) => styles.rules.as_ref(),
None => None,
let inputs = match styles.pseudos.get(&pseudo) {
Some(styles) => CascadeInputs::new_from_style(styles),
None => return None,
};
doc_data.stylist
.compute_pseudo_element_style_with_rulenode(
rule_node,
.compute_pseudo_element_style_with_inputs(
&inputs,
&guards,
inherited_styles,
&metrics)
@ -1588,6 +1588,7 @@ fn get_pseudo_style(
&pseudo,
rule_inclusion,
base,
is_probe,
&metrics)
},
};