servo/tests/wpt/meta/css/css-grid/subgrid
Nico Burns fd20a5df42
layout(grid): implement named grid lines and areas (#38306)
### Changes made

This implements named grid lines (line names in `grid-template-*`),
named grid areas (`grid-template-areas`), and the ability to target
those using `grid-{row,column}-{start,end}`. It also includes a bunch of
miscelaneous fixes for `repeat(auto-fill | auto-fit, ...)` syntax as
that interacts with the specification of line names.

The actual layout implementation is in Taffy. The bulk of this PR is
updating Servo to translate (CSS Grid-related) Stylo types into Taffy
types using a new iterator-based API which uses iterators and lazy
translation for efficiency (which is more important now that we're
dealing with string data, even though they're `Atom`s).

### Testing

This functionality has lots of WPT tests. It fixes some seemingly random
CSS Grid tests that use named lines/areas even though that's not what
they're testing.

### Screenshots

wikipedia.org

<img width="1624" height="1056" alt="Screenshot 2025-07-27 at 20 03 16"
src="https://github.com/user-attachments/assets/2c50b96f-ae36-4405-ac48-b771bfdcb515"
/>

bbc.co.uk:

<img width="1624" height="1056" alt="Screenshot 2025-07-27 at 20 32 57"
src="https://github.com/user-attachments/assets/ba84e211-65d2-4411-95fb-7b9b91bea31c"
/>

theguardian.com:

<img width="1624" height="1056" alt="Screenshot 2025-07-27 at 20 33 29"
src="https://github.com/user-attachments/assets/e85daaa6-5fb0-45d4-b9ec-b22b38b087ec"
/>

---------

Signed-off-by: Nico Burns <nico@nicoburns.com>
2025-08-07 14:41:19 +00:00
..
crashtests Layout: Implement CSS Grid using taffy (#32619) 2024-11-21 20:21:01 +00:00
abs-pos-002.html.ini
align-self-baseline-with-subgrid-mbp.html.ini Layout: Implement CSS Grid using taffy (#32619) 2024-11-21 20:21:01 +00:00
alignment-in-subgridded-axes-001.html.ini
auto-track-sizing-001.html.ini Layout: Implement CSS Grid using taffy (#32619) 2024-11-21 20:21:01 +00:00
auto-track-sizing-004.html.ini
baseline-001.html.ini
contribution-size-flex-tracks-001.html.ini
grid-gap-001.html.ini
grid-gap-002.html.ini
grid-gap-003.html.ini
grid-gap-004.html.ini Layout: Implement CSS Grid using taffy (#32619) 2024-11-21 20:21:01 +00:00
grid-gap-005.html.ini Layout: Implement CSS Grid using taffy (#32619) 2024-11-21 20:21:01 +00:00
grid-gap-006.html.ini Layout: Implement CSS Grid using taffy (#32619) 2024-11-21 20:21:01 +00:00
grid-gap-007.html.ini
grid-gap-008.html.ini
grid-gap-009.html.ini
grid-gap-010.html.ini
grid-gap-011.html.ini
grid-gap-012.html.ini
grid-gap-larger-001.html.ini Layout: Implement CSS Grid using taffy (#32619) 2024-11-21 20:21:01 +00:00
grid-gap-larger-002.html.ini Layout: Implement CSS Grid using taffy (#32619) 2024-11-21 20:21:01 +00:00
grid-gap-normal-001.html.ini Layout: Implement CSS Grid using taffy (#32619) 2024-11-21 20:21:01 +00:00
grid-gap-smaller-001.html.ini
grid-template-computed-nogrid.html.ini
grid-template-valid.html.ini
independent-formatting-context.html.ini
item-percentage-height-001.html.ini
line-names-001.html.ini layout(grid): implement named grid lines and areas (#38306) 2025-08-07 14:41:19 +00:00
line-names-004.html.ini layout(grid): implement named grid lines and areas (#38306) 2025-08-07 14:41:19 +00:00
line-names-005.html.ini layout(grid): implement named grid lines and areas (#38306) 2025-08-07 14:41:19 +00:00
line-names-006.html.ini Layout: Implement CSS Grid using taffy (#32619) 2024-11-21 20:21:01 +00:00
line-names-009.html.ini layout(grid): implement named grid lines and areas (#38306) 2025-08-07 14:41:19 +00:00
line-names-010.html.ini Layout: Implement CSS Grid using taffy (#32619) 2024-11-21 20:21:01 +00:00
line-names-011.html.ini Layout: Implement CSS Grid using taffy (#32619) 2024-11-21 20:21:01 +00:00
line-names-012.html.ini Layout: Implement CSS Grid using taffy (#32619) 2024-11-21 20:21:01 +00:00
orthogonal-writing-mode-001.html.ini Layout: Implement CSS Grid using taffy (#32619) 2024-11-21 20:21:01 +00:00
orthogonal-writing-mode-002.html.ini Layout: Implement CSS Grid using taffy (#32619) 2024-11-21 20:21:01 +00:00
orthogonal-writing-mode-003.html.ini Layout: Implement CSS Grid using taffy (#32619) 2024-11-21 20:21:01 +00:00
orthogonal-writing-mode-004.html.ini Layout: Implement CSS Grid using taffy (#32619) 2024-11-21 20:21:01 +00:00
overflow-hidden-does-not-prohibit-subgrid.html.ini
parent-repeat-auto-fit-001.html.ini layout(grid): implement named grid lines and areas (#38306) 2025-08-07 14:41:19 +00:00
parent-repeat-auto-fit-002.html.ini layout(grid): implement named grid lines and areas (#38306) 2025-08-07 14:41:19 +00:00
placement-implicit-001.html.ini Layout: Implement CSS Grid using taffy (#32619) 2024-11-21 20:21:01 +00:00
placement-invalidation-001.html.ini
repeat-auto-fill-001.html.ini
repeat-auto-fill-002.html.ini Layout: Implement CSS Grid using taffy (#32619) 2024-11-21 20:21:01 +00:00
repeat-auto-fill-003.html.ini Layout: Implement CSS Grid using taffy (#32619) 2024-11-21 20:21:01 +00:00
repeat-auto-fill-004.html.ini Layout: Implement CSS Grid using taffy (#32619) 2024-11-21 20:21:01 +00:00
repeat-auto-fill-005.html.ini Fix: display: inline-grid considered an atomic inline (#36298) 2025-04-03 19:48:19 +00:00
repeat-auto-fill-006.html.ini
repeat-auto-fill-008.html.ini
standalone-axis-size-001.html.ini
standalone-axis-size-002.html.ini
standalone-axis-size-005.html.ini
standalone-axis-size-007.html.ini
subgrid-baseline-001.html.ini
subgrid-baseline-002.html.ini
subgrid-baseline-003.html.ini Layout: Implement CSS Grid using taffy (#32619) 2024-11-21 20:21:01 +00:00
subgrid-baseline-004.html.ini Layout: Implement CSS Grid using taffy (#32619) 2024-11-21 20:21:01 +00:00
subgrid-baseline-005.html.ini Layout: Implement CSS Grid using taffy (#32619) 2024-11-21 20:21:01 +00:00
subgrid-baseline-006.html.ini
subgrid-baseline-007.html.ini Layout: Implement CSS Grid using taffy (#32619) 2024-11-21 20:21:01 +00:00
subgrid-baseline-008.html.ini
subgrid-baseline-009.html.ini
subgrid-baseline-010.html.ini
subgrid-baseline-011.html.ini Layout: Implement CSS Grid using taffy (#32619) 2024-11-21 20:21:01 +00:00
subgrid-item-block-size-001.html.ini
subgrid-no-items-on-edges-002.html.ini
subgrid-stretch.html.ini
writing-directions-001.html.ini
writing-directions-002.html.ini Layout: Implement CSS Grid using taffy (#32619) 2024-11-21 20:21:01 +00:00
writing-directions-003.html.ini