From 343c709566376a2444710310aa16c2dfd527d997 Mon Sep 17 00:00:00 2001 From: Aliaksandr Kalenik Date: Tue, 22 Aug 2023 15:42:56 +0200 Subject: [PATCH] LibWeb: Add `m_page` in `TraversableNavigable` --- Userland/Libraries/LibWeb/HTML/TraversableNavigable.cpp | 7 +++++-- Userland/Libraries/LibWeb/HTML/TraversableNavigable.h | 7 ++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Userland/Libraries/LibWeb/HTML/TraversableNavigable.cpp b/Userland/Libraries/LibWeb/HTML/TraversableNavigable.cpp index 0400afb16f..e2d4a8e261 100644 --- a/Userland/Libraries/LibWeb/HTML/TraversableNavigable.cpp +++ b/Userland/Libraries/LibWeb/HTML/TraversableNavigable.cpp @@ -16,7 +16,10 @@ namespace Web::HTML { -TraversableNavigable::TraversableNavigable() = default; +TraversableNavigable::TraversableNavigable(Page& page) + : m_page(page) +{ +} TraversableNavigable::~TraversableNavigable() = default; @@ -76,7 +79,7 @@ WebIDL::ExceptionOr> TraversableNavigable document_state->set_navigable_target_name(target_name); // 5. Let traversable be a new traversable navigable. - auto traversable = vm.heap().allocate_without_realm(); + auto traversable = vm.heap().allocate_without_realm(page); // 6. Initialize the navigable traversable given documentState. TRY_OR_THROW_OOM(vm, traversable->initialize_navigable(document_state, nullptr)); diff --git a/Userland/Libraries/LibWeb/HTML/TraversableNavigable.h b/Userland/Libraries/LibWeb/HTML/TraversableNavigable.h index b28931acc8..6f46dcb577 100644 --- a/Userland/Libraries/LibWeb/HTML/TraversableNavigable.h +++ b/Userland/Libraries/LibWeb/HTML/TraversableNavigable.h @@ -54,8 +54,11 @@ public: m_session_history_traversal_queue.append(move(steps)); } + Page* page() { return m_page; } + Page const* page() const { return m_page; } + private: - TraversableNavigable(); + TraversableNavigable(Page&); virtual void visit_edges(Cell::Visitor&) override; @@ -74,6 +77,8 @@ private: VisibilityState m_system_visibility_state { VisibilityState::Visible }; SessionHistoryTraversalQueue m_session_history_traversal_queue; + + WeakPtr m_page; }; void finalize_a_same_document_navigation(JS::NonnullGCPtr traversable, JS::NonnullGCPtr target_navigable, JS::NonnullGCPtr target_entry, JS::GCPtr entry_to_replace);