Skip to content

Commit 821bf4a

Browse files
committed
LibWeb/CSS: Discard whitespace when parsing comma-separated lists
1 parent 9dc9e98 commit 821bf4a

File tree

3 files changed

+14
-8
lines changed

3 files changed

+14
-8
lines changed

Libraries/LibWeb/CSS/Parser/PropertyParsing.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@ Optional<Parser::PropertyAndValue> Parser::parse_css_value_for_properties(Readon
186186
return {};
187187
};
188188

189+
tokens.discard_whitespace();
189190
auto& peek_token = tokens.next_token();
190191

191192
auto parse_for_type = [&](ValueType const type) -> Optional<PropertyAndValue> {

Libraries/LibWeb/CSS/Parser/ValueParsing.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,9 @@ namespace Web::CSS::Parser {
8080

8181
RefPtr<StyleValue const> Parser::parse_comma_separated_value_list(TokenStream<ComponentValue>& tokens, ParseFunction parse_one_value)
8282
{
83+
tokens.discard_whitespace();
8384
auto first = parse_one_value(tokens);
85+
tokens.discard_whitespace();
8486
if (!first || !tokens.has_next_token())
8587
return first;
8688

@@ -91,8 +93,11 @@ RefPtr<StyleValue const> Parser::parse_comma_separated_value_list(TokenStream<Co
9193
if (!tokens.consume_a_token().is(Token::Type::Comma))
9294
return nullptr;
9395

96+
tokens.discard_whitespace();
97+
9498
if (auto maybe_value = parse_one_value(tokens)) {
9599
values.append(maybe_value.release_nonnull());
100+
tokens.discard_whitespace();
96101
continue;
97102
}
98103
return nullptr;

Tests/LibWeb/Text/expected/wpt-import/css/css-properties-values-api/register-property-syntax-parsing.txt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ Harness status: OK
22

33
Found 239 tests
44

5-
191 Pass
6-
48 Fail
5+
197 Pass
6+
42 Fail
77
Pass syntax:'*', initialValue:'a' is valid
88
Pass syntax:' * ', initialValue:'b' is valid
99
Pass syntax:'<length>', initialValue:'2px' is valid
@@ -30,7 +30,7 @@ Pass syntax:'<length>', initialValue:'calc(2px*4 + 10px)' is valid
3030
Pass syntax:'<length>', initialValue:'7.1e-4cm' is valid
3131
Pass syntax:'<length>', initialValue:'calc(7in - 12px)' is valid
3232
Pass syntax:'<length>+', initialValue:'2px 7px calc(8px)' is valid
33-
Fail syntax:'<length>#', initialValue:'2px, 7px, calc(8px)' is valid
33+
Pass syntax:'<length>#', initialValue:'2px, 7px, calc(8px)' is valid
3434
Pass syntax:'<percentage>', initialValue:'-9.3e3%' is valid
3535
Pass syntax:'<length-percentage>', initialValue:'-54%' is valid
3636
Pass syntax:'<length-percentage>', initialValue:'0' is valid
@@ -67,15 +67,15 @@ Pass syntax:'<string>', initialValue:'"bar baz"' is valid
6767
Pass syntax:'<string>', initialValue:'"bar 'baz'"' is valid
6868
Pass syntax:'<string>', initialValue:'"bar 'baz'' is valid
6969
Pass syntax:'<string>+', initialValue:''foo' 'bar'' is valid
70-
Fail syntax:'<string>#', initialValue:''foo', 'bar'' is valid
70+
Pass syntax:'<string>#', initialValue:''foo', 'bar'' is valid
7171
Pass syntax:'<string>+ | <string>#', initialValue:''foo' 'bar'' is valid
7272
Pass syntax:'<string>+ | <string>#', initialValue:' 'foo' 'bar'' is valid
7373
Pass syntax:'<string>+ | <string>#', initialValue:''foo' "bar"' is valid
7474
Pass syntax:'<string>+ | <string>#', initialValue:''foo' "bar' is valid
75-
Fail syntax:'<string># | <string>+', initialValue:''foo', 'bar'' is valid
76-
Fail syntax:'<string># | <string>+', initialValue:''foo', 'bar' ' is valid
77-
Fail syntax:'<string># | <string>+', initialValue:'"foo", 'bar'' is valid
78-
Fail syntax:'<string># | <string>+', initialValue:'"foo", 'bar' is valid
75+
Pass syntax:'<string># | <string>+', initialValue:''foo', 'bar'' is valid
76+
Pass syntax:'<string># | <string>+', initialValue:''foo', 'bar' ' is valid
77+
Pass syntax:'<string># | <string>+', initialValue:'"foo", 'bar'' is valid
78+
Pass syntax:'<string># | <string>+', initialValue:'"foo", 'bar' is valid
7979
Pass syntax:'<color>', initialValue:'rgb(12, 34, 56)' is valid
8080
Pass syntax:'<color>', initialValue:'lightgoldenrodyellow' is valid
8181
Pass syntax:'<image>', initialValue:'url(a)' is valid

0 commit comments

Comments
 (0)