Преглед на файлове

LibWeb: Add a list of the entry names in the PerformanceTiming interface

Required for the PerformanceMark constructor, which doesn't allow any
mark names that have the same name as an attribute in the
PerformanceTiming interface in a Window context.
Luke Wilde преди 2 години
родител
ревизия
89ebef9730

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

@@ -32,6 +32,7 @@
 #include <LibWeb/HTML/Window.h>
 #include <LibWeb/HTML/WindowProxy.h>
 #include <LibWeb/Namespace.h>
+#include <LibWeb/NavigationTiming/EntryNames.h>
 #include <LibWeb/PerformanceTimeline/EntryTypes.h>
 #include <LibWeb/Platform/EventLoopPlugin.h>
 #include <LibWeb/SVG/AttributeNames.h>
@@ -80,6 +81,7 @@ ErrorOr<void> 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());

+ 29 - 0
Userland/Libraries/LibWeb/NavigationTiming/EntryNames.cpp

@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2023, Luke Wilde <lukew@serenityos.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#include <LibWeb/NavigationTiming/EntryNames.h>
+
+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<void> 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 {};
+}
+
+}

+ 42 - 0
Userland/Libraries/LibWeb/NavigationTiming/EntryNames.h

@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2023, Luke Wilde <lukew@serenityos.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+#include <AK/FlyString.h>
+
+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<void> initialize_strings();
+
+}