mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 02:27:43 +00:00
WebContent+WebDriver: Get window handle from WebContent process
This change makes window handles on WebDriver process side be consistent with handles returned by /window/new.
This commit is contained in:
parent
f287165823
commit
126fa7df14
5 changed files with 11 additions and 5 deletions
|
@ -15,6 +15,7 @@ endpoint WebDriverClient {
|
||||||
forward() => (Web::WebDriver::Response response)
|
forward() => (Web::WebDriver::Response response)
|
||||||
refresh() => (Web::WebDriver::Response response)
|
refresh() => (Web::WebDriver::Response response)
|
||||||
get_title() => (Web::WebDriver::Response response)
|
get_title() => (Web::WebDriver::Response response)
|
||||||
|
get_window_handle() => (String handle)
|
||||||
close_window() => (Web::WebDriver::Response response)
|
close_window() => (Web::WebDriver::Response response)
|
||||||
new_window(JsonValue payload) => (Web::WebDriver::Response response)
|
new_window(JsonValue payload) => (Web::WebDriver::Response response)
|
||||||
get_window_rect() => (Web::WebDriver::Response response)
|
get_window_rect() => (Web::WebDriver::Response response)
|
||||||
|
|
|
@ -522,6 +522,12 @@ Messages::WebDriverClient::GetTitleResponse WebDriverConnection::get_title()
|
||||||
return title;
|
return title;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 11.1 Get Window Handle, https://w3c.github.io/webdriver/#get-window-handle
|
||||||
|
Messages::WebDriverClient::GetWindowHandleResponse WebDriverConnection::get_window_handle()
|
||||||
|
{
|
||||||
|
return m_page_client.page().top_level_browsing_context().window_handle();
|
||||||
|
}
|
||||||
|
|
||||||
// 11.2 Close Window, https://w3c.github.io/webdriver/#dfn-close-window
|
// 11.2 Close Window, https://w3c.github.io/webdriver/#dfn-close-window
|
||||||
Messages::WebDriverClient::CloseWindowResponse WebDriverConnection::close_window()
|
Messages::WebDriverClient::CloseWindowResponse WebDriverConnection::close_window()
|
||||||
{
|
{
|
||||||
|
|
|
@ -52,6 +52,7 @@ private:
|
||||||
virtual Messages::WebDriverClient::ForwardResponse forward() override;
|
virtual Messages::WebDriverClient::ForwardResponse forward() override;
|
||||||
virtual Messages::WebDriverClient::RefreshResponse refresh() override;
|
virtual Messages::WebDriverClient::RefreshResponse refresh() override;
|
||||||
virtual Messages::WebDriverClient::GetTitleResponse get_title() override;
|
virtual Messages::WebDriverClient::GetTitleResponse get_title() override;
|
||||||
|
virtual Messages::WebDriverClient::GetWindowHandleResponse get_window_handle() override;
|
||||||
virtual Messages::WebDriverClient::CloseWindowResponse close_window() override;
|
virtual Messages::WebDriverClient::CloseWindowResponse close_window() override;
|
||||||
virtual Messages::WebDriverClient::NewWindowResponse new_window(JsonValue const& payload) override;
|
virtual Messages::WebDriverClient::NewWindowResponse new_window(JsonValue const& payload) override;
|
||||||
virtual Messages::WebDriverClient::GetWindowRectResponse get_window_rect() override;
|
virtual Messages::WebDriverClient::GetWindowRectResponse get_window_rect() override;
|
||||||
|
|
|
@ -50,12 +50,11 @@ ErrorOr<NonnullRefPtr<Core::LocalServer>> Session::create_server(NonnullRefPtr<S
|
||||||
dbgln("WebDriver is connected to WebContent socket");
|
dbgln("WebDriver is connected to WebContent socket");
|
||||||
auto web_content_connection = maybe_connection.release_value();
|
auto web_content_connection = maybe_connection.release_value();
|
||||||
|
|
||||||
auto handle_name = String::formatted("window-{}"sv, m_next_handle_id).release_value_but_fixme_should_propagate_errors();
|
auto window_handle = web_content_connection->get_window_handle();
|
||||||
m_next_handle_id++;
|
m_windows.set(window_handle, Session::Window { window_handle, move(web_content_connection) });
|
||||||
m_windows.set(handle_name, Session::Window { handle_name, move(web_content_connection) });
|
|
||||||
|
|
||||||
if (m_current_window_handle.is_empty())
|
if (m_current_window_handle.is_empty())
|
||||||
m_current_window_handle = handle_name;
|
m_current_window_handle = window_handle;
|
||||||
|
|
||||||
MUST(promise->resolve({}));
|
MUST(promise->resolve({}));
|
||||||
};
|
};
|
||||||
|
|
|
@ -64,7 +64,6 @@ private:
|
||||||
bool m_started { false };
|
bool m_started { false };
|
||||||
unsigned m_id { 0 };
|
unsigned m_id { 0 };
|
||||||
|
|
||||||
unsigned m_next_handle_id = 0;
|
|
||||||
HashMap<String, Window> m_windows;
|
HashMap<String, Window> m_windows;
|
||||||
String m_current_window_handle;
|
String m_current_window_handle;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue