Shrink ContainingBlockPaddingAndBorder (#34666)

It only needs to store the block sizes, not the inline ones which have
already been resolved.

Signed-off-by: Oriol Brufau <obrufau@igalia.com>
This commit is contained in:
Oriol Brufau 2024-12-17 19:37:11 +01:00 committed by GitHub
parent 324e929390
commit 026d371717
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -796,9 +796,9 @@ fn layout_in_flow_non_replaced_block_level_same_formatting_context(
let ContainingBlockPaddingAndBorder { let ContainingBlockPaddingAndBorder {
containing_block: containing_block_for_children, containing_block: containing_block_for_children,
pbm, pbm,
box_size, preferred_block_size,
min_box_size, min_block_size,
max_box_size, max_block_size,
depends_on_block_constraints, depends_on_block_constraints,
available_block_size, available_block_size,
} = solve_containing_block_padding_and_border_for_in_flow_box( } = solve_containing_block_padding_and_border_for_in_flow_box(
@ -942,16 +942,12 @@ fn layout_in_flow_non_replaced_block_level_same_formatting_context(
let available_block_size = available_block_size.unwrap_or(content_block_size); let available_block_size = available_block_size.unwrap_or(content_block_size);
let block_content_sizes = LazyCell::new(|| content_block_size.into()); let block_content_sizes = LazyCell::new(|| content_block_size.into());
let preferred_block_size = let preferred_block_size =
box_size preferred_block_size.resolve(Size::FitContent, available_block_size, &block_content_sizes);
.block let min_block_size = min_block_size
.resolve(Size::FitContent, available_block_size, &block_content_sizes);
let min_block_size = min_box_size
.block
.resolve_non_initial(available_block_size, &block_content_sizes) .resolve_non_initial(available_block_size, &block_content_sizes)
.unwrap_or_default(); .unwrap_or_default();
let max_block_size = max_box_size let max_block_size =
.block max_block_size.resolve_non_initial(available_block_size, &block_content_sizes);
.resolve_non_initial(available_block_size, &block_content_sizes);
let block_size = preferred_block_size.clamp_between_extremums(min_block_size, max_block_size); let block_size = preferred_block_size.clamp_between_extremums(min_block_size, max_block_size);
if let Some(ref mut sequential_layout_state) = sequential_layout_state { if let Some(ref mut sequential_layout_state) = sequential_layout_state {
@ -1046,9 +1042,9 @@ impl IndependentNonReplacedContents {
let ContainingBlockPaddingAndBorder { let ContainingBlockPaddingAndBorder {
containing_block: containing_block_for_children, containing_block: containing_block_for_children,
pbm, pbm,
box_size, preferred_block_size,
min_box_size, min_block_size,
max_box_size, max_block_size,
depends_on_block_constraints, depends_on_block_constraints,
available_block_size, available_block_size,
} = solve_containing_block_padding_and_border_for_in_flow_box( } = solve_containing_block_padding_and_border_for_in_flow_box(
@ -1070,18 +1066,16 @@ impl IndependentNonReplacedContents {
let available_block_size = let available_block_size =
available_block_size.unwrap_or(layout.content_block_size); available_block_size.unwrap_or(layout.content_block_size);
let block_content_sizes = LazyCell::new(|| layout.content_block_size.into()); let block_content_sizes = LazyCell::new(|| layout.content_block_size.into());
let preferred_block_size = box_size.block.resolve( let preferred_block_size = preferred_block_size.resolve(
Size::FitContent, Size::FitContent,
available_block_size, available_block_size,
&block_content_sizes, &block_content_sizes,
); );
let min_block_size = min_box_size let min_block_size = min_block_size
.block
.resolve_non_initial(available_block_size, &block_content_sizes) .resolve_non_initial(available_block_size, &block_content_sizes)
.unwrap_or_default(); .unwrap_or_default();
let max_block_size = max_box_size let max_block_size =
.block max_block_size.resolve_non_initial(available_block_size, &block_content_sizes);
.resolve_non_initial(available_block_size, &block_content_sizes);
let block_size = let block_size =
preferred_block_size.clamp_between_extremums(min_block_size, max_block_size); preferred_block_size.clamp_between_extremums(min_block_size, max_block_size);
(block_size, containing_block_for_children.size.inline) (block_size, containing_block_for_children.size.inline)
@ -1597,9 +1591,9 @@ impl ReplacedContents {
struct ContainingBlockPaddingAndBorder<'a> { struct ContainingBlockPaddingAndBorder<'a> {
containing_block: ContainingBlock<'a>, containing_block: ContainingBlock<'a>,
pbm: PaddingBorderMargin, pbm: PaddingBorderMargin,
box_size: LogicalVec2<Size<Au>>, preferred_block_size: Size<Au>,
min_box_size: LogicalVec2<Size<Au>>, min_block_size: Size<Au>,
max_box_size: LogicalVec2<Size<Au>>, max_block_size: Size<Au>,
depends_on_block_constraints: bool, depends_on_block_constraints: bool,
available_block_size: Option<Au>, available_block_size: Option<Au>,
} }
@ -1643,9 +1637,9 @@ fn solve_containing_block_padding_and_border_for_in_flow_box<'a>(
return ContainingBlockPaddingAndBorder { return ContainingBlockPaddingAndBorder {
containing_block: containing_block_for_children, containing_block: containing_block_for_children,
pbm: PaddingBorderMargin::zero(), pbm: PaddingBorderMargin::zero(),
box_size: LogicalVec2::default(), preferred_block_size: Size::default(),
min_box_size: LogicalVec2::default(), min_block_size: Size::default(),
max_box_size: LogicalVec2::default(), max_block_size: Size::default(),
depends_on_block_constraints: false, depends_on_block_constraints: false,
// The available block size may actually be definite, but it should be irrelevant // The available block size may actually be definite, but it should be irrelevant
// since the sizing properties are set to their initial value. // since the sizing properties are set to their initial value.
@ -1730,9 +1724,9 @@ fn solve_containing_block_padding_and_border_for_in_flow_box<'a>(
ContainingBlockPaddingAndBorder { ContainingBlockPaddingAndBorder {
containing_block: containing_block_for_children, containing_block: containing_block_for_children,
pbm, pbm,
box_size: content_box_size, preferred_block_size: content_box_size.block,
min_box_size: content_min_box_size, min_block_size: content_min_box_size.block,
max_box_size: content_max_box_size, max_block_size: content_max_box_size.block,
depends_on_block_constraints, depends_on_block_constraints,
available_block_size, available_block_size,
} }