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;