From d10d01757d3a69f0f7ac1635a72981c52708f8aa Mon Sep 17 00:00:00 2001 From: Oriol Brufau Date: Fri, 7 Jun 2024 18:37:12 +0200 Subject: [PATCH] Don't shrink table columns when handling cells with greater spanning (#32458) For example: ```html
``` We should initially size the columns according to the cells in the first row since they have a span of 1. Then we handle the cell in the second row with a span of 2, this should be able to increase the size of the columns, but never decrease them. --- components/layout_2020/table/layout.rs | 4 ++-- .../meta/css/CSS2/floats-clear/margin-collapse-121.xht.ini | 2 -- .../meta/css/CSS2/floats-clear/margin-collapse-122.xht.ini | 2 -- .../meta/css/CSS2/floats-clear/margin-collapse-123.xht.ini | 2 -- .../meta/css/CSS2/floats-clear/margin-collapse-125.xht.ini | 2 -- .../meta/css/CSS2/floats-clear/margin-collapse-158.xht.ini | 2 -- .../meta/css/css-color/hsl-clamp-negative-saturation.html.ini | 2 -- .../css/css-color/hsla-clamp-negative-saturation.html.ini | 2 -- .../meta/css/css-color/t421-rgb-clip-outside-gamut-b.xht.ini | 2 -- .../css-color/t422-rgba-clip-outside-device-gamut-b.xht.ini | 2 -- tests/wpt/meta/css/css-tables/colspan-004.html.ini | 2 -- tests/wpt/meta/css/css-tables/column-track-merging.html.ini | 3 --- tests/wpt/meta/css/css-tables/dynamic-rowspan-change.html.ini | 3 --- .../height-distribution/computing-row-measure-1.html.ini | 3 --- .../css/css-tables/tentative/colspan-redistribution.html.ini | 3 --- .../tentative/paint/background-image-column.html.ini | 2 -- .../css-tables/tentative/paint/background-image-row.html.ini | 2 -- .../css/css-tables/visibility-collapse-rowcol-001.html.ini | 3 --- tests/wpt/mozilla/meta/css/table_colspan_simple_a.html.ini | 2 -- tests/wpt/mozilla/meta/css/table_colspan_spacing_a.html.ini | 2 -- 20 files changed, 2 insertions(+), 45 deletions(-) delete mode 100644 tests/wpt/meta/css/CSS2/floats-clear/margin-collapse-121.xht.ini delete mode 100644 tests/wpt/meta/css/CSS2/floats-clear/margin-collapse-122.xht.ini delete mode 100644 tests/wpt/meta/css/CSS2/floats-clear/margin-collapse-123.xht.ini delete mode 100644 tests/wpt/meta/css/CSS2/floats-clear/margin-collapse-125.xht.ini delete mode 100644 tests/wpt/meta/css/CSS2/floats-clear/margin-collapse-158.xht.ini delete mode 100644 tests/wpt/meta/css/css-color/hsl-clamp-negative-saturation.html.ini delete mode 100644 tests/wpt/meta/css/css-color/hsla-clamp-negative-saturation.html.ini delete mode 100644 tests/wpt/meta/css/css-color/t421-rgb-clip-outside-gamut-b.xht.ini delete mode 100644 tests/wpt/meta/css/css-color/t422-rgba-clip-outside-device-gamut-b.xht.ini delete mode 100644 tests/wpt/meta/css/css-tables/colspan-004.html.ini delete mode 100644 tests/wpt/meta/css/css-tables/dynamic-rowspan-change.html.ini delete mode 100644 tests/wpt/meta/css/css-tables/tentative/paint/background-image-column.html.ini delete mode 100644 tests/wpt/meta/css/css-tables/tentative/paint/background-image-row.html.ini delete mode 100644 tests/wpt/meta/css/css-tables/visibility-collapse-rowcol-001.html.ini delete mode 100644 tests/wpt/mozilla/meta/css/table_colspan_simple_a.html.ini delete mode 100644 tests/wpt/mozilla/meta/css/table_colspan_spacing_a.html.ini diff --git a/components/layout_2020/table/layout.rs b/components/layout_2020/table/layout.rs index f1f29473c50..7395eff0d45 100644 --- a/components/layout_2020/table/layout.rs +++ b/components/layout_2020/table/layout.rs @@ -433,8 +433,8 @@ impl<'a> TableLayout<'a> { for column_index in 0..self.table.size.width { let old_column_measure = &old_column_measures[column_index]; - let mut new_column_content_sizes = ContentSizes::zero(); - let mut new_column_intrinsic_percentage_width = Percentage(0.); + let mut new_column_content_sizes = old_column_measure.content_sizes; + let mut new_column_intrinsic_percentage_width = old_column_measure.percentage; for row_index in 0..self.table.size.height { let coords = TableSlotCoordinates::new(column_index, row_index); diff --git a/tests/wpt/meta/css/CSS2/floats-clear/margin-collapse-121.xht.ini b/tests/wpt/meta/css/CSS2/floats-clear/margin-collapse-121.xht.ini deleted file mode 100644 index f1e68a4be7e..00000000000 --- a/tests/wpt/meta/css/CSS2/floats-clear/margin-collapse-121.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[margin-collapse-121.xht] - expected: FAIL diff --git a/tests/wpt/meta/css/CSS2/floats-clear/margin-collapse-122.xht.ini b/tests/wpt/meta/css/CSS2/floats-clear/margin-collapse-122.xht.ini deleted file mode 100644 index 81ac29924de..00000000000 --- a/tests/wpt/meta/css/CSS2/floats-clear/margin-collapse-122.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[margin-collapse-122.xht] - expected: FAIL diff --git a/tests/wpt/meta/css/CSS2/floats-clear/margin-collapse-123.xht.ini b/tests/wpt/meta/css/CSS2/floats-clear/margin-collapse-123.xht.ini deleted file mode 100644 index 802a8c9816d..00000000000 --- a/tests/wpt/meta/css/CSS2/floats-clear/margin-collapse-123.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[margin-collapse-123.xht] - expected: FAIL diff --git a/tests/wpt/meta/css/CSS2/floats-clear/margin-collapse-125.xht.ini b/tests/wpt/meta/css/CSS2/floats-clear/margin-collapse-125.xht.ini deleted file mode 100644 index be291ef3dc6..00000000000 --- a/tests/wpt/meta/css/CSS2/floats-clear/margin-collapse-125.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[margin-collapse-125.xht] - expected: FAIL diff --git a/tests/wpt/meta/css/CSS2/floats-clear/margin-collapse-158.xht.ini b/tests/wpt/meta/css/CSS2/floats-clear/margin-collapse-158.xht.ini deleted file mode 100644 index 4f795b540fc..00000000000 --- a/tests/wpt/meta/css/CSS2/floats-clear/margin-collapse-158.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[margin-collapse-158.xht] - expected: FAIL diff --git a/tests/wpt/meta/css/css-color/hsl-clamp-negative-saturation.html.ini b/tests/wpt/meta/css/css-color/hsl-clamp-negative-saturation.html.ini deleted file mode 100644 index 345d39e2622..00000000000 --- a/tests/wpt/meta/css/css-color/hsl-clamp-negative-saturation.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[hsl-clamp-negative-saturation.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-color/hsla-clamp-negative-saturation.html.ini b/tests/wpt/meta/css/css-color/hsla-clamp-negative-saturation.html.ini deleted file mode 100644 index 679c4314098..00000000000 --- a/tests/wpt/meta/css/css-color/hsla-clamp-negative-saturation.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[hsla-clamp-negative-saturation.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-color/t421-rgb-clip-outside-gamut-b.xht.ini b/tests/wpt/meta/css/css-color/t421-rgb-clip-outside-gamut-b.xht.ini deleted file mode 100644 index 8bd244c9dfe..00000000000 --- a/tests/wpt/meta/css/css-color/t421-rgb-clip-outside-gamut-b.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[t421-rgb-clip-outside-gamut-b.xht] - expected: FAIL diff --git a/tests/wpt/meta/css/css-color/t422-rgba-clip-outside-device-gamut-b.xht.ini b/tests/wpt/meta/css/css-color/t422-rgba-clip-outside-device-gamut-b.xht.ini deleted file mode 100644 index 5e8e567b5a6..00000000000 --- a/tests/wpt/meta/css/css-color/t422-rgba-clip-outside-device-gamut-b.xht.ini +++ /dev/null @@ -1,2 +0,0 @@ -[t422-rgba-clip-outside-device-gamut-b.xht] - expected: FAIL diff --git a/tests/wpt/meta/css/css-tables/colspan-004.html.ini b/tests/wpt/meta/css/css-tables/colspan-004.html.ini deleted file mode 100644 index 9b93b232c3f..00000000000 --- a/tests/wpt/meta/css/css-tables/colspan-004.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[colspan-004.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-tables/column-track-merging.html.ini b/tests/wpt/meta/css/css-tables/column-track-merging.html.ini index 4a2931e19a4..1f8c50bf73b 100644 --- a/tests/wpt/meta/css/css-tables/column-track-merging.html.ini +++ b/tests/wpt/meta/css/css-tables/column-track-merging.html.ini @@ -22,6 +22,3 @@ [main table 3] expected: FAIL - - [main table 2] - expected: FAIL diff --git a/tests/wpt/meta/css/css-tables/dynamic-rowspan-change.html.ini b/tests/wpt/meta/css/css-tables/dynamic-rowspan-change.html.ini deleted file mode 100644 index 439d0a8604a..00000000000 --- a/tests/wpt/meta/css/css-tables/dynamic-rowspan-change.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[dynamic-rowspan-change.html] - [main table 2] - expected: FAIL diff --git a/tests/wpt/meta/css/css-tables/height-distribution/computing-row-measure-1.html.ini b/tests/wpt/meta/css/css-tables/height-distribution/computing-row-measure-1.html.ini index 026517a0c8f..4f761a9796a 100644 --- a/tests/wpt/meta/css/css-tables/height-distribution/computing-row-measure-1.html.ini +++ b/tests/wpt/meta/css/css-tables/height-distribution/computing-row-measure-1.html.ini @@ -4,6 +4,3 @@ [Checking intermediate min-content width for span 2 (1)] expected: FAIL - - [Checking intermediate min-content width for span 2 (2)] - expected: FAIL diff --git a/tests/wpt/meta/css/css-tables/tentative/colspan-redistribution.html.ini b/tests/wpt/meta/css/css-tables/tentative/colspan-redistribution.html.ini index 50034d30e1c..6cba24fc148 100644 --- a/tests/wpt/meta/css/css-tables/tentative/colspan-redistribution.html.ini +++ b/tests/wpt/meta/css/css-tables/tentative/colspan-redistribution.html.ini @@ -79,6 +79,3 @@ [table 8] expected: FAIL - - [table 7] - expected: FAIL diff --git a/tests/wpt/meta/css/css-tables/tentative/paint/background-image-column.html.ini b/tests/wpt/meta/css/css-tables/tentative/paint/background-image-column.html.ini deleted file mode 100644 index 59e7265e918..00000000000 --- a/tests/wpt/meta/css/css-tables/tentative/paint/background-image-column.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[background-image-column.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-tables/tentative/paint/background-image-row.html.ini b/tests/wpt/meta/css/css-tables/tentative/paint/background-image-row.html.ini deleted file mode 100644 index 47bb7faa8b4..00000000000 --- a/tests/wpt/meta/css/css-tables/tentative/paint/background-image-row.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[background-image-row.html] - expected: FAIL diff --git a/tests/wpt/meta/css/css-tables/visibility-collapse-rowcol-001.html.ini b/tests/wpt/meta/css/css-tables/visibility-collapse-rowcol-001.html.ini deleted file mode 100644 index f0813ddb0fe..00000000000 --- a/tests/wpt/meta/css/css-tables/visibility-collapse-rowcol-001.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[visibility-collapse-rowcol-001.html] - [spanning col visibility:collapse changes table width] - expected: FAIL diff --git a/tests/wpt/mozilla/meta/css/table_colspan_simple_a.html.ini b/tests/wpt/mozilla/meta/css/table_colspan_simple_a.html.ini deleted file mode 100644 index d4fe578d3dd..00000000000 --- a/tests/wpt/mozilla/meta/css/table_colspan_simple_a.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[table_colspan_simple_a.html] - expected: FAIL diff --git a/tests/wpt/mozilla/meta/css/table_colspan_spacing_a.html.ini b/tests/wpt/mozilla/meta/css/table_colspan_spacing_a.html.ini deleted file mode 100644 index 10e5c0c0e42..00000000000 --- a/tests/wpt/mozilla/meta/css/table_colspan_spacing_a.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[table_colspan_spacing_a.html] - expected: FAIL