瀏覽代碼

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

Baitinq 2 年之前
父節點
當前提交
02a2018ec4

+ 1 - 0
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(POST, "/session/:session_id/alert/text"sv, send_alert_text),
     ROUTE(GET, "/session/:session_id/screenshot"sv, take_screenshot),
     ROUTE(GET, "/session/:session_id/screenshot"sv, take_screenshot),
     ROUTE(GET, "/session/:session_id/element/:element_id/screenshot"sv, take_element_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
 // https://w3c.github.io/webdriver/#dfn-match-a-request

+ 3 - 0
Userland/Libraries/LibWeb/WebDriver/Client.h

@@ -96,6 +96,9 @@ public:
     virtual Response take_screenshot(Parameters parameters, JsonValue payload) = 0;
     virtual Response take_screenshot(Parameters parameters, JsonValue payload) = 0;
     virtual Response take_element_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:
 protected:
     Client(NonnullOwnPtr<Core::Stream::BufferedTCPSocket>, Core::Object* parent);
     Client(NonnullOwnPtr<Core::Stream::BufferedTCPSocket>, Core::Object* parent);
 
 

+ 1 - 0
Userland/Services/WebContent/WebDriverClient.ipc

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

+ 7 - 0
Userland/Services/WebContent/WebDriverConnection.cpp

@@ -1533,6 +1533,13 @@ Messages::WebDriverClient::TakeElementScreenshotResponse WebDriverConnection::ta
     return encoded_string;
     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
 // https://w3c.github.io/webdriver/#dfn-no-longer-open
 ErrorOr<void, Web::WebDriver::Error> WebDriverConnection::ensure_open_top_level_browsing_context()
 ErrorOr<void, Web::WebDriver::Error> WebDriverConnection::ensure_open_top_level_browsing_context()
 {
 {

+ 1 - 0
Userland/Services/WebContent/WebDriverConnection.h

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

+ 9 - 0
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]);
     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();
+}
+
 }
 }

+ 1 - 0
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 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_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 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 NonnullOwnPtrVector<Session> s_sessions;
     static Atomic<unsigned> s_next_session_id;
     static Atomic<unsigned> s_next_session_id;