forked from mirrors/gecko-dev
Bug 1807645 - Fix container units on ::backdrop. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D165542
This commit is contained in:
parent
b2f82ca462
commit
4c86c51a4f
7 changed files with 27 additions and 11 deletions
|
|
@ -56,6 +56,7 @@ pub fn cascade<E>(
|
||||||
pseudo: Option<&PseudoElement>,
|
pseudo: Option<&PseudoElement>,
|
||||||
rule_node: &StrongRuleNode,
|
rule_node: &StrongRuleNode,
|
||||||
guards: &StylesheetGuards,
|
guards: &StylesheetGuards,
|
||||||
|
originating_element_style: Option<&ComputedValues>,
|
||||||
parent_style: Option<&ComputedValues>,
|
parent_style: Option<&ComputedValues>,
|
||||||
parent_style_ignoring_first_line: Option<&ComputedValues>,
|
parent_style_ignoring_first_line: Option<&ComputedValues>,
|
||||||
layout_parent_style: Option<&ComputedValues>,
|
layout_parent_style: Option<&ComputedValues>,
|
||||||
|
|
@ -74,6 +75,7 @@ where
|
||||||
pseudo,
|
pseudo,
|
||||||
rule_node,
|
rule_node,
|
||||||
guards,
|
guards,
|
||||||
|
originating_element_style,
|
||||||
parent_style,
|
parent_style,
|
||||||
parent_style_ignoring_first_line,
|
parent_style_ignoring_first_line,
|
||||||
layout_parent_style,
|
layout_parent_style,
|
||||||
|
|
@ -174,6 +176,7 @@ fn cascade_rules<E>(
|
||||||
pseudo: Option<&PseudoElement>,
|
pseudo: Option<&PseudoElement>,
|
||||||
rule_node: &StrongRuleNode,
|
rule_node: &StrongRuleNode,
|
||||||
guards: &StylesheetGuards,
|
guards: &StylesheetGuards,
|
||||||
|
originating_element_style: Option<&ComputedValues>,
|
||||||
parent_style: Option<&ComputedValues>,
|
parent_style: Option<&ComputedValues>,
|
||||||
parent_style_ignoring_first_line: Option<&ComputedValues>,
|
parent_style_ignoring_first_line: Option<&ComputedValues>,
|
||||||
layout_parent_style: Option<&ComputedValues>,
|
layout_parent_style: Option<&ComputedValues>,
|
||||||
|
|
@ -197,6 +200,7 @@ where
|
||||||
rule_node,
|
rule_node,
|
||||||
guards,
|
guards,
|
||||||
DeclarationIterator::new(rule_node, guards, pseudo),
|
DeclarationIterator::new(rule_node, guards, pseudo),
|
||||||
|
originating_element_style,
|
||||||
parent_style,
|
parent_style,
|
||||||
parent_style_ignoring_first_line,
|
parent_style_ignoring_first_line,
|
||||||
layout_parent_style,
|
layout_parent_style,
|
||||||
|
|
@ -233,6 +237,7 @@ pub fn apply_declarations<'a, E, I>(
|
||||||
rules: &StrongRuleNode,
|
rules: &StrongRuleNode,
|
||||||
guards: &StylesheetGuards,
|
guards: &StylesheetGuards,
|
||||||
iter: I,
|
iter: I,
|
||||||
|
originating_element_style: Option<&ComputedValues>,
|
||||||
parent_style: Option<&ComputedValues>,
|
parent_style: Option<&ComputedValues>,
|
||||||
parent_style_ignoring_first_line: Option<&ComputedValues>,
|
parent_style_ignoring_first_line: Option<&ComputedValues>,
|
||||||
layout_parent_style: Option<&ComputedValues>,
|
layout_parent_style: Option<&ComputedValues>,
|
||||||
|
|
@ -247,6 +252,10 @@ where
|
||||||
E: TElement,
|
E: TElement,
|
||||||
I: Iterator<Item = (&'a PropertyDeclaration, CascadePriority)>,
|
I: Iterator<Item = (&'a PropertyDeclaration, CascadePriority)>,
|
||||||
{
|
{
|
||||||
|
debug_assert_eq!(
|
||||||
|
originating_element_style.is_some(),
|
||||||
|
element.is_some() && pseudo.is_some()
|
||||||
|
);
|
||||||
debug_assert!(layout_parent_style.is_none() || parent_style.is_some());
|
debug_assert!(layout_parent_style.is_none() || parent_style.is_some());
|
||||||
debug_assert_eq!(
|
debug_assert_eq!(
|
||||||
parent_style.is_some(),
|
parent_style.is_some(),
|
||||||
|
|
@ -283,7 +292,7 @@ where
|
||||||
|
|
||||||
let is_root_element = pseudo.is_none() && element.map_or(false, |e| e.is_root());
|
let is_root_element = pseudo.is_none() && element.map_or(false, |e| e.is_root());
|
||||||
let container_size_query =
|
let container_size_query =
|
||||||
ContainerSizeQuery::for_option_element(element, pseudo.and(parent_style));
|
ContainerSizeQuery::for_option_element(element, originating_element_style);
|
||||||
|
|
||||||
let mut context = computed::Context::new(
|
let mut context = computed::Context::new(
|
||||||
// We'd really like to own the rules here to avoid refcount traffic, but
|
// We'd really like to own the rules here to avoid refcount traffic, but
|
||||||
|
|
@ -340,6 +349,7 @@ where
|
||||||
if let Some(visited_rules) = visited_rules {
|
if let Some(visited_rules) = visited_rules {
|
||||||
cascade.compute_visited_style_if_needed(
|
cascade.compute_visited_style_if_needed(
|
||||||
element,
|
element,
|
||||||
|
originating_element_style,
|
||||||
parent_style,
|
parent_style,
|
||||||
parent_style_ignoring_first_line,
|
parent_style_ignoring_first_line,
|
||||||
layout_parent_style,
|
layout_parent_style,
|
||||||
|
|
@ -726,6 +736,7 @@ impl<'a, 'b: 'a> Cascade<'a, 'b> {
|
||||||
fn compute_visited_style_if_needed<E>(
|
fn compute_visited_style_if_needed<E>(
|
||||||
&mut self,
|
&mut self,
|
||||||
element: Option<E>,
|
element: Option<E>,
|
||||||
|
originating_element_style: Option<&ComputedValues>,
|
||||||
parent_style: Option<&ComputedValues>,
|
parent_style: Option<&ComputedValues>,
|
||||||
parent_style_ignoring_first_line: Option<&ComputedValues>,
|
parent_style_ignoring_first_line: Option<&ComputedValues>,
|
||||||
layout_parent_style: Option<&ComputedValues>,
|
layout_parent_style: Option<&ComputedValues>,
|
||||||
|
|
@ -756,6 +767,7 @@ impl<'a, 'b: 'a> Cascade<'a, 'b> {
|
||||||
self.context.builder.pseudo,
|
self.context.builder.pseudo,
|
||||||
visited_rules,
|
visited_rules,
|
||||||
guards,
|
guards,
|
||||||
|
visited_parent!(originating_element_style),
|
||||||
visited_parent!(parent_style),
|
visited_parent!(parent_style),
|
||||||
visited_parent!(parent_style_ignoring_first_line),
|
visited_parent!(parent_style_ignoring_first_line),
|
||||||
visited_parent!(layout_parent_style),
|
visited_parent!(layout_parent_style),
|
||||||
|
|
|
||||||
|
|
@ -349,6 +349,7 @@ where
|
||||||
pseudo,
|
pseudo,
|
||||||
inputs,
|
inputs,
|
||||||
&self.context.shared.guards,
|
&self.context.shared.guards,
|
||||||
|
pseudo.and(parent_style),
|
||||||
parent_style,
|
parent_style,
|
||||||
parent_style,
|
parent_style,
|
||||||
layout_parent_style,
|
layout_parent_style,
|
||||||
|
|
|
||||||
|
|
@ -894,8 +894,9 @@ impl Stylist {
|
||||||
},
|
},
|
||||||
pseudo,
|
pseudo,
|
||||||
guards,
|
guards,
|
||||||
|
/* originating_element_style */ None,
|
||||||
parent,
|
parent,
|
||||||
None,
|
/* element */ None,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -988,6 +989,7 @@ impl Stylist {
|
||||||
cascade_inputs,
|
cascade_inputs,
|
||||||
pseudo,
|
pseudo,
|
||||||
guards,
|
guards,
|
||||||
|
Some(originating_element_style),
|
||||||
Some(parent_style),
|
Some(parent_style),
|
||||||
Some(element),
|
Some(element),
|
||||||
))
|
))
|
||||||
|
|
@ -1002,6 +1004,7 @@ impl Stylist {
|
||||||
inputs: CascadeInputs,
|
inputs: CascadeInputs,
|
||||||
pseudo: &PseudoElement,
|
pseudo: &PseudoElement,
|
||||||
guards: &StylesheetGuards,
|
guards: &StylesheetGuards,
|
||||||
|
originating_element_style: Option<&ComputedValues>,
|
||||||
parent_style: Option<&ComputedValues>,
|
parent_style: Option<&ComputedValues>,
|
||||||
element: Option<E>,
|
element: Option<E>,
|
||||||
) -> Arc<ComputedValues>
|
) -> Arc<ComputedValues>
|
||||||
|
|
@ -1025,6 +1028,7 @@ impl Stylist {
|
||||||
Some(pseudo),
|
Some(pseudo),
|
||||||
inputs,
|
inputs,
|
||||||
guards,
|
guards,
|
||||||
|
originating_element_style,
|
||||||
parent_style,
|
parent_style,
|
||||||
parent_style,
|
parent_style,
|
||||||
parent_style,
|
parent_style,
|
||||||
|
|
@ -1051,6 +1055,7 @@ impl Stylist {
|
||||||
pseudo: Option<&PseudoElement>,
|
pseudo: Option<&PseudoElement>,
|
||||||
inputs: CascadeInputs,
|
inputs: CascadeInputs,
|
||||||
guards: &StylesheetGuards,
|
guards: &StylesheetGuards,
|
||||||
|
originating_element_style: Option<&ComputedValues>,
|
||||||
parent_style: Option<&ComputedValues>,
|
parent_style: Option<&ComputedValues>,
|
||||||
parent_style_ignoring_first_line: Option<&ComputedValues>,
|
parent_style_ignoring_first_line: Option<&ComputedValues>,
|
||||||
layout_parent_style: Option<&ComputedValues>,
|
layout_parent_style: Option<&ComputedValues>,
|
||||||
|
|
@ -1086,6 +1091,7 @@ impl Stylist {
|
||||||
pseudo,
|
pseudo,
|
||||||
inputs.rules.as_ref().unwrap_or(self.rule_tree.root()),
|
inputs.rules.as_ref().unwrap_or(self.rule_tree.root()),
|
||||||
guards,
|
guards,
|
||||||
|
originating_element_style,
|
||||||
parent_style,
|
parent_style,
|
||||||
parent_style_ignoring_first_line,
|
parent_style_ignoring_first_line,
|
||||||
layout_parent_style,
|
layout_parent_style,
|
||||||
|
|
@ -1504,6 +1510,7 @@ impl Stylist {
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
}),
|
}),
|
||||||
|
/* originating_element_style */ None,
|
||||||
Some(parent_style),
|
Some(parent_style),
|
||||||
Some(parent_style),
|
Some(parent_style),
|
||||||
Some(parent_style),
|
Some(parent_style),
|
||||||
|
|
|
||||||
|
|
@ -4131,6 +4131,7 @@ fn get_pseudo_style(
|
||||||
inputs,
|
inputs,
|
||||||
pseudo,
|
pseudo,
|
||||||
&guards,
|
&guards,
|
||||||
|
Some(styles.primary()),
|
||||||
Some(inherited_styles),
|
Some(inherited_styles),
|
||||||
Some(element),
|
Some(element),
|
||||||
)
|
)
|
||||||
|
|
@ -5942,6 +5943,10 @@ pub extern "C" fn Servo_ReparentStyle(
|
||||||
pseudo.as_ref(),
|
pseudo.as_ref(),
|
||||||
inputs,
|
inputs,
|
||||||
&StylesheetGuards::same(&guard),
|
&StylesheetGuards::same(&guard),
|
||||||
|
match element.is_some() && pseudo.is_some() {
|
||||||
|
true => Some(parent_style),
|
||||||
|
false => None,
|
||||||
|
},
|
||||||
Some(parent_style),
|
Some(parent_style),
|
||||||
Some(parent_style_ignoring_first_line),
|
Some(parent_style_ignoring_first_line),
|
||||||
Some(layout_parent_style),
|
Some(layout_parent_style),
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,3 @@
|
||||||
|
|
||||||
[Originating element container for ::marker]
|
[Originating element container for ::marker]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Originating element container for ::backdrop]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
[pseudo-elements-007.html]
|
|
||||||
[font-size for ::backdrop depending on container]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
[pseudo-elements-008.html]
|
|
||||||
[Originating element container for ::backdrop]
|
|
||||||
expected: FAIL
|
|
||||||
Loading…
Reference in a new issue