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>,
|
||||
rule_node: &StrongRuleNode,
|
||||
guards: &StylesheetGuards,
|
||||
originating_element_style: Option<&ComputedValues>,
|
||||
parent_style: Option<&ComputedValues>,
|
||||
parent_style_ignoring_first_line: Option<&ComputedValues>,
|
||||
layout_parent_style: Option<&ComputedValues>,
|
||||
|
|
@ -74,6 +75,7 @@ where
|
|||
pseudo,
|
||||
rule_node,
|
||||
guards,
|
||||
originating_element_style,
|
||||
parent_style,
|
||||
parent_style_ignoring_first_line,
|
||||
layout_parent_style,
|
||||
|
|
@ -174,6 +176,7 @@ fn cascade_rules<E>(
|
|||
pseudo: Option<&PseudoElement>,
|
||||
rule_node: &StrongRuleNode,
|
||||
guards: &StylesheetGuards,
|
||||
originating_element_style: Option<&ComputedValues>,
|
||||
parent_style: Option<&ComputedValues>,
|
||||
parent_style_ignoring_first_line: Option<&ComputedValues>,
|
||||
layout_parent_style: Option<&ComputedValues>,
|
||||
|
|
@ -197,6 +200,7 @@ where
|
|||
rule_node,
|
||||
guards,
|
||||
DeclarationIterator::new(rule_node, guards, pseudo),
|
||||
originating_element_style,
|
||||
parent_style,
|
||||
parent_style_ignoring_first_line,
|
||||
layout_parent_style,
|
||||
|
|
@ -233,6 +237,7 @@ pub fn apply_declarations<'a, E, I>(
|
|||
rules: &StrongRuleNode,
|
||||
guards: &StylesheetGuards,
|
||||
iter: I,
|
||||
originating_element_style: Option<&ComputedValues>,
|
||||
parent_style: Option<&ComputedValues>,
|
||||
parent_style_ignoring_first_line: Option<&ComputedValues>,
|
||||
layout_parent_style: Option<&ComputedValues>,
|
||||
|
|
@ -247,6 +252,10 @@ where
|
|||
E: TElement,
|
||||
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_eq!(
|
||||
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 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(
|
||||
// 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 {
|
||||
cascade.compute_visited_style_if_needed(
|
||||
element,
|
||||
originating_element_style,
|
||||
parent_style,
|
||||
parent_style_ignoring_first_line,
|
||||
layout_parent_style,
|
||||
|
|
@ -726,6 +736,7 @@ impl<'a, 'b: 'a> Cascade<'a, 'b> {
|
|||
fn compute_visited_style_if_needed<E>(
|
||||
&mut self,
|
||||
element: Option<E>,
|
||||
originating_element_style: Option<&ComputedValues>,
|
||||
parent_style: Option<&ComputedValues>,
|
||||
parent_style_ignoring_first_line: Option<&ComputedValues>,
|
||||
layout_parent_style: Option<&ComputedValues>,
|
||||
|
|
@ -756,6 +767,7 @@ impl<'a, 'b: 'a> Cascade<'a, 'b> {
|
|||
self.context.builder.pseudo,
|
||||
visited_rules,
|
||||
guards,
|
||||
visited_parent!(originating_element_style),
|
||||
visited_parent!(parent_style),
|
||||
visited_parent!(parent_style_ignoring_first_line),
|
||||
visited_parent!(layout_parent_style),
|
||||
|
|
|
|||
|
|
@ -349,6 +349,7 @@ where
|
|||
pseudo,
|
||||
inputs,
|
||||
&self.context.shared.guards,
|
||||
pseudo.and(parent_style),
|
||||
parent_style,
|
||||
parent_style,
|
||||
layout_parent_style,
|
||||
|
|
|
|||
|
|
@ -894,8 +894,9 @@ impl Stylist {
|
|||
},
|
||||
pseudo,
|
||||
guards,
|
||||
/* originating_element_style */ None,
|
||||
parent,
|
||||
None,
|
||||
/* element */ None,
|
||||
)
|
||||
}
|
||||
|
||||
|
|
@ -988,6 +989,7 @@ impl Stylist {
|
|||
cascade_inputs,
|
||||
pseudo,
|
||||
guards,
|
||||
Some(originating_element_style),
|
||||
Some(parent_style),
|
||||
Some(element),
|
||||
))
|
||||
|
|
@ -1002,6 +1004,7 @@ impl Stylist {
|
|||
inputs: CascadeInputs,
|
||||
pseudo: &PseudoElement,
|
||||
guards: &StylesheetGuards,
|
||||
originating_element_style: Option<&ComputedValues>,
|
||||
parent_style: Option<&ComputedValues>,
|
||||
element: Option<E>,
|
||||
) -> Arc<ComputedValues>
|
||||
|
|
@ -1025,6 +1028,7 @@ impl Stylist {
|
|||
Some(pseudo),
|
||||
inputs,
|
||||
guards,
|
||||
originating_element_style,
|
||||
parent_style,
|
||||
parent_style,
|
||||
parent_style,
|
||||
|
|
@ -1051,6 +1055,7 @@ impl Stylist {
|
|||
pseudo: Option<&PseudoElement>,
|
||||
inputs: CascadeInputs,
|
||||
guards: &StylesheetGuards,
|
||||
originating_element_style: Option<&ComputedValues>,
|
||||
parent_style: Option<&ComputedValues>,
|
||||
parent_style_ignoring_first_line: Option<&ComputedValues>,
|
||||
layout_parent_style: Option<&ComputedValues>,
|
||||
|
|
@ -1086,6 +1091,7 @@ impl Stylist {
|
|||
pseudo,
|
||||
inputs.rules.as_ref().unwrap_or(self.rule_tree.root()),
|
||||
guards,
|
||||
originating_element_style,
|
||||
parent_style,
|
||||
parent_style_ignoring_first_line,
|
||||
layout_parent_style,
|
||||
|
|
@ -1504,6 +1510,7 @@ impl Stylist {
|
|||
),
|
||||
)
|
||||
}),
|
||||
/* originating_element_style */ None,
|
||||
Some(parent_style),
|
||||
Some(parent_style),
|
||||
Some(parent_style),
|
||||
|
|
|
|||
|
|
@ -4131,6 +4131,7 @@ fn get_pseudo_style(
|
|||
inputs,
|
||||
pseudo,
|
||||
&guards,
|
||||
Some(styles.primary()),
|
||||
Some(inherited_styles),
|
||||
Some(element),
|
||||
)
|
||||
|
|
@ -5942,6 +5943,10 @@ pub extern "C" fn Servo_ReparentStyle(
|
|||
pseudo.as_ref(),
|
||||
inputs,
|
||||
&StylesheetGuards::same(&guard),
|
||||
match element.is_some() && pseudo.is_some() {
|
||||
true => Some(parent_style),
|
||||
false => None,
|
||||
},
|
||||
Some(parent_style),
|
||||
Some(parent_style_ignoring_first_line),
|
||||
Some(layout_parent_style),
|
||||
|
|
|
|||
|
|
@ -4,6 +4,3 @@
|
|||
|
||||
[Originating element container for ::marker]
|
||||
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