WebContent+WebDriver: Inform WebDriver when a window is closed from JS

This hooks into the same PageClient method that closes the UI tab after
an invocation to window.close().
This commit is contained in:
Timothy Flynn 2024-10-05 18:40:55 -04:00 committed by Tim Ledbetter
parent 84df1bf585
commit 556a0936dd
Notes: github-actions[bot] 2024-10-06 00:43:38 +00:00
4 changed files with 10 additions and 0 deletions

View file

@ -538,6 +538,9 @@ void PageClient::page_did_close_top_level_traversable()
// FIXME: Rename this IPC call
client().async_did_close_browsing_context(m_id);
if (m_webdriver)
m_webdriver->async_window_closed();
// NOTE: This only removes the strong reference the PageHost has for this PageClient.
// It will be GC'd 'later'.
m_owner.remove_page({}, m_id);

View file

@ -1,6 +1,7 @@
#include <LibWeb/WebDriver/Response.h>
endpoint WebDriverServer {
window_closed() =|
script_executed(Web::WebDriver::Response response) =|
actions_performed(Web::WebDriver::Response response) =|
}

View file

@ -20,6 +20,11 @@ void WebContentConnection::die()
on_close();
}
void WebContentConnection::window_closed()
{
shutdown();
}
void WebContentConnection::script_executed(Web::WebDriver::Response const& response)
{
if (on_script_executed)

View file

@ -27,6 +27,7 @@ public:
private:
virtual void die() override;
virtual void window_closed() override;
virtual void script_executed(Web::WebDriver::Response const&) override;
virtual void actions_performed(Web::WebDriver::Response const&) override;
};