mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 04:27:44 +00:00
WebDriver: Reference-count WebDriver Session objects
When some WebDriver spec steps are implemented a bit more literally, we will end up in a situation where we remove a session from its client's active session map, but still have more steps to perform. Currently, when we remove the session, it is immediately destroyed because it is stored in an OwnPtr. Instead, we can store it as a RefPtr, which will let the caller to such steps keep the session alive until the subsequent steps are complete. While here, this also changes the storage of active sessions to a HashMap, as all lookups into it are currently a linear search.
This commit is contained in:
parent
7be8931ca0
commit
a0992c7731
3 changed files with 68 additions and 74 deletions
|
@ -18,7 +18,7 @@
|
||||||
namespace WebDriver {
|
namespace WebDriver {
|
||||||
|
|
||||||
Atomic<unsigned> Client::s_next_session_id;
|
Atomic<unsigned> Client::s_next_session_id;
|
||||||
Vector<NonnullOwnPtr<Session>> Client::s_sessions;
|
HashMap<unsigned, NonnullRefPtr<Session>> Client::s_sessions;
|
||||||
|
|
||||||
ErrorOr<NonnullRefPtr<Client>> Client::try_create(NonnullOwnPtr<Core::BufferedTCPSocket> socket, LaunchBrowserCallbacks callbacks, Core::Object* parent)
|
ErrorOr<NonnullRefPtr<Client>> Client::try_create(NonnullOwnPtr<Core::BufferedTCPSocket> socket, LaunchBrowserCallbacks callbacks, Core::Object* parent)
|
||||||
{
|
{
|
||||||
|
@ -37,41 +37,33 @@ Client::Client(NonnullOwnPtr<Core::BufferedTCPSocket> socket, LaunchBrowserCallb
|
||||||
|
|
||||||
Client::~Client() = default;
|
Client::~Client() = default;
|
||||||
|
|
||||||
ErrorOr<Session*, Web::WebDriver::Error> Client::find_session_with_id(StringView session_id)
|
ErrorOr<NonnullRefPtr<Session>, Web::WebDriver::Error> Client::find_session_with_id(StringView session_id)
|
||||||
{
|
{
|
||||||
auto session_id_or_error = session_id.to_uint<>();
|
auto session_id_or_error = session_id.to_uint<>();
|
||||||
if (!session_id_or_error.has_value())
|
if (!session_id_or_error.has_value())
|
||||||
return Web::WebDriver::Error::from_code(Web::WebDriver::ErrorCode::InvalidSessionId, "Invalid session id");
|
return Web::WebDriver::Error::from_code(Web::WebDriver::ErrorCode::InvalidSessionId, "Invalid session id");
|
||||||
|
|
||||||
for (auto& session : Client::s_sessions) {
|
if (auto session = s_sessions.get(*session_id_or_error); session.has_value())
|
||||||
if (session->session_id() == session_id_or_error.value())
|
return *session.release_value();
|
||||||
return session;
|
|
||||||
}
|
|
||||||
return Web::WebDriver::Error::from_code(Web::WebDriver::ErrorCode::InvalidSessionId, "Invalid session id");
|
return Web::WebDriver::Error::from_code(Web::WebDriver::ErrorCode::InvalidSessionId, "Invalid session id");
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorOr<NonnullOwnPtr<Session>, Web::WebDriver::Error> Client::take_session_with_id(StringView session_id)
|
ErrorOr<NonnullRefPtr<Session>, Web::WebDriver::Error> Client::take_session_with_id(StringView session_id)
|
||||||
{
|
{
|
||||||
auto session_id_or_error = session_id.to_uint<>();
|
auto session_id_or_error = session_id.to_uint<>();
|
||||||
if (!session_id_or_error.has_value())
|
if (!session_id_or_error.has_value())
|
||||||
return Web::WebDriver::Error::from_code(Web::WebDriver::ErrorCode::InvalidSessionId, "Invalid session id");
|
return Web::WebDriver::Error::from_code(Web::WebDriver::ErrorCode::InvalidSessionId, "Invalid session id");
|
||||||
|
|
||||||
for (size_t i = 0; i < Client::s_sessions.size(); ++i) {
|
if (auto session = s_sessions.take(*session_id_or_error); session.has_value())
|
||||||
if (Client::s_sessions[i]->session_id() == session_id_or_error.value()) {
|
return session.release_value();
|
||||||
return Client::s_sessions.take(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return Web::WebDriver::Error::from_code(Web::WebDriver::ErrorCode::InvalidSessionId, "Invalid session id");
|
return Web::WebDriver::Error::from_code(Web::WebDriver::ErrorCode::InvalidSessionId, "Invalid session id");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::close_session(unsigned session_id)
|
void Client::close_session(unsigned session_id)
|
||||||
{
|
{
|
||||||
bool found = Client::s_sessions.remove_first_matching([&](auto const& it) {
|
if (s_sessions.remove(session_id))
|
||||||
return it->session_id() == session_id;
|
|
||||||
});
|
|
||||||
|
|
||||||
if (found)
|
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Shut down session {}", session_id);
|
dbgln_if(WEBDRIVER_DEBUG, "Shut down session {}", session_id);
|
||||||
else
|
else
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Unable to shut down session {}: Not found", session_id);
|
dbgln_if(WEBDRIVER_DEBUG, "Unable to shut down session {}: Not found", session_id);
|
||||||
|
@ -156,7 +148,7 @@ Web::WebDriver::Response Client::new_session(Web::WebDriver::Parameters, JsonVal
|
||||||
|
|
||||||
// 7. Let session be a new session with the session ID of session id.
|
// 7. Let session be a new session with the session ID of session id.
|
||||||
Web::WebDriver::LadybirdOptions options { capabilities.as_object() };
|
Web::WebDriver::LadybirdOptions options { capabilities.as_object() };
|
||||||
auto session = make<Session>(session_id, *this, move(options));
|
auto session = make_ref_counted<Session>(session_id, *this, move(options));
|
||||||
|
|
||||||
if (auto start_result = session->start(m_callbacks); start_result.is_error())
|
if (auto start_result = session->start(m_callbacks); start_result.is_error())
|
||||||
return Web::WebDriver::Error::from_code(Web::WebDriver::ErrorCode::SessionNotCreated, DeprecatedString::formatted("Failed to start session: {}", start_result.error().string_literal()));
|
return Web::WebDriver::Error::from_code(Web::WebDriver::ErrorCode::SessionNotCreated, DeprecatedString::formatted("Failed to start session: {}", start_result.error().string_literal()));
|
||||||
|
@ -169,7 +161,7 @@ Web::WebDriver::Response Client::new_session(Web::WebDriver::Parameters, JsonVal
|
||||||
// with arguments session and capabilities.
|
// with arguments session and capabilities.
|
||||||
|
|
||||||
// 10. Append session to active sessions.
|
// 10. Append session to active sessions.
|
||||||
Client::s_sessions.append(move(session));
|
s_sessions.set(session_id, move(session));
|
||||||
|
|
||||||
// NOTE: We do step 12 before 11 because step 12 mutates the capabilities we set in step 11.
|
// NOTE: We do step 12 before 11 because step 12 mutates the capabilities we set in step 11.
|
||||||
|
|
||||||
|
@ -236,7 +228,7 @@ Web::WebDriver::Response Client::get_status(Web::WebDriver::Parameters, JsonValu
|
||||||
Web::WebDriver::Response Client::get_timeouts(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::get_timeouts(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session id>/timeouts");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session id>/timeouts");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().get_timeouts();
|
return session->web_content_connection().get_timeouts();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -245,7 +237,7 @@ Web::WebDriver::Response Client::get_timeouts(Web::WebDriver::Parameters paramet
|
||||||
Web::WebDriver::Response Client::set_timeouts(Web::WebDriver::Parameters parameters, JsonValue payload)
|
Web::WebDriver::Response Client::set_timeouts(Web::WebDriver::Parameters parameters, JsonValue payload)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session id>/timeouts");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session id>/timeouts");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().set_timeouts(payload);
|
return session->web_content_connection().set_timeouts(payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -254,7 +246,7 @@ Web::WebDriver::Response Client::set_timeouts(Web::WebDriver::Parameters paramet
|
||||||
Web::WebDriver::Response Client::navigate_to(Web::WebDriver::Parameters parameters, JsonValue payload)
|
Web::WebDriver::Response Client::navigate_to(Web::WebDriver::Parameters parameters, JsonValue payload)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/url");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/url");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().navigate_to(payload);
|
return session->web_content_connection().navigate_to(payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -263,7 +255,7 @@ Web::WebDriver::Response Client::navigate_to(Web::WebDriver::Parameters paramete
|
||||||
Web::WebDriver::Response Client::get_current_url(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::get_current_url(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/url");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/url");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().get_current_url();
|
return session->web_content_connection().get_current_url();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -272,7 +264,7 @@ Web::WebDriver::Response Client::get_current_url(Web::WebDriver::Parameters para
|
||||||
Web::WebDriver::Response Client::back(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::back(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/back");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/back");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().back();
|
return session->web_content_connection().back();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -281,7 +273,7 @@ Web::WebDriver::Response Client::back(Web::WebDriver::Parameters parameters, Jso
|
||||||
Web::WebDriver::Response Client::forward(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::forward(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/forward");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/forward");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().forward();
|
return session->web_content_connection().forward();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -290,7 +282,7 @@ Web::WebDriver::Response Client::forward(Web::WebDriver::Parameters parameters,
|
||||||
Web::WebDriver::Response Client::refresh(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::refresh(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/refresh");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/refresh");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().refresh();
|
return session->web_content_connection().refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -299,7 +291,7 @@ Web::WebDriver::Response Client::refresh(Web::WebDriver::Parameters parameters,
|
||||||
Web::WebDriver::Response Client::get_title(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::get_title(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/title");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/title");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().get_title();
|
return session->web_content_connection().get_title();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -308,7 +300,7 @@ Web::WebDriver::Response Client::get_title(Web::WebDriver::Parameters parameters
|
||||||
Web::WebDriver::Response Client::get_window_handle(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::get_window_handle(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
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.
|
// FIXME: 1. If the current top-level browsing context is no longer open, return error with error code no such window.
|
||||||
|
|
||||||
|
@ -321,7 +313,7 @@ Web::WebDriver::Response Client::get_window_handle(Web::WebDriver::Parameters pa
|
||||||
Web::WebDriver::Response Client::close_window(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::close_window(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling DELETE /session/<session_id>/window");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling DELETE /session/<session_id>/window");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->close_window();
|
return session->close_window();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -330,7 +322,7 @@ Web::WebDriver::Response Client::close_window(Web::WebDriver::Parameters paramet
|
||||||
Web::WebDriver::Response Client::switch_to_window(Web::WebDriver::Parameters parameters, AK::JsonValue payload)
|
Web::WebDriver::Response Client::switch_to_window(Web::WebDriver::Parameters parameters, AK::JsonValue payload)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/window");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/window");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
|
|
||||||
if (!payload.is_object())
|
if (!payload.is_object())
|
||||||
return Web::WebDriver::Error::from_code(Web::WebDriver::ErrorCode::InvalidArgument, "Payload is not a JSON object");
|
return Web::WebDriver::Error::from_code(Web::WebDriver::ErrorCode::InvalidArgument, "Payload is not a JSON object");
|
||||||
|
@ -350,7 +342,7 @@ Web::WebDriver::Response Client::switch_to_window(Web::WebDriver::Parameters par
|
||||||
Web::WebDriver::Response Client::get_window_handles(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::get_window_handles(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/window/handles");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/window/handles");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->get_window_handles();
|
return session->get_window_handles();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -359,7 +351,7 @@ Web::WebDriver::Response Client::get_window_handles(Web::WebDriver::Parameters p
|
||||||
Web::WebDriver::Response Client::get_window_rect(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::get_window_rect(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/window/rect");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/window/rect");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().get_window_rect();
|
return session->web_content_connection().get_window_rect();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -368,7 +360,7 @@ Web::WebDriver::Response Client::get_window_rect(Web::WebDriver::Parameters para
|
||||||
Web::WebDriver::Response Client::set_window_rect(Web::WebDriver::Parameters parameters, JsonValue payload)
|
Web::WebDriver::Response Client::set_window_rect(Web::WebDriver::Parameters parameters, JsonValue payload)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/window/rect");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/window/rect");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().set_window_rect(payload);
|
return session->web_content_connection().set_window_rect(payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -377,7 +369,7 @@ Web::WebDriver::Response Client::set_window_rect(Web::WebDriver::Parameters para
|
||||||
Web::WebDriver::Response Client::maximize_window(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::maximize_window(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/window/maximize");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/window/maximize");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().maximize_window();
|
return session->web_content_connection().maximize_window();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -386,7 +378,7 @@ Web::WebDriver::Response Client::maximize_window(Web::WebDriver::Parameters para
|
||||||
Web::WebDriver::Response Client::minimize_window(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::minimize_window(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/window/minimize");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/window/minimize");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().minimize_window();
|
return session->web_content_connection().minimize_window();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -395,7 +387,7 @@ Web::WebDriver::Response Client::minimize_window(Web::WebDriver::Parameters para
|
||||||
Web::WebDriver::Response Client::fullscreen_window(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::fullscreen_window(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/window/fullscreen");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/window/fullscreen");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().fullscreen_window();
|
return session->web_content_connection().fullscreen_window();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -404,7 +396,7 @@ Web::WebDriver::Response Client::fullscreen_window(Web::WebDriver::Parameters pa
|
||||||
Web::WebDriver::Response Client::find_element(Web::WebDriver::Parameters parameters, JsonValue payload)
|
Web::WebDriver::Response Client::find_element(Web::WebDriver::Parameters parameters, JsonValue payload)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/element");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/element");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().find_element(payload);
|
return session->web_content_connection().find_element(payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -413,7 +405,7 @@ Web::WebDriver::Response Client::find_element(Web::WebDriver::Parameters paramet
|
||||||
Web::WebDriver::Response Client::find_elements(Web::WebDriver::Parameters parameters, JsonValue payload)
|
Web::WebDriver::Response Client::find_elements(Web::WebDriver::Parameters parameters, JsonValue payload)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/elements");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/elements");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().find_elements(payload);
|
return session->web_content_connection().find_elements(payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -422,7 +414,7 @@ Web::WebDriver::Response Client::find_elements(Web::WebDriver::Parameters parame
|
||||||
Web::WebDriver::Response Client::find_element_from_element(Web::WebDriver::Parameters parameters, JsonValue payload)
|
Web::WebDriver::Response Client::find_element_from_element(Web::WebDriver::Parameters parameters, JsonValue payload)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/element/<element_id>/element");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/element/<element_id>/element");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().find_element_from_element(payload, move(parameters[1]));
|
return session->web_content_connection().find_element_from_element(payload, move(parameters[1]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -431,7 +423,7 @@ Web::WebDriver::Response Client::find_element_from_element(Web::WebDriver::Param
|
||||||
Web::WebDriver::Response Client::find_elements_from_element(Web::WebDriver::Parameters parameters, JsonValue payload)
|
Web::WebDriver::Response Client::find_elements_from_element(Web::WebDriver::Parameters parameters, JsonValue payload)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/element/<element_id>/elements");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/element/<element_id>/elements");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().find_elements_from_element(payload, move(parameters[1]));
|
return session->web_content_connection().find_elements_from_element(payload, move(parameters[1]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -440,7 +432,7 @@ Web::WebDriver::Response Client::find_elements_from_element(Web::WebDriver::Para
|
||||||
Web::WebDriver::Response Client::find_element_from_shadow_root(Web::WebDriver::Parameters parameters, JsonValue payload)
|
Web::WebDriver::Response Client::find_element_from_shadow_root(Web::WebDriver::Parameters parameters, JsonValue payload)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/shadow/<shadow_id>/element");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/shadow/<shadow_id>/element");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().find_element_from_shadow_root(payload, move(parameters[1]));
|
return session->web_content_connection().find_element_from_shadow_root(payload, move(parameters[1]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -449,7 +441,7 @@ Web::WebDriver::Response Client::find_element_from_shadow_root(Web::WebDriver::P
|
||||||
Web::WebDriver::Response Client::find_elements_from_shadow_root(Web::WebDriver::Parameters parameters, JsonValue payload)
|
Web::WebDriver::Response Client::find_elements_from_shadow_root(Web::WebDriver::Parameters parameters, JsonValue payload)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/shadow/<shadow_id>/elements");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/shadow/<shadow_id>/elements");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().find_elements_from_shadow_root(payload, move(parameters[1]));
|
return session->web_content_connection().find_elements_from_shadow_root(payload, move(parameters[1]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -458,7 +450,7 @@ Web::WebDriver::Response Client::find_elements_from_shadow_root(Web::WebDriver::
|
||||||
Web::WebDriver::Response Client::get_active_element(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::get_active_element(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/element/active");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/element/active");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().get_active_element();
|
return session->web_content_connection().get_active_element();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -467,7 +459,7 @@ Web::WebDriver::Response Client::get_active_element(Web::WebDriver::Parameters p
|
||||||
Web::WebDriver::Response Client::get_element_shadow_root(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::get_element_shadow_root(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/element/<element_id>/shadow");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/element/<element_id>/shadow");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().get_element_shadow_root(move(parameters[1]));
|
return session->web_content_connection().get_element_shadow_root(move(parameters[1]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -476,7 +468,7 @@ Web::WebDriver::Response Client::get_element_shadow_root(Web::WebDriver::Paramet
|
||||||
Web::WebDriver::Response Client::is_element_selected(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::is_element_selected(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/element/<element_id>/selected");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/element/<element_id>/selected");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().is_element_selected(move(parameters[1]));
|
return session->web_content_connection().is_element_selected(move(parameters[1]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -485,7 +477,7 @@ Web::WebDriver::Response Client::is_element_selected(Web::WebDriver::Parameters
|
||||||
Web::WebDriver::Response Client::get_element_attribute(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::get_element_attribute(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/element/<element_id>/attribute/<name>");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/element/<element_id>/attribute/<name>");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().get_element_attribute(move(parameters[1]), move(parameters[2]));
|
return session->web_content_connection().get_element_attribute(move(parameters[1]), move(parameters[2]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -494,7 +486,7 @@ Web::WebDriver::Response Client::get_element_attribute(Web::WebDriver::Parameter
|
||||||
Web::WebDriver::Response Client::get_element_property(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::get_element_property(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/element/<element_id>/property/<name>");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/element/<element_id>/property/<name>");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().get_element_property(move(parameters[1]), move(parameters[2]));
|
return session->web_content_connection().get_element_property(move(parameters[1]), move(parameters[2]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -503,7 +495,7 @@ Web::WebDriver::Response Client::get_element_property(Web::WebDriver::Parameters
|
||||||
Web::WebDriver::Response Client::get_element_css_value(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::get_element_css_value(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/element/<element_id>/css/<property_name>");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/element/<element_id>/css/<property_name>");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().get_element_css_value(move(parameters[1]), move(parameters[2]));
|
return session->web_content_connection().get_element_css_value(move(parameters[1]), move(parameters[2]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -512,7 +504,7 @@ Web::WebDriver::Response Client::get_element_css_value(Web::WebDriver::Parameter
|
||||||
Web::WebDriver::Response Client::get_element_text(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::get_element_text(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/element/<element_id>/text");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/element/<element_id>/text");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().get_element_text(move(parameters[1]));
|
return session->web_content_connection().get_element_text(move(parameters[1]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -521,7 +513,7 @@ Web::WebDriver::Response Client::get_element_text(Web::WebDriver::Parameters par
|
||||||
Web::WebDriver::Response Client::get_element_tag_name(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::get_element_tag_name(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/element/<element_id>/name");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/element/<element_id>/name");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().get_element_tag_name(move(parameters[1]));
|
return session->web_content_connection().get_element_tag_name(move(parameters[1]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -530,7 +522,7 @@ Web::WebDriver::Response Client::get_element_tag_name(Web::WebDriver::Parameters
|
||||||
Web::WebDriver::Response Client::get_element_rect(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::get_element_rect(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/element/<element_id>/rect");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/element/<element_id>/rect");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().get_element_rect(move(parameters[1]));
|
return session->web_content_connection().get_element_rect(move(parameters[1]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -539,7 +531,7 @@ Web::WebDriver::Response Client::get_element_rect(Web::WebDriver::Parameters par
|
||||||
Web::WebDriver::Response Client::is_element_enabled(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::is_element_enabled(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/element/<element_id>/enabled");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/element/<element_id>/enabled");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().is_element_enabled(move(parameters[1]));
|
return session->web_content_connection().is_element_enabled(move(parameters[1]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -548,7 +540,7 @@ Web::WebDriver::Response Client::is_element_enabled(Web::WebDriver::Parameters p
|
||||||
Web::WebDriver::Response Client::get_computed_role(Web::WebDriver::Parameters parameters, AK::JsonValue)
|
Web::WebDriver::Response Client::get_computed_role(Web::WebDriver::Parameters parameters, AK::JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session id>/element/<element id>/computedrole");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session id>/element/<element id>/computedrole");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().get_computed_role(move(parameters[1]));
|
return session->web_content_connection().get_computed_role(move(parameters[1]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -557,7 +549,7 @@ Web::WebDriver::Response Client::get_computed_role(Web::WebDriver::Parameters pa
|
||||||
Web::WebDriver::Response Client::get_computed_label(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::get_computed_label(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session id>/element/<element id>/computedlabel");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session id>/element/<element id>/computedlabel");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().get_computed_label(move(parameters[1]));
|
return session->web_content_connection().get_computed_label(move(parameters[1]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -566,7 +558,7 @@ Web::WebDriver::Response Client::get_computed_label(Web::WebDriver::Parameters p
|
||||||
Web::WebDriver::Response Client::element_click(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::element_click(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/element/<element_id>/click");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/element/<element_id>/click");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().element_click(move(parameters[1]));
|
return session->web_content_connection().element_click(move(parameters[1]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -575,7 +567,7 @@ Web::WebDriver::Response Client::element_click(Web::WebDriver::Parameters parame
|
||||||
Web::WebDriver::Response Client::get_source(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::get_source(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/source");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/source");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().get_source();
|
return session->web_content_connection().get_source();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -584,7 +576,7 @@ Web::WebDriver::Response Client::get_source(Web::WebDriver::Parameters parameter
|
||||||
Web::WebDriver::Response Client::execute_script(Web::WebDriver::Parameters parameters, JsonValue payload)
|
Web::WebDriver::Response Client::execute_script(Web::WebDriver::Parameters parameters, JsonValue payload)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/execute/sync");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/execute/sync");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().execute_script(payload);
|
return session->web_content_connection().execute_script(payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -593,7 +585,7 @@ Web::WebDriver::Response Client::execute_script(Web::WebDriver::Parameters param
|
||||||
Web::WebDriver::Response Client::execute_async_script(Web::WebDriver::Parameters parameters, JsonValue payload)
|
Web::WebDriver::Response Client::execute_async_script(Web::WebDriver::Parameters parameters, JsonValue payload)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/execute/async");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/execute/async");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().execute_async_script(payload);
|
return session->web_content_connection().execute_async_script(payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -602,7 +594,7 @@ Web::WebDriver::Response Client::execute_async_script(Web::WebDriver::Parameters
|
||||||
Web::WebDriver::Response Client::get_all_cookies(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::get_all_cookies(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/cookie");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/cookie");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().get_all_cookies();
|
return session->web_content_connection().get_all_cookies();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -611,7 +603,7 @@ Web::WebDriver::Response Client::get_all_cookies(Web::WebDriver::Parameters para
|
||||||
Web::WebDriver::Response Client::get_named_cookie(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::get_named_cookie(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/cookie/<name>");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/cookie/<name>");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().get_named_cookie(move(parameters[1]));
|
return session->web_content_connection().get_named_cookie(move(parameters[1]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -620,7 +612,7 @@ Web::WebDriver::Response Client::get_named_cookie(Web::WebDriver::Parameters par
|
||||||
Web::WebDriver::Response Client::add_cookie(Web::WebDriver::Parameters parameters, JsonValue payload)
|
Web::WebDriver::Response Client::add_cookie(Web::WebDriver::Parameters parameters, JsonValue payload)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/cookie");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/cookie");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().add_cookie(payload);
|
return session->web_content_connection().add_cookie(payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -629,7 +621,7 @@ Web::WebDriver::Response Client::add_cookie(Web::WebDriver::Parameters parameter
|
||||||
Web::WebDriver::Response Client::delete_cookie(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::delete_cookie(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling DELETE /session/<session_id>/cookie/<name>");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling DELETE /session/<session_id>/cookie/<name>");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().delete_cookie(move(parameters[1]));
|
return session->web_content_connection().delete_cookie(move(parameters[1]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -638,7 +630,7 @@ Web::WebDriver::Response Client::delete_cookie(Web::WebDriver::Parameters parame
|
||||||
Web::WebDriver::Response Client::delete_all_cookies(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::delete_all_cookies(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling DELETE /session/<session_id>/cookie");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling DELETE /session/<session_id>/cookie");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().delete_all_cookies();
|
return session->web_content_connection().delete_all_cookies();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -647,7 +639,7 @@ Web::WebDriver::Response Client::delete_all_cookies(Web::WebDriver::Parameters p
|
||||||
Web::WebDriver::Response Client::dismiss_alert(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::dismiss_alert(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/alert/dismiss");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/alert/dismiss");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().dismiss_alert();
|
return session->web_content_connection().dismiss_alert();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -656,7 +648,7 @@ Web::WebDriver::Response Client::dismiss_alert(Web::WebDriver::Parameters parame
|
||||||
Web::WebDriver::Response Client::accept_alert(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::accept_alert(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/alert/accept");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/alert/accept");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().accept_alert();
|
return session->web_content_connection().accept_alert();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -665,7 +657,7 @@ Web::WebDriver::Response Client::accept_alert(Web::WebDriver::Parameters paramet
|
||||||
Web::WebDriver::Response Client::get_alert_text(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::get_alert_text(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/alert/text");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/alert/text");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().get_alert_text();
|
return session->web_content_connection().get_alert_text();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -674,7 +666,7 @@ Web::WebDriver::Response Client::get_alert_text(Web::WebDriver::Parameters param
|
||||||
Web::WebDriver::Response Client::send_alert_text(Web::WebDriver::Parameters parameters, JsonValue payload)
|
Web::WebDriver::Response Client::send_alert_text(Web::WebDriver::Parameters parameters, JsonValue payload)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/alert/text");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session_id>/alert/text");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().send_alert_text(payload);
|
return session->web_content_connection().send_alert_text(payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -683,7 +675,7 @@ Web::WebDriver::Response Client::send_alert_text(Web::WebDriver::Parameters para
|
||||||
Web::WebDriver::Response Client::take_screenshot(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::take_screenshot(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/screenshot");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/screenshot");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().take_screenshot();
|
return session->web_content_connection().take_screenshot();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -692,7 +684,7 @@ Web::WebDriver::Response Client::take_screenshot(Web::WebDriver::Parameters para
|
||||||
Web::WebDriver::Response Client::take_element_screenshot(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::take_element_screenshot(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/element/<element_id>/screenshot");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling GET /session/<session_id>/element/<element_id>/screenshot");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().take_element_screenshot(move(parameters[1]));
|
return session->web_content_connection().take_element_screenshot(move(parameters[1]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -701,7 +693,7 @@ Web::WebDriver::Response Client::take_element_screenshot(Web::WebDriver::Paramet
|
||||||
Web::WebDriver::Response Client::print_page(Web::WebDriver::Parameters parameters, JsonValue)
|
Web::WebDriver::Response Client::print_page(Web::WebDriver::Parameters parameters, JsonValue)
|
||||||
{
|
{
|
||||||
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session id>/print");
|
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session id>/print");
|
||||||
auto* session = TRY(find_session_with_id(parameters[0]));
|
auto session = TRY(find_session_with_id(parameters[0]));
|
||||||
return session->web_content_connection().print_page();
|
return session->web_content_connection().print_page();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <AK/Function.h>
|
#include <AK/Function.h>
|
||||||
|
#include <AK/NonnullRefPtr.h>
|
||||||
#include <LibCore/Object.h>
|
#include <LibCore/Object.h>
|
||||||
#include <LibWeb/WebDriver/Client.h>
|
#include <LibWeb/WebDriver/Client.h>
|
||||||
#include <LibWeb/WebDriver/Error.h>
|
#include <LibWeb/WebDriver/Error.h>
|
||||||
|
@ -34,8 +35,8 @@ public:
|
||||||
private:
|
private:
|
||||||
Client(NonnullOwnPtr<Core::BufferedTCPSocket>, LaunchBrowserCallbacks, Core::Object* parent);
|
Client(NonnullOwnPtr<Core::BufferedTCPSocket>, LaunchBrowserCallbacks, Core::Object* parent);
|
||||||
|
|
||||||
ErrorOr<Session*, Web::WebDriver::Error> find_session_with_id(StringView session_id);
|
ErrorOr<NonnullRefPtr<Session>, Web::WebDriver::Error> find_session_with_id(StringView session_id);
|
||||||
ErrorOr<NonnullOwnPtr<Session>, Web::WebDriver::Error> take_session_with_id(StringView session_id);
|
ErrorOr<NonnullRefPtr<Session>, Web::WebDriver::Error> take_session_with_id(StringView session_id);
|
||||||
|
|
||||||
virtual Web::WebDriver::Response new_session(Web::WebDriver::Parameters parameters, JsonValue payload) override;
|
virtual Web::WebDriver::Response new_session(Web::WebDriver::Parameters parameters, JsonValue payload) override;
|
||||||
virtual Web::WebDriver::Response delete_session(Web::WebDriver::Parameters parameters, JsonValue payload) override;
|
virtual Web::WebDriver::Response delete_session(Web::WebDriver::Parameters parameters, JsonValue payload) override;
|
||||||
|
@ -92,7 +93,7 @@ private:
|
||||||
virtual Web::WebDriver::Response take_element_screenshot(Web::WebDriver::Parameters parameters, JsonValue payload) override;
|
virtual Web::WebDriver::Response take_element_screenshot(Web::WebDriver::Parameters parameters, JsonValue payload) override;
|
||||||
virtual Web::WebDriver::Response print_page(Web::WebDriver::Parameters parameters, JsonValue payload) override;
|
virtual Web::WebDriver::Response print_page(Web::WebDriver::Parameters parameters, JsonValue payload) override;
|
||||||
|
|
||||||
static Vector<NonnullOwnPtr<Session>> s_sessions;
|
static HashMap<unsigned, NonnullRefPtr<Session>> s_sessions;
|
||||||
static Atomic<unsigned> s_next_session_id;
|
static Atomic<unsigned> s_next_session_id;
|
||||||
|
|
||||||
LaunchBrowserCallbacks m_callbacks;
|
LaunchBrowserCallbacks m_callbacks;
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <AK/Error.h>
|
#include <AK/Error.h>
|
||||||
|
#include <AK/RefCounted.h>
|
||||||
#include <AK/RefPtr.h>
|
#include <AK/RefPtr.h>
|
||||||
#include <AK/String.h>
|
#include <AK/String.h>
|
||||||
#include <LibCore/Promise.h>
|
#include <LibCore/Promise.h>
|
||||||
|
@ -22,7 +23,7 @@ namespace WebDriver {
|
||||||
|
|
||||||
struct LaunchBrowserCallbacks;
|
struct LaunchBrowserCallbacks;
|
||||||
|
|
||||||
class Session {
|
class Session : public RefCounted<Session> {
|
||||||
public:
|
public:
|
||||||
Session(unsigned session_id, NonnullRefPtr<Client> client, Web::WebDriver::LadybirdOptions options);
|
Session(unsigned session_id, NonnullRefPtr<Client> client, Web::WebDriver::LadybirdOptions options);
|
||||||
~Session();
|
~Session();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue