diff --git a/Userland/Services/WebDriver/Client.cpp b/Userland/Services/WebDriver/Client.cpp index fe3844b102..92314bcfd8 100644 --- a/Userland/Services/WebDriver/Client.cpp +++ b/Userland/Services/WebDriver/Client.cpp @@ -533,13 +533,9 @@ ErrorOr Client::handle_get_window_handle(Vector/window"); auto* session = TRY(find_session_with_id(parameters[0])); - // 1. If the current top-level browsing context is no longer open, return error with error code no such window. - auto current_window = session->get_window_object(); - if (!current_window.has_value()) - return HttpError { 404, "no such window", "Window not found" }; - - // 2. Return success with data being the window handle associated with the current top-level browsing context. - return make_json_value(session->current_window_handle()); + // NOTE: Spec steps handled in Session::get_title(). + auto result = TRY(session->get_window_handle()); + return make_json_value(result); } // 11.2 Close Window, https://w3c.github.io/webdriver/#dfn-close-window diff --git a/Userland/Services/WebDriver/Session.cpp b/Userland/Services/WebDriver/Session.cpp index 52265574d5..ad059426ed 100644 --- a/Userland/Services/WebDriver/Session.cpp +++ b/Userland/Services/WebDriver/Session.cpp @@ -235,6 +235,18 @@ ErrorOr Session::get_title() return JsonValue(m_browser_connection->get_title()); } +// 11.1 Get Window Handle, https://w3c.github.io/webdriver/#get-window-handle +ErrorOr Session::get_window_handle() +{ + // 1. If the current top-level browsing context is no longer open, return error with error code no such window. + auto current_window = get_window_object(); + if (!current_window.has_value()) + return HttpError { 404, "no such window", "Window not found" }; + + // 2. Return success with data being the window handle associated with the current top-level browsing context. + return m_current_window_handle; +} + // 11.2 Close Window, https://w3c.github.io/webdriver/#dfn-close-window ErrorOr> Session::close_window() { diff --git a/Userland/Services/WebDriver/Session.h b/Userland/Services/WebDriver/Session.h index 3cf85cee47..2f09319fbf 100644 --- a/Userland/Services/WebDriver/Session.h +++ b/Userland/Services/WebDriver/Session.h @@ -47,6 +47,7 @@ public: ErrorOr forward(); ErrorOr refresh(); ErrorOr get_title(); + ErrorOr get_window_handle(); ErrorOr find_element(JsonValue const& payload); ErrorOr find_elements(JsonValue const& payload); ErrorOr find_element_from_element(JsonValue const& payload, StringView parameter_element_id);