diff --git a/Userland/Libraries/LibWeb/HTML/DocumentState.cpp b/Userland/Libraries/LibWeb/HTML/DocumentState.cpp
index 760ce35c05f..0bc1c586f4d 100644
--- a/Userland/Libraries/LibWeb/HTML/DocumentState.cpp
+++ b/Userland/Libraries/LibWeb/HTML/DocumentState.cpp
@@ -18,6 +18,11 @@ void DocumentState::visit_edges(Cell::Visitor& visitor)
{
Base::visit_edges(visitor);
visitor.visit(m_document);
+ for (auto& nested_history : m_nested_histories) {
+ for (auto& entry : nested_history.entries) {
+ visitor.visit(entry);
+ }
+ }
}
}
diff --git a/Userland/Libraries/LibWeb/HTML/DocumentState.h b/Userland/Libraries/LibWeb/HTML/DocumentState.h
index bff05961bfe..ceda3244dd0 100644
--- a/Userland/Libraries/LibWeb/HTML/DocumentState.h
+++ b/Userland/Libraries/LibWeb/HTML/DocumentState.h
@@ -21,6 +21,11 @@ class DocumentState final : public JS::Cell {
JS_CELL(DocumentState, JS::Cell);
public:
+ struct NestedHistory {
+ String id;
+ Vector> entries;
+ };
+
virtual ~DocumentState();
enum class Client {
@@ -49,6 +54,9 @@ public:
[[nodiscard]] Optional origin() const { return m_origin; }
void set_origin(Optional origin) { m_origin = move(origin); }
+ [[nodiscard]] Vector const& nested_histories() const { return m_nested_histories; }
+ [[nodiscard]] Vector& nested_histories() { return m_nested_histories; }
+
[[nodiscard]] bool reload_pending() const { return m_reload_pending; }
void set_reload_pending(bool reload_pending) { m_reload_pending = reload_pending; }
@@ -81,7 +89,8 @@ private:
// https://html.spec.whatwg.org/multipage/browsing-the-web.html#document-state-origin
Optional m_origin;
- // FIXME: https://html.spec.whatwg.org/multipage/browsing-the-web.html#document-state-nested-histories
+ // https://html.spec.whatwg.org/multipage/browsing-the-web.html#document-state-nested-histories
+ Vector m_nested_histories;
// FIXME: https://html.spec.whatwg.org/multipage/browsing-the-web.html#document-state-resource