WebDriver: Implement stub for /session/{id}/print

This commit is contained in:
Baitinq 2022-11-27 00:30:03 +01:00 committed by Linus Groh
parent a1c1ab5f8d
commit 02a2018ec4
Notes: sideshowbarker 2024-07-17 04:00:53 +09:00
7 changed files with 23 additions and 0 deletions

View file

@ -99,6 +99,7 @@ static constexpr auto s_webdriver_endpoints = Array {
ROUTE(POST, "/session/:session_id/alert/text"sv, send_alert_text),
ROUTE(GET, "/session/:session_id/screenshot"sv, take_screenshot),
ROUTE(GET, "/session/:session_id/element/:element_id/screenshot"sv, take_element_screenshot),
ROUTE(POST, "/session/:session_id/print"sv, print_page),
};
// https://w3c.github.io/webdriver/#dfn-match-a-request

View file

@ -96,6 +96,9 @@ public:
virtual Response take_screenshot(Parameters parameters, JsonValue payload) = 0;
virtual Response take_element_screenshot(Parameters parameters, JsonValue payload) = 0;
// 18. Print, https://w3c.github.io/webdriver/#print
virtual Response print_page(Parameters parameters, JsonValue payload) = 0;
protected:
Client(NonnullOwnPtr<Core::Stream::BufferedTCPSocket>, Core::Object* parent);

View file

@ -53,4 +53,5 @@ endpoint WebDriverClient {
send_alert_text(JsonValue payload) => (Web::WebDriver::Response response)
take_screenshot() => (Web::WebDriver::Response response)
take_element_screenshot(String element_id) => (Web::WebDriver::Response response)
print_page() => (Web::WebDriver::Response response)
}

View file

@ -1533,6 +1533,13 @@ Messages::WebDriverClient::TakeElementScreenshotResponse WebDriverConnection::ta
return encoded_string;
}
// 18.1 Print Page, https://w3c.github.io/webdriver/#dfn-print-page
Messages::WebDriverClient::PrintPageResponse WebDriverConnection::print_page()
{
// FIXME: Actually implement this :^)
return Web::WebDriver::Error::from_code(Web::WebDriver::ErrorCode::UnsupportedOperation, "Print not implemented"sv);
}
// https://w3c.github.io/webdriver/#dfn-no-longer-open
ErrorOr<void, Web::WebDriver::Error> WebDriverConnection::ensure_open_top_level_browsing_context()
{

View file

@ -88,6 +88,7 @@ private:
virtual Messages::WebDriverClient::SendAlertTextResponse send_alert_text(JsonValue const& payload) override;
virtual Messages::WebDriverClient::TakeScreenshotResponse take_screenshot() override;
virtual Messages::WebDriverClient::TakeElementScreenshotResponse take_element_screenshot(String const& element_id) override;
virtual Messages::WebDriverClient::PrintPageResponse print_page() override;
ErrorOr<void, Web::WebDriver::Error> ensure_open_top_level_browsing_context();
ErrorOr<void, Web::WebDriver::Error> handle_any_user_prompts();

View file

@ -646,4 +646,13 @@ Web::WebDriver::Response Client::take_element_screenshot(Web::WebDriver::Paramet
return session->web_content_connection().take_element_screenshot(parameters[1]);
}
// 18.1 Print Page, https://w3c.github.io/webdriver/#dfn-print-page
// POST /session/{session id}/print
Web::WebDriver::Response Client::print_page(Web::WebDriver::Parameters parameters, JsonValue)
{
dbgln_if(WEBDRIVER_DEBUG, "Handling POST /session/<session id>/print");
auto* session = TRY(find_session_with_id(parameters[0]));
return session->web_content_connection().print_page();
}
}

View file

@ -82,6 +82,7 @@ private:
virtual Web::WebDriver::Response send_alert_text(Web::WebDriver::Parameters parameters, JsonValue payload) override;
virtual Web::WebDriver::Response take_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;
static NonnullOwnPtrVector<Session> s_sessions;
static Atomic<unsigned> s_next_session_id;