From e9b58ff096c8cc1bf4d72ad9141aa4d0e1ffee13 Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Mon, 4 Sep 2023 14:39:10 +0100 Subject: [PATCH] LibWeb: Move check for CSS-wide keywords to ValueID.h This feels like a better home for it. The new name better reflects the spec phrasing. --- .../CodeGenerators/LibWeb/GenerateCSSValueID.cpp | 8 ++++++++ Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp | 11 ++--------- Userland/Libraries/LibWeb/CSS/Parser/Parser.h | 1 - 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSValueID.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSValueID.cpp index ed3051f0d5..1aa5067ea0 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSValueID.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSValueID.cpp @@ -70,6 +70,14 @@ enum class ValueID { Optional value_id_from_string(StringView); StringView string_from_value_id(ValueID); +// https://www.w3.org/TR/css-values-4/#common-keywords +inline bool is_css_wide_keyword(StringView name) +{ + return name.equals_ignoring_ascii_case("inherit"sv) + || name.equals_ignoring_ascii_case("initial"sv) + || name.equals_ignoring_ascii_case("unset"sv); +} + } )~~~"); diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp index 305f3ef44b..f2d2c593cb 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp @@ -1488,7 +1488,7 @@ CSSRule* Parser::convert_to_rule(NonnullRefPtr rule) return {}; } - if (name_token.is(Token::Type::Ident) && (is_builtin(name_token.ident()) || name_token.ident().equals_ignoring_ascii_case("none"sv))) { + if (name_token.is(Token::Type::Ident) && (is_css_wide_keyword(name_token.ident()) || name_token.ident().equals_ignoring_ascii_case("none"sv))) { dbgln_if(CSS_PARSER_DEBUG, "CSSParser: @keyframes rule name is invalid: {}; discarding.", name_token.ident()); return {}; } @@ -4246,7 +4246,7 @@ CSSRule* Parser::parse_font_face_rule(TokenStream& tokens) continue; } if (part.is(Token::Type::Ident)) { - if (is_builtin(part.token().ident())) { + if (is_css_wide_keyword(part.token().ident())) { dbgln_if(CSS_PARSER_DEBUG, "CSSParser: @font-face font-family format invalid; discarding."); had_syntax_error = true; break; @@ -6483,13 +6483,6 @@ bool Parser::has_ignored_vendor_prefix(StringView string) return true; } -bool Parser::is_builtin(StringView name) -{ - return name.equals_ignoring_ascii_case("inherit"sv) - || name.equals_ignoring_ascii_case("initial"sv) - || name.equals_ignoring_ascii_case("unset"sv); -} - RefPtr Parser::parse_calculated_value(Badge, ParsingContext const& context, ComponentValue const& token) { auto parser = MUST(Parser::create(context, ""sv)); diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.h b/Userland/Libraries/LibWeb/CSS/Parser/Parser.h index acaaaf73ed..c1eb29d8f3 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.h +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.h @@ -286,7 +286,6 @@ private: Optional parse_supports_feature(TokenStream&); static bool has_ignored_vendor_prefix(StringView); - static bool is_builtin(StringView); struct PropertiesAndCustomProperties { Vector properties;