From 1dcd63be05e1a8c4bc996bed0a0703e38dd01588 Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Wed, 23 Aug 2023 15:40:17 +0100 Subject: [PATCH] LibWeb: Deduplicate "ident is color" check Reuse the check from IdentifierStyleValue in the CSS Parser, instead of duplicating it. This might not be the ideal place to put it, but it works for now. --- .../Libraries/LibWeb/CSS/Parser/Parser.cpp | 66 +------------------ .../CSS/StyleValues/IdentifierStyleValue.cpp | 9 ++- .../CSS/StyleValues/IdentifierStyleValue.h | 1 + 3 files changed, 11 insertions(+), 65 deletions(-) diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp index 384a02f4e4..c192bd5fdc 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp @@ -2478,69 +2478,9 @@ RefPtr Parser::parse_color_value(ComponentValue const& component_val return ColorStyleValue::create(color.value()); if (component_value.is(Token::Type::Ident)) { - if (auto ident = value_id_from_string(component_value.token().ident()); ident.has_value()) { - switch (ident.value()) { - case ValueID::Currentcolor: - case ValueID::LibwebLink: - case ValueID::LibwebPaletteActiveLink: - case ValueID::LibwebPaletteActiveWindowBorder1: - case ValueID::LibwebPaletteActiveWindowBorder2: - case ValueID::LibwebPaletteActiveWindowTitle: - case ValueID::LibwebPaletteBase: - case ValueID::LibwebPaletteBaseText: - case ValueID::LibwebPaletteButton: - case ValueID::LibwebPaletteButtonText: - case ValueID::LibwebPaletteDesktopBackground: - case ValueID::LibwebPaletteFocusOutline: - case ValueID::LibwebPaletteHighlightWindowBorder1: - case ValueID::LibwebPaletteHighlightWindowBorder2: - case ValueID::LibwebPaletteHighlightWindowTitle: - case ValueID::LibwebPaletteHoverHighlight: - case ValueID::LibwebPaletteInactiveSelection: - case ValueID::LibwebPaletteInactiveSelectionText: - case ValueID::LibwebPaletteInactiveWindowBorder1: - case ValueID::LibwebPaletteInactiveWindowBorder2: - case ValueID::LibwebPaletteInactiveWindowTitle: - case ValueID::LibwebPaletteLink: - case ValueID::LibwebPaletteMenuBase: - case ValueID::LibwebPaletteMenuBaseText: - case ValueID::LibwebPaletteMenuSelection: - case ValueID::LibwebPaletteMenuSelectionText: - case ValueID::LibwebPaletteMenuStripe: - case ValueID::LibwebPaletteMovingWindowBorder1: - case ValueID::LibwebPaletteMovingWindowBorder2: - case ValueID::LibwebPaletteMovingWindowTitle: - case ValueID::LibwebPaletteRubberBandBorder: - case ValueID::LibwebPaletteRubberBandFill: - case ValueID::LibwebPaletteRuler: - case ValueID::LibwebPaletteRulerActiveText: - case ValueID::LibwebPaletteRulerBorder: - case ValueID::LibwebPaletteRulerInactiveText: - case ValueID::LibwebPaletteSelection: - case ValueID::LibwebPaletteSelectionText: - case ValueID::LibwebPaletteSyntaxComment: - case ValueID::LibwebPaletteSyntaxControlKeyword: - case ValueID::LibwebPaletteSyntaxIdentifier: - case ValueID::LibwebPaletteSyntaxKeyword: - case ValueID::LibwebPaletteSyntaxNumber: - case ValueID::LibwebPaletteSyntaxOperator: - case ValueID::LibwebPaletteSyntaxPreprocessorStatement: - case ValueID::LibwebPaletteSyntaxPreprocessorValue: - case ValueID::LibwebPaletteSyntaxPunctuation: - case ValueID::LibwebPaletteSyntaxString: - case ValueID::LibwebPaletteSyntaxType: - case ValueID::LibwebPaletteTextCursor: - case ValueID::LibwebPaletteThreedHighlight: - case ValueID::LibwebPaletteThreedShadow1: - case ValueID::LibwebPaletteThreedShadow2: - case ValueID::LibwebPaletteVisitedLink: - case ValueID::LibwebPaletteWindow: - case ValueID::LibwebPaletteWindowText: - return IdentifierStyleValue::create(ident.value()); - default: - break; - } - } + auto ident = value_id_from_string(component_value.token().ident()); + if (ident.has_value() && IdentifierStyleValue::is_color(ident.value())) + return IdentifierStyleValue::create(ident.value()); } return nullptr; diff --git a/Userland/Libraries/LibWeb/CSS/StyleValues/IdentifierStyleValue.cpp b/Userland/Libraries/LibWeb/CSS/StyleValues/IdentifierStyleValue.cpp index 0c78e5b5c4..ae4ab201a1 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValues/IdentifierStyleValue.cpp +++ b/Userland/Libraries/LibWeb/CSS/StyleValues/IdentifierStyleValue.cpp @@ -19,9 +19,9 @@ String IdentifierStyleValue::to_string() const return MUST(String::from_utf8(CSS::string_from_value_id(m_id))); } -bool IdentifierStyleValue::has_color() const +bool IdentifierStyleValue::is_color(ValueID value_id) { - switch (m_id) { + switch (value_id) { case ValueID::Currentcolor: case ValueID::LibwebLink: case ValueID::LibwebPaletteActiveLink: @@ -84,6 +84,11 @@ bool IdentifierStyleValue::has_color() const } } +bool IdentifierStyleValue::has_color() const +{ + return is_color(m_id); +} + Color IdentifierStyleValue::to_color(Optional node) const { if (id() == CSS::ValueID::Currentcolor) { diff --git a/Userland/Libraries/LibWeb/CSS/StyleValues/IdentifierStyleValue.h b/Userland/Libraries/LibWeb/CSS/StyleValues/IdentifierStyleValue.h index fc385948d2..620216962d 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValues/IdentifierStyleValue.h +++ b/Userland/Libraries/LibWeb/CSS/StyleValues/IdentifierStyleValue.h @@ -24,6 +24,7 @@ public: ValueID id() const { return m_id; } + static bool is_color(ValueID); virtual bool has_color() const override; virtual Color to_color(Optional node) const override; virtual String to_string() const override;