mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-15 21:41:58 +00:00
WebContent: Add a JS visitor to WebDriver's IPC connection
We've added a few JS::Handle members to this class over time. Let's avoid creating a new GC root for each of these, and explicitly add a visitation method.
This commit is contained in:
parent
022e2b8a94
commit
048b51eb54
Notes:
github-actions[bot]
2024-10-18 07:45:58 +00:00
Author: https://github.com/trflynn89
Commit: 048b51eb54
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/1850
Reviewed-by: https://github.com/gmta ✅
3 changed files with 19 additions and 6 deletions
|
@ -77,6 +77,9 @@ void PageClient::visit_edges(JS::Cell::Visitor& visitor)
|
||||||
{
|
{
|
||||||
Base::visit_edges(visitor);
|
Base::visit_edges(visitor);
|
||||||
visitor.visit(m_page);
|
visitor.visit(m_page);
|
||||||
|
|
||||||
|
if (m_webdriver)
|
||||||
|
m_webdriver->visit_edges(visitor);
|
||||||
}
|
}
|
||||||
|
|
||||||
ConnectionFromClient& PageClient::client() const
|
ConnectionFromClient& PageClient::client() const
|
||||||
|
|
|
@ -199,6 +199,14 @@ WebDriverConnection::WebDriverConnection(NonnullOwnPtr<Core::LocalSocket> socket
|
||||||
set_current_top_level_browsing_context(page_client.page().top_level_browsing_context());
|
set_current_top_level_browsing_context(page_client.page().top_level_browsing_context());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WebDriverConnection::visit_edges(JS::Cell::Visitor& visitor)
|
||||||
|
{
|
||||||
|
visitor.visit(m_current_browsing_context);
|
||||||
|
visitor.visit(m_current_parent_browsing_context);
|
||||||
|
visitor.visit(m_current_top_level_browsing_context);
|
||||||
|
visitor.visit(m_action_executor);
|
||||||
|
}
|
||||||
|
|
||||||
// https://w3c.github.io/webdriver/#dfn-close-the-session
|
// https://w3c.github.io/webdriver/#dfn-close-the-session
|
||||||
void WebDriverConnection::close_session()
|
void WebDriverConnection::close_session()
|
||||||
{
|
{
|
||||||
|
|
|
@ -34,6 +34,8 @@ public:
|
||||||
static ErrorOr<NonnullRefPtr<WebDriverConnection>> connect(Web::PageClient& page_client, ByteString const& webdriver_ipc_path);
|
static ErrorOr<NonnullRefPtr<WebDriverConnection>> connect(Web::PageClient& page_client, ByteString const& webdriver_ipc_path);
|
||||||
virtual ~WebDriverConnection() = default;
|
virtual ~WebDriverConnection() = default;
|
||||||
|
|
||||||
|
void visit_edges(JS::Cell::Visitor&);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
WebDriverConnection(NonnullOwnPtr<Core::LocalSocket> socket, Web::PageClient& page_client);
|
WebDriverConnection(NonnullOwnPtr<Core::LocalSocket> socket, Web::PageClient& page_client);
|
||||||
|
|
||||||
|
@ -106,10 +108,10 @@ private:
|
||||||
|
|
||||||
void set_current_browsing_context(Web::HTML::BrowsingContext&);
|
void set_current_browsing_context(Web::HTML::BrowsingContext&);
|
||||||
Web::HTML::BrowsingContext& current_browsing_context() { return *m_current_browsing_context; }
|
Web::HTML::BrowsingContext& current_browsing_context() { return *m_current_browsing_context; }
|
||||||
JS::GCPtr<Web::HTML::BrowsingContext> current_parent_browsing_context() { return m_current_parent_browsing_context.ptr(); }
|
JS::GCPtr<Web::HTML::BrowsingContext> current_parent_browsing_context() { return m_current_parent_browsing_context; }
|
||||||
|
|
||||||
void set_current_top_level_browsing_context(Web::HTML::BrowsingContext&);
|
void set_current_top_level_browsing_context(Web::HTML::BrowsingContext&);
|
||||||
JS::GCPtr<Web::HTML::BrowsingContext> current_top_level_browsing_context() { return m_current_top_level_browsing_context.ptr(); }
|
JS::GCPtr<Web::HTML::BrowsingContext> current_top_level_browsing_context() { return m_current_top_level_browsing_context; }
|
||||||
|
|
||||||
ErrorOr<void, Web::WebDriver::Error> ensure_current_browsing_context_is_open();
|
ErrorOr<void, Web::WebDriver::Error> ensure_current_browsing_context_is_open();
|
||||||
ErrorOr<void, Web::WebDriver::Error> ensure_current_top_level_browsing_context_is_open();
|
ErrorOr<void, Web::WebDriver::Error> ensure_current_top_level_browsing_context_is_open();
|
||||||
|
@ -147,15 +149,15 @@ private:
|
||||||
Web::WebDriver::TimeoutsConfiguration m_timeouts_configuration;
|
Web::WebDriver::TimeoutsConfiguration m_timeouts_configuration;
|
||||||
|
|
||||||
// https://w3c.github.io/webdriver/#dfn-current-browsing-context
|
// https://w3c.github.io/webdriver/#dfn-current-browsing-context
|
||||||
JS::Handle<Web::HTML::BrowsingContext> m_current_browsing_context;
|
JS::GCPtr<Web::HTML::BrowsingContext> m_current_browsing_context;
|
||||||
|
|
||||||
// https://w3c.github.io/webdriver/#dfn-current-parent-browsing-context
|
// https://w3c.github.io/webdriver/#dfn-current-parent-browsing-context
|
||||||
JS::Handle<Web::HTML::BrowsingContext> m_current_parent_browsing_context;
|
JS::GCPtr<Web::HTML::BrowsingContext> m_current_parent_browsing_context;
|
||||||
|
|
||||||
// https://w3c.github.io/webdriver/#dfn-current-top-level-browsing-context
|
// https://w3c.github.io/webdriver/#dfn-current-top-level-browsing-context
|
||||||
JS::Handle<Web::HTML::BrowsingContext> m_current_top_level_browsing_context;
|
JS::GCPtr<Web::HTML::BrowsingContext> m_current_top_level_browsing_context;
|
||||||
|
|
||||||
JS::Handle<JS::Cell> m_action_executor;
|
JS::GCPtr<JS::Cell> m_action_executor;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue