Bladeren bron

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.
Sam Atkins 1 jaar geleden
bovenliggende
commit
1dcd63be05

+ 3 - 63
Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp

@@ -2478,69 +2478,9 @@ RefPtr<StyleValue> 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;

+ 7 - 2
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<Layout::NodeWithStyle const&> node) const
 {
     if (id() == CSS::ValueID::Currentcolor) {

+ 1 - 0
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<Layout::NodeWithStyle const&> node) const override;
     virtual String to_string() const override;