layout: Require specific layout info in BoxFragment::new() (#37917)

It was very easy to forget about using `.with_specific_layout_info()` to
set the specific layout info, so it's better to make it a parameter.

In fact this already happened in the past: #36993 fixed the missing
specific layout info for flex items.

This patch fixes it for floats and atomic inlines. It also propagates it
in other cases where not doing so was not a big deal because the
specific layout info was None, but that was a fragile assumption.

Testing: Various WPT improvements
Fixes: #37898

Signed-off-by: Oriol Brufau <obrufau@igalia.com>
This commit is contained in:
Oriol Brufau 2025-07-07 17:25:15 +02:00 committed by GitHub
parent 87f2871661
commit fe9d49fccc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
16 changed files with 126 additions and 687 deletions

View file

@ -1,162 +1,12 @@
[grid-inline-support-flexible-lengths-001.html]
['emptyGrid' with: grid-template-columns: 1fr; and grid-template-rows: 1fr;]
expected: FAIL
['grid' with: grid-template-columns: 1fr; and grid-template-rows: 1fr;]
expected: FAIL
['emptyGrid' with: grid-template-columns: 2fr; and grid-template-rows: 2fr;]
expected: FAIL
['grid' with: grid-template-columns: 2fr; and grid-template-rows: 2fr;]
expected: FAIL
['emptyGrid' with: grid-template-columns: 10fr; and grid-template-rows: 10fr;]
expected: FAIL
['grid' with: grid-template-columns: 10fr; and grid-template-rows: 10fr;]
expected: FAIL
['emptyGrid' with: grid-template-columns: 0.5fr; and grid-template-rows: 0.5fr;]
expected: FAIL
['grid' with: grid-template-columns: 0.5fr; and grid-template-rows: 0.5fr;]
expected: FAIL
['emptyGrid' with: grid-template-columns: .5fr; and grid-template-rows: .5fr;]
expected: FAIL
['grid' with: grid-template-columns: .5fr; and grid-template-rows: .5fr;]
expected: FAIL
['emptyGrid' with: grid-template-columns: minmax(100px, 1fr); and grid-template-rows: minmax(100px, 1fr);]
expected: FAIL
['grid' with: grid-template-columns: minmax(100px, 1fr); and grid-template-rows: minmax(100px, 1fr);]
expected: FAIL
['emptyGrid' with: grid-template-columns: minmax(1fr, 1fr); and grid-template-rows: minmax(1fr, 1fr);]
expected: FAIL
['grid' with: grid-template-columns: minmax(1fr, 1fr); and grid-template-rows: minmax(1fr, 1fr);]
expected: FAIL
['emptyGrid' with: grid-template-columns: 1fr 1fr; and grid-template-rows: 1fr 1fr;]
expected: FAIL
['grid' with: grid-template-columns: 1fr 1fr; and grid-template-rows: 1fr 1fr;]
expected: FAIL
['emptyGrid' with: grid-template-columns: 0.25fr 0.75fr; and grid-template-rows: 0.25fr 0.75fr;]
expected: FAIL
['grid' with: grid-template-columns: 0.25fr 0.75fr; and grid-template-rows: 0.25fr 0.75fr;]
expected: FAIL
['emptyGrid' with: grid-template-columns: 1fr 2fr 1fr; and grid-template-rows: 1fr 2fr 1fr;]
expected: FAIL
['grid' with: grid-template-columns: 1fr 2fr 1fr; and grid-template-rows: 1fr 2fr 1fr;]
expected: FAIL
['emptyGrid' with: grid-template-columns: auto 1fr 4fr 3fr 2fr; and grid-template-rows: auto 1fr 4fr 3fr 2fr;]
expected: FAIL
['grid' with: grid-template-columns: auto 1fr 4fr 3fr 2fr; and grid-template-rows: auto 1fr 4fr 3fr 2fr;]
expected: FAIL
['emptyGrid' with: grid-template-columns: 1fr 4fr 100px 3fr 2fr; and grid-template-rows: 1fr 4fr 100px 3fr 2fr;]
expected: FAIL
['grid' with: grid-template-columns: 1fr 4fr 100px 3fr 2fr; and grid-template-rows: 1fr 4fr 100px 3fr 2fr;]
expected: FAIL
['emptyGrid' with: grid-template-columns: auto 1fr; and grid-template-rows: auto 1fr;]
expected: FAIL
['grid' with: grid-template-columns: auto 1fr; and grid-template-rows: auto 1fr;]
expected: FAIL
['emptyGrid' with: grid-template-columns: max-content 1fr; and grid-template-rows: max-content 1fr;]
expected: FAIL
['grid' with: grid-template-columns: max-content 1fr; and grid-template-rows: max-content 1fr;]
expected: FAIL
['emptyGrid' with: grid-template-columns: min-content 1fr; and grid-template-rows: min-content 1fr;]
expected: FAIL
['grid' with: grid-template-columns: min-content 1fr; and grid-template-rows: min-content 1fr;]
expected: FAIL
['emptyGrid' with: grid-template-columns: 1fr auto; and grid-template-rows: 1fr auto;]
expected: FAIL
['grid' with: grid-template-columns: 1fr auto; and grid-template-rows: 1fr auto;]
expected: FAIL
['emptyGrid' with: grid-template-columns: 300px 1fr; and grid-template-rows: 200px 1fr;]
expected: FAIL
['grid' with: grid-template-columns: 300px 1fr; and grid-template-rows: 200px 1fr;]
expected: FAIL
['emptyGrid' with: grid-template-columns: 800px 1fr; and grid-template-rows: 600px 1fr;]
expected: FAIL
['grid' with: grid-template-columns: 800px 1fr; and grid-template-rows: 600px 1fr;]
expected: FAIL
['emptyGrid' with: grid-template-columns: 1000px 1fr; and grid-template-rows: 700px 1fr;]
expected: FAIL
['grid' with: grid-template-columns: 1000px 1fr; and grid-template-rows: 700px 1fr;]
expected: FAIL
['emptyGrid' with: grid-template-columns: calc(50px + 50%) 1fr; and grid-template-rows: calc(50px + 50%) 1fr;]
expected: FAIL
['grid' with: grid-template-columns: calc(50px + 50%) 1fr; and grid-template-rows: calc(50px + 50%) 1fr;]
expected: FAIL
['emptyGrid' with: grid-template-columns: minmax(100px, 300px) 1fr; and grid-template-rows: minmax(100px, 200px) 1fr;]
expected: FAIL
['grid' with: grid-template-columns: minmax(100px, 300px) 1fr; and grid-template-rows: minmax(100px, 200px) 1fr;]
expected: FAIL
['emptyGrid' with: grid-template-columns: repeat(4, 1fr); and grid-template-rows: repeat(4, 1fr);]
expected: FAIL
['grid' with: grid-template-columns: repeat(4, 1fr); and grid-template-rows: repeat(4, 1fr);]
expected: FAIL
['emptyGrid' with: grid-template-columns: [a\] repeat(4, [b\] 1fr [c\]) [d\]; and grid-template-rows: [z\] repeat(4, [y\] 1fr) [x\];]
expected: FAIL
['grid' with: grid-template-columns: [a\] repeat(4, [b\] 1fr [c\]) [d\]; and grid-template-rows: [z\] repeat(4, [y\] 1fr) [x\];]
expected: FAIL
['grid' with: grid-template-columns: fr; and grid-template-rows: fr;]
expected: FAIL
['grid' with: grid-template-columns: 1 fr; and grid-template-rows: 1 fr;]
expected: FAIL
['grid' with: grid-template-columns: 1free-space; and grid-template-rows: 1free-space;]
expected: FAIL
['grid' with: grid-template-columns: -2fr; and grid-template-rows: -2fr;]
expected: FAIL
['grid' with: grid-template-columns: 0,5fr; and grid-template-rows: 0,5fr;]
expected: FAIL
['grid' with: grid-template-columns: calc(1fr + 100px); and grid-template-rows: calc(1fr + 100px);]
expected: FAIL
['grid' with: grid-template-columns: (1fr) auto; and grid-template-rows: (1fr) auto;]
expected: FAIL
['grid' with: grid-template-columns: minmax(1fr, 1000px); and grid-template-rows: minmax(1fr, 700px);]
expected: FAIL