瀏覽代碼

LibWeb: Teach the CSS parser about extra color keywords

All of these identifiers can be treated as a color, so let's make sure
the parser understands that.
Sam Atkins 2 年之前
父節點
當前提交
aad2f0963f
共有 1 個文件被更改,包括 66 次插入0 次删除
  1. 66 0
      Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp

+ 66 - 0
Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp

@@ -4029,6 +4029,72 @@ ErrorOr<RefPtr<StyleValue>> Parser::parse_color_value(ComponentValue const& comp
     if (color.has_value())
         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;
+            }
+        }
+    }
+
     return nullptr;
 }