mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 13:37:45 +00:00
WebContent+WebDriver: Ensure Get Window Handle checks for closed BCs
This commit is contained in:
parent
010be9b7c2
commit
0524bc1d13
4 changed files with 13 additions and 2 deletions
|
@ -55,4 +55,5 @@ endpoint WebDriverClient {
|
||||||
take_screenshot() => (Web::WebDriver::Response response)
|
take_screenshot() => (Web::WebDriver::Response response)
|
||||||
take_element_screenshot(String element_id) => (Web::WebDriver::Response response)
|
take_element_screenshot(String element_id) => (Web::WebDriver::Response response)
|
||||||
print_page() => (Web::WebDriver::Response response)
|
print_page() => (Web::WebDriver::Response response)
|
||||||
|
ensure_top_level_browsing_context_is_open() => (Web::WebDriver::Response response)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1745,11 +1745,18 @@ Messages::WebDriverClient::PrintPageResponse WebDriverConnection::print_page()
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://w3c.github.io/webdriver/#dfn-no-longer-open
|
// https://w3c.github.io/webdriver/#dfn-no-longer-open
|
||||||
ErrorOr<void, Web::WebDriver::Error> WebDriverConnection::ensure_open_top_level_browsing_context()
|
Messages::WebDriverClient::EnsureTopLevelBrowsingContextIsOpenResponse WebDriverConnection::ensure_top_level_browsing_context_is_open()
|
||||||
{
|
{
|
||||||
// A browsing context is said to be no longer open if it has been discarded.
|
// A browsing context is said to be no longer open if it has been discarded.
|
||||||
if (m_page_client.page().top_level_browsing_context().has_been_discarded())
|
if (m_page_client.page().top_level_browsing_context().has_been_discarded())
|
||||||
return Web::WebDriver::Error::from_code(Web::WebDriver::ErrorCode::NoSuchWindow, "Window not found"sv);
|
return Web::WebDriver::Error::from_code(Web::WebDriver::ErrorCode::NoSuchWindow, "Window not found"sv);
|
||||||
|
return JsonValue {};
|
||||||
|
}
|
||||||
|
|
||||||
|
// https://w3c.github.io/webdriver/#dfn-no-longer-open
|
||||||
|
ErrorOr<void, Web::WebDriver::Error> WebDriverConnection::ensure_open_top_level_browsing_context()
|
||||||
|
{
|
||||||
|
TRY(ensure_top_level_browsing_context_is_open().take_response());
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -93,7 +93,9 @@ private:
|
||||||
virtual Messages::WebDriverClient::TakeElementScreenshotResponse take_element_screenshot(String const& element_id) override;
|
virtual Messages::WebDriverClient::TakeElementScreenshotResponse take_element_screenshot(String const& element_id) override;
|
||||||
virtual Messages::WebDriverClient::PrintPageResponse print_page() override;
|
virtual Messages::WebDriverClient::PrintPageResponse print_page() override;
|
||||||
|
|
||||||
|
virtual Messages::WebDriverClient::EnsureTopLevelBrowsingContextIsOpenResponse ensure_top_level_browsing_context_is_open() override;
|
||||||
ErrorOr<void, Web::WebDriver::Error> ensure_open_top_level_browsing_context();
|
ErrorOr<void, Web::WebDriver::Error> ensure_open_top_level_browsing_context();
|
||||||
|
|
||||||
ErrorOr<void, Web::WebDriver::Error> handle_any_user_prompts();
|
ErrorOr<void, Web::WebDriver::Error> handle_any_user_prompts();
|
||||||
void restore_the_window();
|
void restore_the_window();
|
||||||
Gfx::IntRect maximize_the_window();
|
Gfx::IntRect maximize_the_window();
|
||||||
|
|
|
@ -290,7 +290,8 @@ Web::WebDriver::Response Client::get_window_handle(Web::WebDriver::Parameters pa
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/window");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/window");
|
||||||
auto session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
|
|
||||||
// FIXME: 1. If the current top-level browsing context is no longer open, return error with error code no such window.
|
// 1. If the current top-level browsing context is no longer open, return error with error code no such window.
|
||||||
|
TRY(session->web_content_connection().ensure_top_level_browsing_context_is_open());
|
||||||
|
|
||||||
// 2. Return success with data being the window handle associated with the current top-level browsing context.
|
// 2. Return success with data being the window handle associated with the current top-level browsing context.
|
||||||
return JsonValue { session->current_window_handle() };
|
return JsonValue { session->current_window_handle() };
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue