Prechádzať zdrojové kódy

LibWeb: Support CSSRule.type

We already had the CSSRule::Type enum, but the values were not aligned
with the CSSOM spec. This patch takes care of that, and then exposes
the type of a CSSRule to JavaScript via the "type" attribute.
Andreas Kling 3 rokov pred
rodič
commit
f4f850aaf2

+ 7 - 7
Userland/Libraries/LibWeb/CSS/CSSRule.h

@@ -24,13 +24,13 @@ public:
 
     virtual ~CSSRule() = default;
 
-    enum class Type : u32 {
-        Style,
-        Import,
-        Media,
-        Supports,
-        FontFace,
-        __Count,
+    // https://drafts.csswg.org/cssom/#dom-cssrule-type
+    enum class Type : u16 {
+        Style = 1,
+        Import = 3,
+        Media = 4,
+        FontFace = 5,
+        Supports = 12,
     };
 
     virtual StringView class_name() const = 0;

+ 12 - 0
Userland/Libraries/LibWeb/CSS/CSSRule.idl

@@ -2,4 +2,16 @@ interface CSSRule {
 
     attribute CSSOMString cssText;
 
+    readonly attribute unsigned short type;
+
+    const unsigned short STYLE_RULE = 1;
+    const unsigned short CHARSET_RULE = 2;
+    const unsigned short IMPORT_RULE = 3;
+    const unsigned short MEDIA_RULE = 4;
+    const unsigned short FONT_FACE_RULE = 5;
+    const unsigned short PAGE_RULE = 6;
+    const unsigned short MARGIN_RULE = 9;
+    const unsigned short NAMESPACE_RULE = 10;
+    const unsigned short SUPPORTS_RULE = 12;
+
 };

+ 0 - 4
Userland/Libraries/LibWeb/CSS/CSSRuleList.cpp

@@ -95,8 +95,6 @@ void CSSRuleList::for_each_effective_style_rule(Function<void(CSSStyleRule const
         case CSSRule::Type::Supports:
             static_cast<CSSSupportsRule const&>(rule).for_each_effective_style_rule(callback);
             break;
-        case CSSRule::Type::__Count:
-            VERIFY_NOT_REACHED();
         }
     }
 }
@@ -133,8 +131,6 @@ bool CSSRuleList::evaluate_media_queries(HTML::Window const& window)
                 any_media_queries_changed_match_state = true;
             break;
         }
-        case CSSRule::Type::__Count:
-            VERIFY_NOT_REACHED();
         }
     }
 

+ 0 - 2
Userland/Libraries/LibWeb/Dump.cpp

@@ -563,8 +563,6 @@ void dump_rule(StringBuilder& builder, CSS::CSSRule const& rule, int indent_leve
     case CSS::CSSRule::Type::Supports:
         dump_supports_rule(builder, verify_cast<CSS::CSSSupportsRule const>(rule), indent_levels);
         break;
-    case CSS::CSSRule::Type::__Count:
-        VERIFY_NOT_REACHED();
     }
 }