diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp index bb9fe475be..05fa9ed723 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp @@ -180,7 +180,7 @@ NonnullRefPtr Parser::parse_a_stylesheet(TokenStream& tokens, // NOTE: We create the stylesheet at the end. // 4. Consume a list of rules from input, with the top-level flag set, and set the stylesheet’s value to the result. - auto parser_rules = consume_a_list_of_rules(tokens, true); + auto parser_rules = consume_a_list_of_rules(tokens, TopLevel::Yes); NonnullRefPtrVector rules; for (auto& raw_rule : parser_rules) { @@ -1510,7 +1510,7 @@ Optional Parser::parse_general_enclosed(TokenStream -NonnullRefPtrVector Parser::consume_a_list_of_rules(TokenStream& tokens, bool top_level) +NonnullRefPtrVector Parser::consume_a_list_of_rules(TokenStream& tokens, TopLevel top_level) { NonnullRefPtrVector rules; @@ -1526,7 +1526,7 @@ NonnullRefPtrVector Parser::consume_a_list_of_rules(TokenStream& t } if (token.is(Token::Type::CDO) || token.is(Token::Type::CDC)) { - if (top_level) { + if (top_level == TopLevel::Yes) { continue; } @@ -1904,7 +1904,7 @@ NonnullRefPtrVector Parser::parse_as_list_of_rules() template NonnullRefPtrVector Parser::parse_a_list_of_rules(TokenStream& tokens) { - auto parsed_rules = consume_a_list_of_rules(tokens, false); + auto parsed_rules = consume_a_list_of_rules(tokens, TopLevel::No); NonnullRefPtrVector rules; for (auto& rule : parsed_rules) { @@ -2130,7 +2130,7 @@ RefPtr Parser::convert_to_rule(NonnullRefPtr rule) return {}; auto child_tokens = TokenStream { rule->block()->values() }; - auto parser_rules = consume_a_list_of_rules(child_tokens, false); + auto parser_rules = consume_a_list_of_rules(child_tokens, TopLevel::No); NonnullRefPtrVector child_rules; for (auto& raw_rule : parser_rules) { if (auto child_rule = convert_to_rule(raw_rule)) @@ -2154,7 +2154,7 @@ RefPtr Parser::convert_to_rule(NonnullRefPtr rule) if (!rule->block()) return {}; auto child_tokens = TokenStream { rule->block()->values() }; - auto parser_rules = consume_a_list_of_rules(child_tokens, false); + auto parser_rules = consume_a_list_of_rules(child_tokens, TopLevel::No); NonnullRefPtrVector child_rules; for (auto& raw_rule : parser_rules) { if (auto child_rule = convert_to_rule(raw_rule)) diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.h b/Userland/Libraries/LibWeb/CSS/Parser/Parser.h index 62411d612c..56bf66006a 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.h +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.h @@ -169,8 +169,12 @@ private: }; Optional parse_a_n_plus_b_pattern(TokenStream&, AllowTrailingTokens = AllowTrailingTokens::No); + enum class TopLevel { + No, + Yes + }; template - [[nodiscard]] NonnullRefPtrVector consume_a_list_of_rules(TokenStream&, bool top_level); + [[nodiscard]] NonnullRefPtrVector consume_a_list_of_rules(TokenStream&, TopLevel); template [[nodiscard]] NonnullRefPtr consume_an_at_rule(TokenStream&); template