Commit 71793db7 authored by Alison Maher's avatar Alison Maher Committed by Commit Bot

[LayoutNG] Fieldset border block-end

This change takes the amount of the border block-start/end that
had been consumed previously when calculating the block size
taken up by the legend. This ensures that adjusted_padding_box_size
does not overcompensate for the border and is consistent across
multiple fragments.

Making this adjustment fixes an associated crash that was introduced to
virtual/layout_ng_block_frag/external/wpt/css/css-break/fieldset-001.html

Bug: 875235
Change-Id: Idcd1c6eba435eac41ca90acd2e4a0cabe4015a3b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2140720Reviewed-by: default avatarMorten Stenshorne <mstensho@chromium.org>
Commit-Queue: Alison Maher <almaher@microsoft.com>
Cr-Commit-Position: refs/heads/master@{#758289}
parent a0053f11
...@@ -184,8 +184,20 @@ NGBreakStatus NGFieldsetLayoutAlgorithm::LayoutChildren() { ...@@ -184,8 +184,20 @@ NGBreakStatus NGFieldsetLayoutAlgorithm::LayoutChildren() {
LayoutUnit content_consumed_block_size = LayoutUnit content_consumed_block_size =
content_break_token ? content_break_token->ConsumedBlockSize() content_break_token ? content_break_token->ConsumedBlockSize()
: LayoutUnit(); : LayoutUnit();
// Calculate the amount of the border block-end that was consumed in
// previous fragments.
DCHECK_NE(border_box_size_.block_size, kIndefiniteSize);
LayoutUnit consumed_border_block_end =
std::max(consumed_block_size_ -
(border_box_size_.block_size - borders_.block_end),
LayoutUnit());
LayoutUnit legend_block_size = LayoutUnit legend_block_size =
consumed_block_size_ - content_consumed_block_size; consumed_block_size_ - content_consumed_block_size -
consumed_border_block_start_ - consumed_border_block_end;
DCHECK_GE(legend_block_size, LayoutUnit());
adjusted_padding_box_size.block_size = adjusted_padding_box_size.block_size =
std::max(padding_.BlockSum(), std::max(padding_.BlockSum(),
adjusted_padding_box_size.block_size - legend_block_size); adjusted_padding_box_size.block_size - legend_block_size);
......
...@@ -1815,7 +1815,7 @@ TEST_F(NGFieldsetLayoutAlgorithmTest, SmallLegendLargeBorderFragmentation) { ...@@ -1815,7 +1815,7 @@ TEST_F(NGFieldsetLayoutAlgorithmTest, SmallLegendLargeBorderFragmentation) {
expectation = R"DUMP(.:: LayoutNG Physical Fragment Tree ::. expectation = R"DUMP(.:: LayoutNG Physical Fragment Tree ::.
offset:unplaced size:220x40 offset:unplaced size:220x40
offset:60,0 size:10x10 offset:60,0 size:10x10
offset:60,20 size:100x0 offset:60,20 size:100x10
)DUMP"; )DUMP";
EXPECT_EQ(expectation, dump); EXPECT_EQ(expectation, dump);
...@@ -1881,7 +1881,7 @@ TEST_F(NGFieldsetLayoutAlgorithmTest, SmallerLegendLargeBorderFragmentation) { ...@@ -1881,7 +1881,7 @@ TEST_F(NGFieldsetLayoutAlgorithmTest, SmallerLegendLargeBorderFragmentation) {
dump = DumpFragmentTree(fragment.get()); dump = DumpFragmentTree(fragment.get());
expectation = R"DUMP(.:: LayoutNG Physical Fragment Tree ::. expectation = R"DUMP(.:: LayoutNG Physical Fragment Tree ::.
offset:unplaced size:220x40 offset:unplaced size:220x40
offset:60,20 size:100x0 offset:60,20 size:100x10
)DUMP"; )DUMP";
EXPECT_EQ(expectation, dump); EXPECT_EQ(expectation, dump);
...@@ -1947,7 +1947,7 @@ TEST_F(NGFieldsetLayoutAlgorithmTest, SmallerLegendLargeBorderWithBreak) { ...@@ -1947,7 +1947,7 @@ TEST_F(NGFieldsetLayoutAlgorithmTest, SmallerLegendLargeBorderWithBreak) {
dump = DumpFragmentTree(fragment.get()); dump = DumpFragmentTree(fragment.get());
expectation = R"DUMP(.:: LayoutNG Physical Fragment Tree ::. expectation = R"DUMP(.:: LayoutNG Physical Fragment Tree ::.
offset:unplaced size:220x40 offset:unplaced size:220x40
offset:60,20 size:100x0 offset:60,20 size:100x10
)DUMP"; )DUMP";
EXPECT_EQ(expectation, dump); EXPECT_EQ(expectation, dump);
......
...@@ -690,7 +690,6 @@ crbug.com/881057 [ Mac ] virtual/layout_ng_fieldset/external/wpt/css/vendor-impo ...@@ -690,7 +690,6 @@ crbug.com/881057 [ Mac ] virtual/layout_ng_fieldset/external/wpt/css/vendor-impo
crbug.com/881057 [ Mac ] virtual/layout_ng_fieldset/external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-clip-004.html [ Failure ] crbug.com/881057 [ Mac ] virtual/layout_ng_fieldset/external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-clip-004.html [ Failure ]
crbug.com/881057 [ Mac ] virtual/layout_ng_fieldset/external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-clip-005.html [ Failure ] crbug.com/881057 [ Mac ] virtual/layout_ng_fieldset/external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-clip-005.html [ Failure ]
crbug.com/880802 virtual/layout_ng_fieldset/external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ruby-stacking-and-clipping-001.html [ Failure ] crbug.com/880802 virtual/layout_ng_fieldset/external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-paint-ignored-cases-ruby-stacking-and-clipping-001.html [ Failure ]
crbug.com/965491 virtual/layout_ng_fieldset/external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-fieldset-002.html [ Failure ]
# [css-align] # [css-align]
...@@ -939,7 +938,7 @@ crbug.com/591099 virtual/layout_ng_block_frag/fast/multicol/flowthread-with-floa ...@@ -939,7 +938,7 @@ crbug.com/591099 virtual/layout_ng_block_frag/fast/multicol/flowthread-with-floa
### With LayoutNGBlockFragmentation enabled: ### With LayoutNGBlockFragmentation enabled:
crbug.com/829028 virtual/layout_ng_block_frag/external/wpt/css/css-break/block-end-aligned-abspos-with-overflow.html [ Failure ] crbug.com/829028 virtual/layout_ng_block_frag/external/wpt/css/css-break/block-end-aligned-abspos-with-overflow.html [ Failure ]
crbug.com/1028595 virtual/layout_ng_block_frag/external/wpt/css/css-break/fieldset-001.html [ Crash Failure ] crbug.com/1028595 virtual/layout_ng_block_frag/external/wpt/css/css-break/fieldset-001.html [ Failure ]
crbug.com/829028 virtual/layout_ng_block_frag/external/wpt/css/css-break/floats-and-text-narrow-and-short-dynamic.html [ Failure ] crbug.com/829028 virtual/layout_ng_block_frag/external/wpt/css/css-break/floats-and-text-narrow-and-short-dynamic.html [ Failure ]
crbug.com/829028 virtual/layout_ng_block_frag/external/wpt/css/css-break/line-after-unbreakable-float-after-padding.html [ Failure ] crbug.com/829028 virtual/layout_ng_block_frag/external/wpt/css/css-break/line-after-unbreakable-float-after-padding.html [ Failure ]
crbug.com/967329 virtual/layout_ng_block_frag/external/wpt/css/css-multicol/columnfill-auto-max-height-002.html [ Failure ] crbug.com/967329 virtual/layout_ng_block_frag/external/wpt/css/css-multicol/columnfill-auto-max-height-002.html [ Failure ]
...@@ -1575,7 +1574,6 @@ crbug.com/762679 virtual/layout_ng_flex_box/external/wpt/css/css-flexbox/gap-010 ...@@ -1575,7 +1574,6 @@ crbug.com/762679 virtual/layout_ng_flex_box/external/wpt/css/css-flexbox/gap-010
crbug.com/875235 virtual/layout_ng_fieldset/external/wpt/css/css-contain/contain-size-breaks-001.html [ Crash Failure ] crbug.com/875235 virtual/layout_ng_fieldset/external/wpt/css/css-contain/contain-size-breaks-001.html [ Crash Failure ]
crbug.com/875235 virtual/layout_ng_fieldset/external/wpt/css/css-contain/contain-size-monolithic-001.html [ Crash Failure ] crbug.com/875235 virtual/layout_ng_fieldset/external/wpt/css/css-contain/contain-size-monolithic-001.html [ Crash Failure ]
crbug.com/875235 virtual/layout_ng_fieldset/external/wpt/css/css-contain/contain-size-multicol-001.html [ Failure ] crbug.com/875235 virtual/layout_ng_fieldset/external/wpt/css/css-contain/contain-size-multicol-001.html [ Failure ]
crbug.com/875235 virtual/layout_ng_fieldset/external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-multicol-001.html [ Failure ]
crbug.com/875235 virtual/layout_ng_fieldset/external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-multicol-002.html [ Crash Failure ] crbug.com/875235 virtual/layout_ng_fieldset/external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-multicol-002.html [ Crash Failure ]
crbug.com/875235 virtual/layout_ng_fieldset/external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-multicol-003.html [ Failure ] crbug.com/875235 virtual/layout_ng_fieldset/external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/contain/contain-size-multicol-003.html [ Failure ]
crbug.com/875235 virtual/layout_ng_fieldset/external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-multicol.html [ Crash Failure ] crbug.com/875235 virtual/layout_ng_fieldset/external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-multicol.html [ Crash Failure ]
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment