LibWeb: Don't assume grid size is always Function or Token

This stops `grid-template-columns: minmax({},{})` from crashing.
This commit is contained in:
Sam Atkins 2023-11-21 12:02:59 +00:00 committed by Andreas Kling
parent 1a17b8a304
commit 6cd6186399
Notes: sideshowbarker 2024-07-16 22:34:39 +09:00
3 changed files with 17 additions and 5 deletions

View File

@ -0,0 +1,12 @@
Viewport <#document> at (0,0) content-size 800x600 children: not-inline
BlockContainer <html> at (0,0) content-size 800x600 [BFC] children: not-inline
BlockContainer <body> at (8,8) content-size 784x0 children: not-inline
BlockContainer <div> at (8,8) content-size 784x0 children: not-inline
BlockContainer <(anonymous)> at (8,16) content-size 784x0 children: inline
TextNode <#text>
ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer<HTML>) [0,0 800x600]
PaintableWithLines (BlockContainer<BODY>) [8,8 784x0] overflow: [8,16 784x0]
PaintableWithLines (BlockContainer<DIV>) [8,8 784x0]
PaintableWithLines (BlockContainer(anonymous)) [8,16 784x0]

View File

@ -0,0 +1 @@
<div style="grid-template-columns: minmax({},{})"></div>

View File

@ -5030,14 +5030,13 @@ Optional<CSS::GridSize> Parser::parse_grid_size(ComponentValue const& component_
return {};
}
auto token = component_value.token();
if (token.is(Token::Type::Ident) && token.ident().equals_ignoring_ascii_case("auto"sv))
if (component_value.is_ident("auto"sv))
return GridSize::make_auto();
if (token.is(Token::Type::Ident) && token.ident().equals_ignoring_ascii_case("max-content"sv))
if (component_value.is_ident("max-content"sv))
return GridSize(GridSize::Type::MaxContent);
if (token.is(Token::Type::Ident) && token.ident().equals_ignoring_ascii_case("min-content"sv))
if (component_value.is_ident("min-content"sv))
return GridSize(GridSize::Type::MinContent);
auto dimension = parse_dimension(token);
auto dimension = parse_dimension(component_value);
if (!dimension.has_value())
return {};
if (dimension->is_length())