From 02a2018ec4a60c1002988cb7521f963fcd498ed5 Mon Sep 17 00:00:00 2001 From: Baitinq Date: Sun, 27 Nov 2022 00:30:03 +0100 Subject: [PATCH] WebDriver: Implement stub for /session/{id}/print --- Userland/Libraries/LibWeb/WebDriver/Client.cpp | 1 + Userland/Libraries/LibWeb/WebDriver/Client.h | 3 +++ Userland/Services/WebContent/WebDriverClient.ipc | 1 + Userland/Services/WebContent/WebDriverConnection.cpp | 7 +++++++ Userland/Services/WebContent/WebDriverConnection.h | 1 + Userland/Services/WebDriver/Client.cpp | 9 +++++++++ Userland/Services/WebDriver/Client.h | 1 + 7 files changed, 23 insertions(+) diff --git a/Userland/Libraries/LibWeb/WebDriver/Client.cpp b/Userland/Libraries/LibWeb/WebDriver/Client.cpp index dc69f66683..1024fde061 100644 --- a/Userland/Libraries/LibWeb/WebDriver/Client.cpp +++ b/Userland/Libraries/LibWeb/WebDriver/Client.cpp @@ -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 diff --git a/Userland/Libraries/LibWeb/WebDriver/Client.h b/Userland/Libraries/LibWeb/WebDriver/Client.h index db1f96d2e5..f170246def 100644 --- a/Userland/Libraries/LibWeb/WebDriver/Client.h +++ b/Userland/Libraries/LibWeb/WebDriver/Client.h @@ -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::Object* parent); diff --git a/Userland/Services/WebContent/WebDriverClient.ipc b/Userland/Services/WebContent/WebDriverClient.ipc index 41cf2401e8..adb4d4f150 100644 --- a/Userland/Services/WebContent/WebDriverClient.ipc +++ b/Userland/Services/WebContent/WebDriverClient.ipc @@ -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) } diff --git a/Userland/Services/WebContent/WebDriverConnection.cpp b/Userland/Services/WebContent/WebDriverConnection.cpp index 9adfae7cad..a4f60e0888 100644 --- a/Userland/Services/WebContent/WebDriverConnection.cpp +++ b/Userland/Services/WebContent/WebDriverConnection.cpp @@ -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 WebDriverConnection::ensure_open_top_level_browsing_context() { diff --git a/Userland/Services/WebContent/WebDriverConnection.h b/Userland/Services/WebContent/WebDriverConnection.h index a09a8b51ed..c66e7c19be 100644 --- a/Userland/Services/WebContent/WebDriverConnection.h +++ b/Userland/Services/WebContent/WebDriverConnection.h @@ -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 ensure_open_top_level_browsing_context(); ErrorOr handle_any_user_prompts(); diff --git a/Userland/Services/WebDriver/Client.cpp b/Userland/Services/WebDriver/Client.cpp index 66fe5a33a7..c3023386ae 100644 --- a/Userland/Services/WebDriver/Client.cpp +++ b/Userland/Services/WebDriver/Client.cpp @@ -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//print"); + auto* session = TRY(find_session_with_id(parameters[0])); + return session->web_content_connection().print_page(); +} + } diff --git a/Userland/Services/WebDriver/Client.h b/Userland/Services/WebDriver/Client.h index 2d1a6acf68..df951a1c96 100644 --- a/Userland/Services/WebDriver/Client.h +++ b/Userland/Services/WebDriver/Client.h @@ -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 s_sessions; static Atomic s_next_session_id;