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

View file

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

View file

@ -23,8 +23,8 @@ namespace Web::HTML {
JS_DEFINE_ALLOCATOR(TraversableNavigable); JS_DEFINE_ALLOCATOR(TraversableNavigable);
TraversableNavigable::TraversableNavigable(JS::NonnullGCPtr<Page> page) TraversableNavigable::TraversableNavigable(JS::NonnullGCPtr<Page> page)
: m_session_history_traversal_queue(vm().heap().allocate_without_realm<SessionHistoryTraversalQueue>()) : Navigable(page)
, m_page(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) void TraversableNavigable::visit_edges(Cell::Visitor& visitor)
{ {
Base::visit_edges(visitor); Base::visit_edges(visitor);
visitor.visit(m_page);
visitor.visit(m_session_history_entries); visitor.visit(m_session_history_entries);
visitor.visit(m_session_history_traversal_queue); 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); 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; } String window_handle() const { return m_window_handle; }
void set_window_handle(String window_handle) { m_window_handle = move(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<SessionHistoryTraversalQueue> m_session_history_traversal_queue;
JS::NonnullGCPtr<Page> m_page;
String m_window_handle; String m_window_handle;
}; };