Forráskód Böngészése

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

This stops `grid-template-columns: minmax({},{})` from crashing.
Sam Atkins 1 éve
szülő
commit
6cd6186399

+ 12 - 0
Tests/LibWeb/Layout/expected/grid/minmax-non-token-contents-crash.txt

@@ -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]

+ 1 - 0
Tests/LibWeb/Layout/input/grid/minmax-non-token-contents-crash.html

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

+ 4 - 5
Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp

@@ -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())