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(); + +}