layout: Take percentage columns into account when sizing table grid min and max (#35167)

The specification doesn't say how to deal with percentages when
determining the minimum and maximum size of a table grid, so follow the
approach that Chromium uses.

Essentially, figure out the "missing" percentage from the non-percentage
columns and then use that to work backwards to fine the size of the
percentage ones.

This change is larger than one might expect, because this percentage
approach shouldn't happen for tables that are descendants of a flex,
grid or table container (except when there is an interceding absolute).
We have to pass this information down when building the box tree. This
will also make it easier to improve propagated text decorations in the
future.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
This commit is contained in:
Martin Robinson 2025-01-27 16:04:37 +01:00 committed by GitHub
parent d5fcc5a5d5
commit 6b04bc6263
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
26 changed files with 228 additions and 226 deletions

View file

@ -14,9 +14,6 @@
[main table 8]
expected: FAIL
[main table 12]
expected: FAIL
[main table 9]
expected: FAIL

View file

@ -1,2 +0,0 @@
[percent-width-cell-dynamic.html]
expected: FAIL

View file

@ -1,3 +0,0 @@
[percent-width-ignored-002.tentative.html]
[#stf 1]
expected: FAIL

View file

@ -1,7 +1,4 @@
[table-model-fixup.html]
[2.1. An anonymous table-row box must be generated around each sequence of consecutive children of a table-root box which are not proper table child boxes. (1/2)]
expected: FAIL
[2.2. An anonymous table-row box must be generated around each sequence of consecutive children of a table-row-grouping box which are not table-row boxes. (1/3)]
expected: FAIL

View file

@ -4,6 +4,3 @@
[table 4]
expected: FAIL
[table 6]
expected: FAIL

View file

@ -1,42 +1,9 @@
[colspan-redistribution.html]
[table 1]
expected: FAIL
[table 2]
expected: FAIL
[table 3]
expected: FAIL
[table 6]
expected: FAIL
[table 14]
expected: FAIL
[table 15]
expected: FAIL
[table 16]
expected: FAIL
[table 17]
expected: FAIL
[table 20]
expected: FAIL
[table 22]
expected: FAIL
[table 26]
expected: FAIL
[table 27]
expected: FAIL
[table 28]
expected: FAIL
[table 8]
expected: FAIL

View file

@ -1,28 +1,4 @@
[column-widths.html]
[table 14]
expected: FAIL
[table 19]
expected: FAIL
[table 21]
expected: FAIL
[table 22]
expected: FAIL
[table 23]
expected: FAIL
[table 25]
expected: FAIL
[table 26]
expected: FAIL
[table 30]
expected: FAIL
[table 32]
expected: FAIL

View file

@ -1,9 +1,3 @@
[table-minmax.html]
[table 2]
expected: FAIL
[table 1]
expected: FAIL
[table 13]
expected: FAIL

View file

@ -1,12 +1,6 @@
[table-width-redistribution.html]
[table 5]
expected: FAIL
[table 6]
expected: FAIL
[table 20]
expected: FAIL
[table 22]
[table 4]
expected: FAIL

View file

@ -1,15 +1,3 @@
[td-box-sizing-001.html]
[table 1]
expected: FAIL
[table 2]
expected: FAIL
[table 9]
expected: FAIL
[table 10]
expected: FAIL
[table 11]
expected: FAIL