瀏覽代碼

LibWeb: Add Web::XLink::AttributeNames

As defined by the XLink spec.
Shannon Booth 1 年之前
父節點
當前提交
c4efc0a5aa

+ 2 - 0
Userland/Libraries/LibWeb/Bindings/MainThreadVM.cpp

@@ -49,6 +49,7 @@
 #include <LibWeb/WebGL/EventNames.h>
 #include <LibWeb/WebIDL/AbstractOperations.h>
 #include <LibWeb/XHR/EventNames.h>
+#include <LibWeb/XLink/AttributeNames.h>
 
 namespace Web::Bindings {
 
@@ -99,6 +100,7 @@ ErrorOr<void> initialize_main_thread_vm()
     UIEvents::EventNames::initialize_strings();
     WebGL::EventNames::initialize_strings();
     XHR::EventNames::initialize_strings();
+    XLink::AttributeNames::initialize_strings();
 
     static_cast<WebEngineCustomData*>(s_main_thread_vm->custom_data())->event_loop.set_vm(*s_main_thread_vm);
 

+ 1 - 0
Userland/Libraries/LibWeb/CMakeLists.txt

@@ -624,6 +624,7 @@ set(SOURCES
     XHR/XMLHttpRequestEventTarget.cpp
     XHR/XMLHttpRequestUpload.cpp
     XML/XMLDocumentBuilder.cpp
+    XLink/AttributeNames.cpp
 )
 
 invoke_generator(

+ 28 - 0
Userland/Libraries/LibWeb/XLink/AttributeNames.cpp

@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2023, Shannon Booth <shannon@serenityos.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#include <LibWeb/XLink/AttributeNames.h>
+
+namespace Web::XLink::AttributeNames {
+
+#define __ENUMERATE_XLINK_ATTRIBUTE(name) FlyString name;
+ENUMERATE_XLINK_ATTRIBUTES(__ENUMERATE_XLINK_ATTRIBUTE)
+#undef __ENUMERATE_XLINK_ATTRIBUTE
+
+void initialize_strings()
+{
+    static bool s_initialized = false;
+    VERIFY(!s_initialized);
+
+#define __ENUMERATE_XLINK_ATTRIBUTE(name) \
+    name = #name##_fly_string;
+    ENUMERATE_XLINK_ATTRIBUTES(__ENUMERATE_XLINK_ATTRIBUTE)
+#undef __ENUMERATE_XLINK_ATTRIBUTE
+
+    s_initialized = true;
+}
+
+}

+ 32 - 0
Userland/Libraries/LibWeb/XLink/AttributeNames.h

@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2023, Shannon Booth <shannon@serenityos.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+#include <AK/Error.h>
+#include <AK/FlyString.h>
+
+namespace Web::XLink::AttributeNames {
+
+#define ENUMERATE_XLINK_ATTRIBUTES(E) \
+    E(type)                           \
+    E(href)                           \
+    E(role)                           \
+    E(arcrole)                        \
+    E(title)                          \
+    E(show)                           \
+    E(actuate)                        \
+    E(label)                          \
+    E(from)                           \
+    E(to)
+
+#define __ENUMERATE_XLINK_ATTRIBUTE(name) extern FlyString name;
+ENUMERATE_XLINK_ATTRIBUTES(__ENUMERATE_XLINK_ATTRIBUTE)
+#undef __ENUMERATE_XLINK_ATTRIBUTE
+
+void initialize_strings();
+
+}