Fix table with rows but no column (#31862)

* Fix table with rows but no column

We weren't generating any fragment for the rows, which meant that JS
APIs like clientWidth would be 0, and also outlines weren't painted.

This aligns Servo with Blink and WebKit. Gecko is broken, it distributes
twice the table height among the rows.

* Feedback

* Avoid conflict with #31874
This commit is contained in:
Oriol Brufau 2024-03-26 13:36:43 +01:00 committed by GitHub
parent 68b0be6dc7
commit d16f259e1d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 126 additions and 43 deletions

View file

@ -0,0 +1,36 @@
[table-rows-with-zero-columns.html]
[tr 1]
expected: FAIL
[tr 2]
expected: FAIL
[tr 3]
expected: FAIL
[tr 4]
expected: FAIL
[tr 5]
expected: FAIL
[tr 6]
expected: FAIL
[tr 7]
expected: FAIL
[tr 8]
expected: FAIL
[tr 9]
expected: FAIL
[tr 10]
expected: FAIL
[tr 11]
expected: FAIL
[tr 12]
expected: FAIL

View file

@ -545267,6 +545267,13 @@
{}
]
],
"table-rows-with-zero-columns.html": [
"da9e0098a7a1e6657887539448c5e1b2c1f14b5b",
[
null,
{}
]
],
"table-width-redistribution-fixed-padding.html": [
"097ddacfc3139105f0d80689e0c03ac722a00aeb",
[

View file

@ -7,6 +7,3 @@
[.container 13]
expected: FAIL
[.container 3]
expected: FAIL

View file

@ -2,39 +2,9 @@
[table 5]
expected: FAIL
[table 6]
expected: FAIL
[table 7]
expected: FAIL
[table 8]
expected: FAIL
[table 9]
expected: FAIL
[table 10]
expected: FAIL
[table 11]
expected: FAIL
[table 12]
expected: FAIL
[table 13]
expected: FAIL
[table 14]
expected: FAIL
[table 15]
expected: FAIL
[table 16]
expected: FAIL
[table 17]
expected: FAIL
@ -53,9 +23,6 @@
[table 22]
expected: FAIL
[table 23]
expected: FAIL
[table 25]
expected: FAIL

View file

@ -0,0 +1,62 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Test: size of table rows when the table has no columns</title>
<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com">
<link rel="help" href="https://drafts.csswg.org/css-tables-3/">
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/10132">
<meta name="assert" content="If a table has rows but no columns, the rows are as wide as the inner width of the table.">
<style>
#tests table {
box-sizing: border-box;
width: 60px;
height: 60px;
}
</style>
<div id="log"></div>
<main id="tests">
<table cellspacing="0">
<tr data-expected-width="60" data-expected-height="60"></tr>
</table>
<table cellspacing="0">
<tr data-expected-width="60" data-expected-height="30"></tr>
<tr data-expected-width="60" data-expected-height="30"></tr>
</table>
<table cellspacing="10">
<tr data-expected-width="60" data-expected-height="40"></tr>
</table>
<table cellspacing="10">
<tr data-expected-width="60" data-expected-height="15"></tr>
<tr data-expected-width="60" data-expected-height="15"></tr>
</table>
<table cellspacing="0" border="5">
<tr data-expected-width="50" data-expected-height="50"></tr>
</table>
<table cellspacing="0" border="5">
<tr data-expected-width="50" data-expected-height="25"></tr>
<tr data-expected-width="50" data-expected-height="25"></tr>
</table>
<table cellspacing="10" border="5">
<tr data-expected-width="50" data-expected-height="30"></tr>
</table>
<table cellspacing="10" border="5">
<tr data-expected-width="50" data-expected-height="10"></tr>
<tr data-expected-width="50" data-expected-height="10"></tr>
</table>
</main>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/check-layout-th.js"></script>
<script>
checkLayout("tr");
</script>