LibWeb: Align CSS Grid properties parsing with the specification

Reimplements `grid`, `grid-template`, `grid-template-rows`, and
`grid-template-columns` in a way that uses a separate function for each
grammar rule defined in the specification. This change results in many
additional passing tests from the already imported WPT suite. Most of
the remaining test failures are related to incorrect serialization of
grid properties.
This commit is contained in:
Aliaksandr Kalenik 2025-06-16 22:27:17 +02:00 committed by Alexander Kalenik
commit af602b2555
Notes: github-actions[bot] 2025-06-21 20:08:32 +00:00
23 changed files with 894 additions and 574 deletions

View file

@ -2292,7 +2292,7 @@ void GridFormattingContext::init_grid_lines(GridDimension dimension)
auto const& lines_definition = dimension == GridDimension::Column ? grid_computed_values.grid_template_columns() : grid_computed_values.grid_template_rows();
auto& lines = dimension == GridDimension::Column ? m_column_lines : m_row_lines;
Vector<String> line_names;
Vector<FlyString> line_names;
Function<void(CSS::GridTrackSizeList const&)> expand_lines_definition = [&](CSS::GridTrackSizeList const& lines_definition) {
for (auto const& item : lines_definition.list()) {
if (item.has<CSS::GridLineNames>()) {