LibWeb: Move TraversableNavigable::m_page up to Navigable

This will allow anyone who has a Navigable to reach the Page.
This commit is contained in:
Andreas Kling 2024-04-26 14:55:54 +02:00
commit 9cd4a65071
Notes: sideshowbarker 2024-07-16 20:12:13 +09:00
4 changed files with 11 additions and 10 deletions

View file

@ -101,7 +101,8 @@ bool Navigable::is_ancestor_of(JS::NonnullGCPtr<Navigable> other) const
return false;
}
Navigable::Navigable()
Navigable::Navigable(JS::NonnullGCPtr<Page> page)
: m_page(page)
{
all_navigables().set(this);
}
@ -114,6 +115,7 @@ Navigable::~Navigable()
void Navigable::visit_edges(Cell::Visitor& visitor)
{
Base::visit_edges(visitor);
visitor.visit(m_page);
visitor.visit(m_parent);
visitor.visit(m_current_session_history_entry);
visitor.visit(m_active_session_history_entry);

View file

@ -183,8 +183,11 @@ public:
};
void paint(Painting::RecordingPainter&, PaintConfig);
Page& page() { return m_page; }
Page const& page() const { return m_page; }
protected:
Navigable();
explicit Navigable(JS::NonnullGCPtr<Page>);
virtual void visit_edges(Cell::Visitor&) override;
@ -220,6 +223,8 @@ private:
// Implied link between navigable and its container.
JS::GCPtr<NavigableContainer> m_container;
JS::NonnullGCPtr<Page> m_page;
bool m_has_been_destroyed { false };
CSSPixelSize m_size;

View file

@ -23,8 +23,8 @@ namespace Web::HTML {
JS_DEFINE_ALLOCATOR(TraversableNavigable);
TraversableNavigable::TraversableNavigable(JS::NonnullGCPtr<Page> page)
: m_session_history_traversal_queue(vm().heap().allocate_without_realm<SessionHistoryTraversalQueue>())
, m_page(page)
: Navigable(page)
, m_session_history_traversal_queue(vm().heap().allocate_without_realm<SessionHistoryTraversalQueue>())
{
}
@ -33,7 +33,6 @@ TraversableNavigable::~TraversableNavigable() = default;
void TraversableNavigable::visit_edges(Cell::Visitor& visitor)
{
Base::visit_edges(visitor);
visitor.visit(m_page);
visitor.visit(m_session_history_entries);
visitor.visit(m_session_history_traversal_queue);
}

View file

@ -79,9 +79,6 @@ public:
m_session_history_traversal_queue->append_sync(move(steps), target_navigable);
}
Page& page() { return m_page; }
Page const& page() const { return m_page; }
String window_handle() const { return m_window_handle; }
void set_window_handle(String window_handle) { m_window_handle = move(window_handle); }
@ -120,8 +117,6 @@ private:
JS::NonnullGCPtr<SessionHistoryTraversalQueue> m_session_history_traversal_queue;
JS::NonnullGCPtr<Page> m_page;
String m_window_handle;
};