From 92c56faffa30f66f3f093f64f7978234c162baa4 Mon Sep 17 00:00:00 2001 From: Carlos Garcia Campos Date: Mon, 18 Dec 2017 17:00:17 +0000 Subject: [PATCH] Merge r225387 - WebDriver: implement status command https://bugs.webkit.org/show_bug.cgi?id=180133 Reviewed by Brian Burg. 8.3 Status https://w3c.github.io/webdriver/webdriver-spec.html#status Fixes: imported/w3c/webdriver/tests/sessions/status.py::test_get_status_no_session imported/w3c/webdriver/tests/sessions/status.py::test_status_with_session_running_on_endpoint_node * WebDriverService.cpp: (WebDriver::WebDriverService::status): * WebDriverService.h: --- Source/WebDriver/ChangeLog | 17 +++++++++++++++++ Source/WebDriver/WebDriverService.cpp | 11 +++++++++++ Source/WebDriver/WebDriverService.h | 1 + 3 files changed, 29 insertions(+) diff --git a/Source/WebDriver/ChangeLog b/Source/WebDriver/ChangeLog index 2f53c2b39dd3..c24cfdac89bb 100644 --- a/Source/WebDriver/ChangeLog +++ b/Source/WebDriver/ChangeLog @@ -1,3 +1,20 @@ +2017-12-01 Carlos Garcia Campos + + WebDriver: implement status command + https://bugs.webkit.org/show_bug.cgi?id=180133 + + Reviewed by Brian Burg. + + 8.3 Status + https://w3c.github.io/webdriver/webdriver-spec.html#status + + Fixes: imported/w3c/webdriver/tests/sessions/status.py::test_get_status_no_session + imported/w3c/webdriver/tests/sessions/status.py::test_status_with_session_running_on_endpoint_node + + * WebDriverService.cpp: + (WebDriver::WebDriverService::status): + * WebDriverService.h: + 2017-12-01 Carlos Garcia Campos WebDriver: end point nodes are only allowed to have one session diff --git a/Source/WebDriver/WebDriverService.cpp b/Source/WebDriver/WebDriverService.cpp index 2caedc77906a..b635ded44074 100644 --- a/Source/WebDriver/WebDriverService.cpp +++ b/Source/WebDriver/WebDriverService.cpp @@ -100,6 +100,7 @@ int WebDriverService::run(int argc, char** argv) const WebDriverService::Command WebDriverService::s_commands[] = { { HTTPMethod::Post, "/session", &WebDriverService::newSession }, { HTTPMethod::Delete, "/session/$sessionId", &WebDriverService::deleteSession }, + { HTTPMethod::Get, "/status", &WebDriverService::status }, { HTTPMethod::Post, "/session/$sessionId/timeouts", &WebDriverService::setTimeouts }, { HTTPMethod::Post, "/session/$sessionId/url", &WebDriverService::go }, @@ -681,6 +682,16 @@ void WebDriverService::deleteSession(RefPtr&& parameters, Function }); } +void WebDriverService::status(RefPtr&&, Function&& completionHandler) +{ + // §8.3 Status + // https://w3c.github.io/webdriver/webdriver-spec.html#status + auto body = JSON::Object::create(); + body->setBoolean(ASCIILiteral("ready"), !m_session); + body->setString(ASCIILiteral("message"), m_session ? ASCIILiteral("A session already exists") : ASCIILiteral("No sessions")); + completionHandler(CommandResult::success(WTFMove(body))); +} + void WebDriverService::setTimeouts(RefPtr&& parameters, Function&& completionHandler) { // §8.5 Set Timeouts. diff --git a/Source/WebDriver/WebDriverService.h b/Source/WebDriver/WebDriverService.h index 35dd4b7e5b4e..c3d0812c1b05 100644 --- a/Source/WebDriver/WebDriverService.h +++ b/Source/WebDriver/WebDriverService.h @@ -62,6 +62,7 @@ class WebDriverService final : public HTTPRequestHandler { void newSession(RefPtr&&, Function&&); void deleteSession(RefPtr&&, Function&&); + void status(RefPtr&&, Function&&); void setTimeouts(RefPtr&&, Function&&); void go(RefPtr&&, Function&&); void getCurrentURL(RefPtr&&, Function&&);