diff --git a/Userland/Libraries/LibWeb/HTML/SessionHistoryEntry.cpp b/Userland/Libraries/LibWeb/HTML/SessionHistoryEntry.cpp
index 846927ce1b..f5b4fc9440 100644
--- a/Userland/Libraries/LibWeb/HTML/SessionHistoryEntry.cpp
+++ b/Userland/Libraries/LibWeb/HTML/SessionHistoryEntry.cpp
@@ -4,6 +4,7 @@
* SPDX-License-Identifier: BSD-2-Clause
*/
+#include
#include
#include
#include
@@ -17,4 +18,12 @@ void SessionHistoryEntry::visit_edges(Cell::Visitor& visitor)
visitor.visit(original_source_browsing_context);
}
+SessionHistoryEntry::SessionHistoryEntry()
+ : classic_history_api_state(MUST(structured_serialize_for_storage(vm(), JS::js_null())))
+ , navigation_api_state(MUST(structured_serialize_for_storage(vm(), JS::js_undefined())))
+ , navigation_api_key(MUST(Crypto::generate_random_uuid()))
+ , navigation_api_id(MUST(Crypto::generate_random_uuid()))
+{
+}
+
}
diff --git a/Userland/Libraries/LibWeb/HTML/SessionHistoryEntry.h b/Userland/Libraries/LibWeb/HTML/SessionHistoryEntry.h
index 8ef65a8628..d12157a23f 100644
--- a/Userland/Libraries/LibWeb/HTML/SessionHistoryEntry.h
+++ b/Userland/Libraries/LibWeb/HTML/SessionHistoryEntry.h
@@ -12,6 +12,7 @@
#include
#include
#include
+#include
namespace Web::HTML {
@@ -30,6 +31,8 @@ enum class ScrollRestorationMode {
struct SessionHistoryEntry final : public JS::Cell {
JS_CELL(SessionHistoryEntry, JS::Cell);
+ SessionHistoryEntry();
+
void visit_edges(Cell::Visitor&) override;
enum class Pending {
@@ -50,6 +53,22 @@ struct SessionHistoryEntry final : public JS::Cell {
// https://html.spec.whatwg.org/multipage/browsing-the-web.html#she-document-state
JS::GCPtr document_state;
+ // https://html.spec.whatwg.org/multipage/browsing-the-web.html#she-classic-history-api-state
+ // classic history API state, which is serialized state, initially StructuredSerializeForStorage(null).
+ SerializationRecord classic_history_api_state;
+
+ // https://html.spec.whatwg.org/multipage/browsing-the-web.html#she-navigation-api-state
+ // navigation API state, which is a serialized state, initially StructuredSerializeForStorage(undefined).
+ SerializationRecord navigation_api_state;
+
+ // https://html.spec.whatwg.org/multipage/browsing-the-web.html#she-navigation-api-key
+ // navigation API key, which is a string, initially set to the result of generating a random UUID.
+ String navigation_api_key;
+
+ // https://html.spec.whatwg.org/multipage/browsing-the-web.html#she-navigation-api-id
+ // navigation API ID, which is a string, initially set to the result of generating a random UUID.
+ String navigation_api_id;
+
// https://html.spec.whatwg.org/multipage/browsing-the-web.html#she-scroll-restoration-mode
// scroll restoration mode, a scroll restoration mode, initially "auto"
ScrollRestorationMode scroll_restoration_mode { ScrollRestorationMode::Auto };