From c4efc0a5aaf147ffdc79b72ec08f12aa5ab40f1d Mon Sep 17 00:00:00 2001 From: Shannon Booth Date: Sun, 1 Oct 2023 14:59:51 +1300 Subject: [PATCH] LibWeb: Add Web::XLink::AttributeNames As defined by the XLink spec. --- .../LibWeb/Bindings/MainThreadVM.cpp | 2 ++ Userland/Libraries/LibWeb/CMakeLists.txt | 1 + .../Libraries/LibWeb/XLink/AttributeNames.cpp | 28 ++++++++++++++++ .../Libraries/LibWeb/XLink/AttributeNames.h | 32 +++++++++++++++++++ 4 files changed, 63 insertions(+) create mode 100644 Userland/Libraries/LibWeb/XLink/AttributeNames.cpp create mode 100644 Userland/Libraries/LibWeb/XLink/AttributeNames.h diff --git a/Userland/Libraries/LibWeb/Bindings/MainThreadVM.cpp b/Userland/Libraries/LibWeb/Bindings/MainThreadVM.cpp index f11c99c1b6..9890796c32 100644 --- a/Userland/Libraries/LibWeb/Bindings/MainThreadVM.cpp +++ b/Userland/Libraries/LibWeb/Bindings/MainThreadVM.cpp @@ -49,6 +49,7 @@ #include #include #include +#include namespace Web::Bindings { @@ -99,6 +100,7 @@ ErrorOr initialize_main_thread_vm() UIEvents::EventNames::initialize_strings(); WebGL::EventNames::initialize_strings(); XHR::EventNames::initialize_strings(); + XLink::AttributeNames::initialize_strings(); static_cast(s_main_thread_vm->custom_data())->event_loop.set_vm(*s_main_thread_vm); diff --git a/Userland/Libraries/LibWeb/CMakeLists.txt b/Userland/Libraries/LibWeb/CMakeLists.txt index 7e714f4a46..6f9e6aeb9f 100644 --- a/Userland/Libraries/LibWeb/CMakeLists.txt +++ b/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( diff --git a/Userland/Libraries/LibWeb/XLink/AttributeNames.cpp b/Userland/Libraries/LibWeb/XLink/AttributeNames.cpp new file mode 100644 index 0000000000..b7e2fc623a --- /dev/null +++ b/Userland/Libraries/LibWeb/XLink/AttributeNames.cpp @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2023, Shannon Booth + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include + +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; +} + +} diff --git a/Userland/Libraries/LibWeb/XLink/AttributeNames.h b/Userland/Libraries/LibWeb/XLink/AttributeNames.h new file mode 100644 index 0000000000..daee63f88f --- /dev/null +++ b/Userland/Libraries/LibWeb/XLink/AttributeNames.h @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2023, Shannon Booth + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include +#include + +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(); + +}