From cdbf4f49e1130ba5d2402ab7c429dd52d4a75e90 Mon Sep 17 00:00:00 2001 From: Callum Law Date: Fri, 17 Oct 2025 17:25:04 +1300 Subject: [PATCH] LibWeb: Support '' in '` ` = [ | ]{1,2}` but we were previously parsing instead as `{1,2}`. --- Libraries/LibWeb/CSS/Parser/GradientParsing.cpp | 13 ++++++++++++- .../css/css-images/gradient/color-stops-parsing.txt | 7 +++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/Libraries/LibWeb/CSS/Parser/GradientParsing.cpp b/Libraries/LibWeb/CSS/Parser/GradientParsing.cpp index 9ac88f68ef8..dd53ebdfc15 100644 --- a/Libraries/LibWeb/CSS/Parser/GradientParsing.cpp +++ b/Libraries/LibWeb/CSS/Parser/GradientParsing.cpp @@ -126,7 +126,18 @@ Optional> Parser::parse_angular_color_stop_l // , [ ? , ]# return parse_color_stop_list( tokens, - [&](auto& it) { return parse_angle_percentage(it); }); + [&](TokenStream& it) -> Optional { + if (tokens.next_token().is(Token::Type::Number)) { + auto transaction = tokens.begin_transaction(); + auto numeric_value = tokens.consume_a_token().token().number_value(); + if (numeric_value == 0) { + transaction.commit(); + return Angle::make_degrees(0); + } + } + + return parse_angle_percentage(it); + }); } Optional Parser::parse_interpolation_method(TokenStream& tokens) diff --git a/Tests/LibWeb/Text/expected/wpt-import/css/css-images/gradient/color-stops-parsing.txt b/Tests/LibWeb/Text/expected/wpt-import/css/css-images/gradient/color-stops-parsing.txt index 07dccbff62e..672139f8483 100644 --- a/Tests/LibWeb/Text/expected/wpt-import/css/css-images/gradient/color-stops-parsing.txt +++ b/Tests/LibWeb/Text/expected/wpt-import/css/css-images/gradient/color-stops-parsing.txt @@ -2,8 +2,7 @@ Harness status: OK Found 162 tests -160 Pass -2 Fail +162 Pass Pass linear-gradient() [ unparsable ] Pass linear-gradient(black, 25%) [ unparsable ] Pass linear-gradient(black, invalid) [ unparsable ] @@ -125,7 +124,7 @@ Pass conic-gradient(0%, black, white) [ unparsable ] Pass conic-gradient(black) [ parsable ] Pass conic-gradient(black 0%) [ parsable ] Pass conic-gradient(black, white) [ parsable ] -Fail conic-gradient(black 0, white) [ parsable ] +Pass conic-gradient(black 0, white) [ parsable ] Pass conic-gradient(black 0%, white) [ parsable ] Pass conic-gradient(black 0%, white 100%) [ parsable ] Pass conic-gradient(black, green, white) [ parsable ] @@ -152,7 +151,7 @@ Pass repeating-conic-gradient(0%, black, white) [ unparsable ] Pass repeating-conic-gradient(black) [ parsable ] Pass repeating-conic-gradient(black 0%) [ parsable ] Pass repeating-conic-gradient(black, white) [ parsable ] -Fail repeating-conic-gradient(black 0, white) [ parsable ] +Pass repeating-conic-gradient(black 0, white) [ parsable ] Pass repeating-conic-gradient(black 0%, white) [ parsable ] Pass repeating-conic-gradient(black 0%, white 100%) [ parsable ] Pass repeating-conic-gradient(black, green, white) [ parsable ]