diff --git a/Userland/Libraries/LibWeb/Bindings/MainThreadVM.cpp b/Userland/Libraries/LibWeb/Bindings/MainThreadVM.cpp index e075b8a945..9bbdc7a759 100644 --- a/Userland/Libraries/LibWeb/Bindings/MainThreadVM.cpp +++ b/Userland/Libraries/LibWeb/Bindings/MainThreadVM.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -80,6 +81,7 @@ ErrorOr initialize_main_thread_vm() TRY(HTML::EventNames::initialize_strings()); TRY(HTML::TagNames::initialize_strings()); TRY(Namespace::initialize_strings()); + TRY(NavigationTiming::EntryNames::initialize_strings()); TRY(PerformanceTimeline::EntryTypes::initialize_strings()); TRY(SVG::AttributeNames::initialize_strings()); TRY(SVG::TagNames::initialize_strings()); diff --git a/Userland/Libraries/LibWeb/NavigationTiming/EntryNames.cpp b/Userland/Libraries/LibWeb/NavigationTiming/EntryNames.cpp new file mode 100644 index 0000000000..2769f4690c --- /dev/null +++ b/Userland/Libraries/LibWeb/NavigationTiming/EntryNames.cpp @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2023, Luke Wilde + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include + +namespace Web::NavigationTiming::EntryNames { + +#define __ENUMERATE_NAVIGATION_TIMING_ENTRY_NAME(name) FlyString name; +ENUMERATE_NAVIGATION_TIMING_ENTRY_NAMES +#undef __ENUMERATE_NAVIGATION_TIMING_ENTRY_NAME + +ErrorOr initialize_strings() +{ + static bool s_initialized = false; + VERIFY(!s_initialized); + +#define __ENUMERATE_NAVIGATION_TIMING_ENTRY_NAME(name) \ + name = TRY(#name##_fly_string); + ENUMERATE_NAVIGATION_TIMING_ENTRY_NAMES +#undef __ENUMERATE_NAVIGATION_TIMING_ENTRY_NAME + + s_initialized = true; + return {}; +} + +} diff --git a/Userland/Libraries/LibWeb/NavigationTiming/EntryNames.h b/Userland/Libraries/LibWeb/NavigationTiming/EntryNames.h new file mode 100644 index 0000000000..3343f745fd --- /dev/null +++ b/Userland/Libraries/LibWeb/NavigationTiming/EntryNames.h @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2023, Luke Wilde + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include + +namespace Web::NavigationTiming::EntryNames { + +#define ENUMERATE_NAVIGATION_TIMING_ENTRY_NAMES \ + __ENUMERATE_NAVIGATION_TIMING_ENTRY_NAME(navigationStart) \ + __ENUMERATE_NAVIGATION_TIMING_ENTRY_NAME(unloadEventStart) \ + __ENUMERATE_NAVIGATION_TIMING_ENTRY_NAME(unloadEventEnd) \ + __ENUMERATE_NAVIGATION_TIMING_ENTRY_NAME(redirectStart) \ + __ENUMERATE_NAVIGATION_TIMING_ENTRY_NAME(redirectEnd) \ + __ENUMERATE_NAVIGATION_TIMING_ENTRY_NAME(fetchStart) \ + __ENUMERATE_NAVIGATION_TIMING_ENTRY_NAME(domainLookupStart) \ + __ENUMERATE_NAVIGATION_TIMING_ENTRY_NAME(domainLookupEnd) \ + __ENUMERATE_NAVIGATION_TIMING_ENTRY_NAME(connectStart) \ + __ENUMERATE_NAVIGATION_TIMING_ENTRY_NAME(connectEnd) \ + __ENUMERATE_NAVIGATION_TIMING_ENTRY_NAME(secureConnectionStart) \ + __ENUMERATE_NAVIGATION_TIMING_ENTRY_NAME(requestStart) \ + __ENUMERATE_NAVIGATION_TIMING_ENTRY_NAME(responseStart) \ + __ENUMERATE_NAVIGATION_TIMING_ENTRY_NAME(responseEnd) \ + __ENUMERATE_NAVIGATION_TIMING_ENTRY_NAME(domLoading) \ + __ENUMERATE_NAVIGATION_TIMING_ENTRY_NAME(domInteractive) \ + __ENUMERATE_NAVIGATION_TIMING_ENTRY_NAME(domContentLoadedEventStart) \ + __ENUMERATE_NAVIGATION_TIMING_ENTRY_NAME(domContentLoadedEventEnd) \ + __ENUMERATE_NAVIGATION_TIMING_ENTRY_NAME(domComplete) \ + __ENUMERATE_NAVIGATION_TIMING_ENTRY_NAME(loadEventStart) \ + __ENUMERATE_NAVIGATION_TIMING_ENTRY_NAME(loadEventEnd) + +#define __ENUMERATE_NAVIGATION_TIMING_ENTRY_NAME(name) extern FlyString name; +ENUMERATE_NAVIGATION_TIMING_ENTRY_NAMES +#undef __ENUMERATE_NAVIGATION_TIMING_ENTRY_NAME + +ErrorOr initialize_strings(); + +}