Skip to content

Commit 39e0d06

Browse files
committed
LibWeb/CSS: Discard whitespace at the start of simple parsing functions
1 parent 003d9e4 commit 39e0d06

File tree

2 files changed

+32
-4
lines changed

2 files changed

+32
-4
lines changed

Libraries/LibWeb/CSS/Parser/ValueParsing.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -787,6 +787,8 @@ RefPtr<UnicodeRangeStyleValue const> Parser::parse_unicode_range_value(TokenStre
787787

788788
RefPtr<StyleValue const> Parser::parse_integer_value(TokenStream<ComponentValue>& tokens)
789789
{
790+
tokens.discard_whitespace();
791+
790792
auto const& peek_token = tokens.next_token();
791793
if (peek_token.is(Token::Type::Number) && peek_token.token().number().is_integer()) {
792794
tokens.discard_a_token(); // integer
@@ -806,6 +808,8 @@ RefPtr<StyleValue const> Parser::parse_integer_value(TokenStream<ComponentValue>
806808

807809
RefPtr<StyleValue const> Parser::parse_number_value(TokenStream<ComponentValue>& tokens)
808810
{
811+
tokens.discard_whitespace();
812+
809813
auto const& peek_token = tokens.next_token();
810814
if (peek_token.is(Token::Type::Number)) {
811815
tokens.discard_a_token(); // number
@@ -851,6 +855,8 @@ RefPtr<StyleValue const> Parser::parse_number_percentage_none_value(TokenStream<
851855

852856
RefPtr<StyleValue const> Parser::parse_percentage_value(TokenStream<ComponentValue>& tokens)
853857
{
858+
tokens.discard_whitespace();
859+
854860
auto const& peek_token = tokens.next_token();
855861
if (peek_token.is(Token::Type::Percentage)) {
856862
tokens.discard_a_token(); // percentage
@@ -1042,6 +1048,8 @@ RefPtr<StyleValue const> Parser::parse_anchor_size(TokenStream<ComponentValue>&
10421048

10431049
RefPtr<StyleValue const> Parser::parse_angle_value(TokenStream<ComponentValue>& tokens)
10441050
{
1051+
tokens.discard_whitespace();
1052+
10451053
if (tokens.next_token().is(Token::Type::Dimension)) {
10461054
auto transaction = tokens.begin_transaction();
10471055
auto& dimension_token = tokens.consume_a_token().token();
@@ -1071,6 +1079,8 @@ RefPtr<StyleValue const> Parser::parse_angle_value(TokenStream<ComponentValue>&
10711079

10721080
RefPtr<StyleValue const> Parser::parse_angle_percentage_value(TokenStream<ComponentValue>& tokens)
10731081
{
1082+
tokens.discard_whitespace();
1083+
10741084
if (tokens.next_token().is(Token::Type::Dimension)) {
10751085
auto transaction = tokens.begin_transaction();
10761086
auto& dimension_token = tokens.consume_a_token().token();
@@ -1103,6 +1113,8 @@ RefPtr<StyleValue const> Parser::parse_angle_percentage_value(TokenStream<Compon
11031113

11041114
RefPtr<StyleValue const> Parser::parse_flex_value(TokenStream<ComponentValue>& tokens)
11051115
{
1116+
tokens.discard_whitespace();
1117+
11061118
if (tokens.next_token().is(Token::Type::Dimension)) {
11071119
auto transaction = tokens.begin_transaction();
11081120
auto& dimension_token = tokens.consume_a_token().token();
@@ -1123,6 +1135,8 @@ RefPtr<StyleValue const> Parser::parse_flex_value(TokenStream<ComponentValue>& t
11231135

11241136
RefPtr<StyleValue const> Parser::parse_frequency_value(TokenStream<ComponentValue>& tokens)
11251137
{
1138+
tokens.discard_whitespace();
1139+
11261140
if (tokens.next_token().is(Token::Type::Dimension)) {
11271141
auto transaction = tokens.begin_transaction();
11281142
auto& dimension_token = tokens.consume_a_token().token();
@@ -1143,6 +1157,8 @@ RefPtr<StyleValue const> Parser::parse_frequency_value(TokenStream<ComponentValu
11431157

11441158
RefPtr<StyleValue const> Parser::parse_frequency_percentage_value(TokenStream<ComponentValue>& tokens)
11451159
{
1160+
tokens.discard_whitespace();
1161+
11461162
if (tokens.next_token().is(Token::Type::Dimension)) {
11471163
auto transaction = tokens.begin_transaction();
11481164
auto& dimension_token = tokens.consume_a_token().token();
@@ -1166,6 +1182,8 @@ RefPtr<StyleValue const> Parser::parse_frequency_percentage_value(TokenStream<Co
11661182

11671183
RefPtr<StyleValue const> Parser::parse_length_value(TokenStream<ComponentValue>& tokens)
11681184
{
1185+
tokens.discard_whitespace();
1186+
11691187
if (tokens.next_token().is(Token::Type::Dimension)) {
11701188
auto transaction = tokens.begin_transaction();
11711189
auto& dimension_token = tokens.consume_a_token().token();
@@ -1211,6 +1229,8 @@ RefPtr<StyleValue const> Parser::parse_length_value(TokenStream<ComponentValue>&
12111229

12121230
RefPtr<StyleValue const> Parser::parse_length_percentage_value(TokenStream<ComponentValue>& tokens)
12131231
{
1232+
tokens.discard_whitespace();
1233+
12141234
if (tokens.next_token().is(Token::Type::Dimension)) {
12151235
auto transaction = tokens.begin_transaction();
12161236
auto& dimension_token = tokens.consume_a_token().token();
@@ -1259,6 +1279,8 @@ RefPtr<StyleValue const> Parser::parse_length_percentage_value(TokenStream<Compo
12591279

12601280
RefPtr<StyleValue const> Parser::parse_resolution_value(TokenStream<ComponentValue>& tokens)
12611281
{
1282+
tokens.discard_whitespace();
1283+
12621284
if (tokens.next_token().is(Token::Type::Dimension)) {
12631285
auto transaction = tokens.begin_transaction();
12641286
auto& dimension_token = tokens.consume_a_token().token();
@@ -1284,6 +1306,8 @@ RefPtr<StyleValue const> Parser::parse_resolution_value(TokenStream<ComponentVal
12841306

12851307
RefPtr<StyleValue const> Parser::parse_time_value(TokenStream<ComponentValue>& tokens)
12861308
{
1309+
tokens.discard_whitespace();
1310+
12871311
if (tokens.next_token().is(Token::Type::Dimension)) {
12881312
auto transaction = tokens.begin_transaction();
12891313
auto& dimension_token = tokens.consume_a_token().token();
@@ -1304,6 +1328,8 @@ RefPtr<StyleValue const> Parser::parse_time_value(TokenStream<ComponentValue>& t
13041328

13051329
RefPtr<StyleValue const> Parser::parse_time_percentage_value(TokenStream<ComponentValue>& tokens)
13061330
{
1331+
tokens.discard_whitespace();
1332+
13071333
if (tokens.next_token().is(Token::Type::Dimension)) {
13081334
auto transaction = tokens.begin_transaction();
13091335
auto& dimension_token = tokens.consume_a_token().token();
@@ -1327,6 +1353,7 @@ RefPtr<StyleValue const> Parser::parse_time_percentage_value(TokenStream<Compone
13271353

13281354
RefPtr<StyleValue const> Parser::parse_keyword_value(TokenStream<ComponentValue>& tokens)
13291355
{
1356+
tokens.discard_whitespace();
13301357
auto const& peek_token = tokens.next_token();
13311358
if (peek_token.is(Token::Type::Ident)) {
13321359
auto keyword = keyword_from_string(peek_token.token().ident());
@@ -2487,6 +2514,7 @@ RefPtr<StyleValue const> Parser::parse_ratio_value(TokenStream<ComponentValue>&
24872514

24882515
RefPtr<StringStyleValue const> Parser::parse_string_value(TokenStream<ComponentValue>& tokens)
24892516
{
2517+
tokens.discard_whitespace();
24902518
auto const& peek = tokens.next_token();
24912519
if (peek.is(Token::Type::String)) {
24922520
tokens.discard_a_token();

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

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

33
Found 239 tests
44

5-
197 Pass
6-
42 Fail
5+
199 Pass
6+
40 Fail
77
Pass syntax:'*', initialValue:'a' is valid
88
Pass syntax:' * ', initialValue:'b' is valid
99
Pass syntax:'<length>', initialValue:'2px' is valid
@@ -25,7 +25,7 @@ Pass syntax:'*', initialValue:'"' is valid
2525
Pass syntax:'*', initialValue:'default' is valid
2626
Pass syntax:'<length>', initialValue:'0' is valid
2727
Pass syntax:'<length>', initialValue:'10px /*:)*/' is valid
28-
Fail syntax:'<length>', initialValue:' calc(-2px)' is valid
28+
Pass syntax:'<length>', initialValue:' calc(-2px)' is valid
2929
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
@@ -60,7 +60,7 @@ Pass syntax:'<transform-function>+', initialValue:'translateX(2px) rotate(42deg)
6060
Pass syntax:'<transform-list>', initialValue:'scale(2)' is valid
6161
Pass syntax:'<transform-list>', initialValue:'translateX(2px) rotate(20deg)' is valid
6262
Pass syntax:'<string>', initialValue:''foo bar'' is valid
63-
Fail syntax:'<string>', initialValue:' 'foo bar' ' is valid
63+
Pass syntax:'<string>', initialValue:' 'foo bar' ' is valid
6464
Pass syntax:'<string>', initialValue:''foo bar' is valid
6565
Pass syntax:'<string>', initialValue:''"foo" bar'' is valid
6666
Pass syntax:'<string>', initialValue:'"bar baz"' is valid

0 commit comments

Comments
 (0)