mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 15:40:19 +00:00
WebContent+WebDriver: Handle when new windows are immediately closed
This happens when window.close() is invoked immediately upon a window being opened.
This commit is contained in:
parent
556a0936dd
commit
ce11a90726
Notes:
github-actions[bot]
2024-10-06 00:43:31 +00:00
Author: https://github.com/trflynn89 Commit: https://github.com/LadybirdBrowser/ladybird/commit/ce11a907263 Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/1644 Reviewed-by: https://github.com/shannonbooth ✅
3 changed files with 14 additions and 3 deletions
|
@ -15,7 +15,7 @@ endpoint WebDriverClient {
|
|||
forward() => (Web::WebDriver::Response response)
|
||||
refresh() => (Web::WebDriver::Response response)
|
||||
get_title() => (Web::WebDriver::Response response)
|
||||
get_window_handle() => (String handle)
|
||||
get_window_handle() => (Web::WebDriver::Response response)
|
||||
close_window() => (Web::WebDriver::Response response)
|
||||
switch_to_window(String handle) => (Web::WebDriver::Response response)
|
||||
new_window(JsonValue payload) => (Web::WebDriver::Response response)
|
||||
|
|
|
@ -390,7 +390,11 @@ Messages::WebDriverClient::GetTitleResponse WebDriverConnection::get_title()
|
|||
// 11.1 Get Window Handle, https://w3c.github.io/webdriver/#get-window-handle
|
||||
Messages::WebDriverClient::GetWindowHandleResponse WebDriverConnection::get_window_handle()
|
||||
{
|
||||
return current_top_level_browsing_context()->top_level_traversable()->window_handle();
|
||||
// 1. If session's current top-level browsing context is no longer open, return error with error code no such window.
|
||||
TRY(ensure_current_top_level_browsing_context_is_open());
|
||||
|
||||
// 2. Return success with data being the window handle associated with session's current top-level browsing context.
|
||||
return JsonValue { current_top_level_browsing_context()->top_level_traversable()->window_handle() };
|
||||
}
|
||||
|
||||
// 11.2 Close Window, https://w3c.github.io/webdriver/#dfn-close-window
|
||||
|
|
|
@ -73,7 +73,14 @@ ErrorOr<NonnullRefPtr<Core::LocalServer>> Session::create_server(NonnullRefPtr<S
|
|||
dbgln("WebDriver is connected to WebContent socket");
|
||||
auto web_content_connection = maybe_connection.release_value();
|
||||
|
||||
auto window_handle = web_content_connection->get_window_handle();
|
||||
auto maybe_window_handle = web_content_connection->get_window_handle();
|
||||
if (maybe_window_handle.is_error()) {
|
||||
promise->reject(Error::from_string_literal("Window was closed immediately"));
|
||||
return;
|
||||
}
|
||||
|
||||
auto window_handle = MUST(String::from_byte_string(maybe_window_handle.value().as_string()));
|
||||
|
||||
web_content_connection->on_close = [this, window_handle]() {
|
||||
dbgln_if(WEBDRIVER_DEBUG, "Window {} was closed remotely.", window_handle);
|
||||
m_windows.remove(window_handle);
|
||||
|
|
Loading…
Reference in a new issue