浏览代码

LibWeb/CSS: Implement "is a custom property name string" to spec

This will be needed in the Parser soon, so for lack of a better place,
it's going in a separate header.
Sam Atkins 8 月之前
父节点
当前提交
f11c0e6cc0
共有 2 个文件被更改,包括 24 次插入3 次删除
  1. 3 3
      Userland/Libraries/LibWeb/CSS/CSS.cpp
  2. 21 0
      Userland/Libraries/LibWeb/CSS/PropertyName.h

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

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021-2023, Sam Atkins <atkinssj@serenityos.org>
+ * Copyright (c) 2021-2024, Sam Atkins <sam@ladybird.org>
  * Copyright (c) 2023, Tim Flynn <trflynn89@serenityos.org>
  *
  * SPDX-License-Identifier: BSD-2-Clause
@@ -9,6 +9,7 @@
 #include <LibWeb/CSS/CSS.h>
 #include <LibWeb/CSS/Parser/Parser.h>
 #include <LibWeb/CSS/PropertyID.h>
+#include <LibWeb/CSS/PropertyName.h>
 #include <LibWeb/CSS/Serialize.h>
 
 namespace Web::CSS {
@@ -33,8 +34,7 @@ bool supports(JS::VM& vm, StringView property, StringView value)
     }
 
     // 2. Otherwise, if property is a custom property name string, return true.
-    // FIXME: This check is not enough to make sure this is a valid custom property name, but it's close enough.
-    else if (property.starts_with("--"sv) && property.length() >= 3) {
+    else if (is_a_custom_property_name_string(property)) {
         return true;
     }
 

+ 21 - 0
Userland/Libraries/LibWeb/CSS/PropertyName.h

@@ -0,0 +1,21 @@
+/*
+ * Copyright (c) 2024, Sam Atkins <sam@ladybird.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+#include <AK/StringView.h>
+#include <LibWeb/CSS/PropertyID.h>
+
+namespace Web::CSS {
+
+// https://drafts.css-houdini.org/css-typed-om-1/#custom-property-name-string
+static bool is_a_custom_property_name_string(StringView string)
+{
+    // A string is a custom property name string if it starts with two dashes (U+002D HYPHEN-MINUS), like --foo.
+    return string.starts_with("--"sv);
+}
+
+}