Diff
Modified: releases/WebKitGTK/webkit-2.18/Source/WebDriver/ChangeLog (221362 => 221363)
--- releases/WebKitGTK/webkit-2.18/Source/WebDriver/ChangeLog 2017-08-30 10:14:08 UTC (rev 221362)
+++ releases/WebKitGTK/webkit-2.18/Source/WebDriver/ChangeLog 2017-08-30 10:14:47 UTC (rev 221363)
@@ -1,3 +1,38 @@
+2017-08-28 Carlos Garcia Campos <cgar...@igalia.com>
+
+ WebDriver: implement cookies commands
+ https://bugs.webkit.org/show_bug.cgi?id=174613
+
+ Reviewed by Brian Burg.
+
+ Add cookies commands.
+
+ 16. Cookies.
+ https://w3c.github.io/webdriver/webdriver-spec.html#cookies
+
+ * CommandResult.cpp:
+ (WebDriver::CommandResult::httpStatusCode const): Add NoSuchCookie error.
+ (WebDriver::CommandResult::errorString const): Ditto.
+ * CommandResult.h:
+ * Session.cpp:
+ (WebDriver::parseAutomationCookie): Parse JSON cookie object returned by automation and convert it to a Cookie struct.
+ (WebDriver::builtAutomationCookie): Build a JSON cookie object as expected by automation from a Cookie struct.
+ (WebDriver::serializeCookie): Serialize a Cookie struct into a JSON cookie object according to the WebDriver spec.
+ (WebDriver::Session::getAllCookies):
+ (WebDriver::Session::getNamedCookie):
+ (WebDriver::Session::addCookie):
+ (WebDriver::Session::deleteCookie):
+ (WebDriver::Session::deleteAllCookies):
+ * Session.h:
+ * WebDriverService.cpp:
+ (WebDriver::WebDriverService::getAllCookies):
+ (WebDriver::WebDriverService::getNamedCookie):
+ (WebDriver::deserializeCookie):
+ (WebDriver::WebDriverService::addCookie):
+ (WebDriver::WebDriverService::deleteCookie):
+ (WebDriver::WebDriverService::deleteAllCookies):
+ * WebDriverService.h:
+
2017-07-28 Carlos Garcia Campos <cgar...@igalia.com>
WebDriver: fix return value of close window command
Modified: releases/WebKitGTK/webkit-2.18/Source/WebDriver/CommandResult.cpp (221362 => 221363)
--- releases/WebKitGTK/webkit-2.18/Source/WebDriver/CommandResult.cpp 2017-08-30 10:14:08 UTC (rev 221362)
+++ releases/WebKitGTK/webkit-2.18/Source/WebDriver/CommandResult.cpp 2017-08-30 10:14:47 UTC (rev 221363)
@@ -135,11 +135,12 @@
case ErrorCode::InvalidElementState:
case ErrorCode::InvalidSelector:
case ErrorCode::NoSuchAlert:
- case ErrorCode::NoSuchElement:
case ErrorCode::NoSuchFrame:
case ErrorCode::NoSuchWindow:
case ErrorCode::StaleElementReference:
return 400;
+ case ErrorCode::NoSuchCookie:
+ case ErrorCode::NoSuchElement:
case ErrorCode::InvalidSessionID:
case ErrorCode::UnknownCommand:
return 404;
@@ -181,6 +182,8 @@
return ASCIILiteral("_javascript_ error");
case ErrorCode::NoSuchAlert:
return ASCIILiteral("no such alert");
+ case ErrorCode::NoSuchCookie:
+ return ASCIILiteral("no such cookie");
case ErrorCode::NoSuchElement:
return ASCIILiteral("no such element");
case ErrorCode::NoSuchFrame:
Modified: releases/WebKitGTK/webkit-2.18/Source/WebDriver/CommandResult.h (221362 => 221363)
--- releases/WebKitGTK/webkit-2.18/Source/WebDriver/CommandResult.h 2017-08-30 10:14:08 UTC (rev 221362)
+++ releases/WebKitGTK/webkit-2.18/Source/WebDriver/CommandResult.h 2017-08-30 10:14:47 UTC (rev 221363)
@@ -49,6 +49,7 @@
InvalidSessionID,
_javascript_Error,
NoSuchAlert,
+ NoSuchCookie,
NoSuchElement,
NoSuchFrame,
NoSuchWindow,
Modified: releases/WebKitGTK/webkit-2.18/Source/WebDriver/Session.cpp (221362 => 221363)
--- releases/WebKitGTK/webkit-2.18/Source/WebDriver/Session.cpp 2017-08-30 10:14:08 UTC (rev 221362)
+++ releases/WebKitGTK/webkit-2.18/Source/WebDriver/Session.cpp 2017-08-30 10:14:47 UTC (rev 221363)
@@ -1712,6 +1712,213 @@
});
}
+static std::optional<Session::Cookie> parseAutomationCookie(const InspectorObject& cookieObject)
+{
+ Session::Cookie cookie;
+ if (!cookieObject.getString(ASCIILiteral("name"), cookie.name))
+ return std::nullopt;
+ if (!cookieObject.getString(ASCIILiteral("value"), cookie.value))
+ return std::nullopt;
+
+ String path;
+ if (cookieObject.getString(ASCIILiteral("path"), path))
+ cookie.path = path;
+ String domain;
+ if (cookieObject.getString(ASCIILiteral("domain"), domain))
+ cookie.domain = domain;
+ bool secure;
+ if (cookieObject.getBoolean(ASCIILiteral("secure"), secure))
+ cookie.secure = secure;
+ bool httpOnly;
+ if (cookieObject.getBoolean(ASCIILiteral("httpOnly"), httpOnly))
+ cookie.httpOnly = httpOnly;
+ bool session = false;
+ cookieObject.getBoolean(ASCIILiteral("session"), session);
+ if (!session) {
+ double expiry;
+ if (cookieObject.getDouble(ASCIILiteral("expires"), expiry))
+ cookie.expiry = expiry;
+ }
+
+ return cookie;
+}
+
+static RefPtr<InspectorObject> builtAutomationCookie(const Session::Cookie& cookie)
+{
+ RefPtr<InspectorObject> cookieObject = InspectorObject::create();
+ cookieObject->setString(ASCIILiteral("name"), cookie.name);
+ cookieObject->setString(ASCIILiteral("value"), cookie.value);
+ cookieObject->setString(ASCIILiteral("path"), cookie.path.value_or("/"));
+ cookieObject->setString(ASCIILiteral("domain"), cookie.domain.value_or(emptyString()));
+ cookieObject->setBoolean(ASCIILiteral("secure"), cookie.secure.value_or(false));
+ cookieObject->setBoolean(ASCIILiteral("httpOnly"), cookie.httpOnly.value_or(false));
+ cookieObject->setBoolean(ASCIILiteral("session"), !cookie.expiry);
+ cookieObject->setDouble(ASCIILiteral("expires"), cookie.expiry.value_or(0));
+ return cookieObject;
+}
+
+static RefPtr<InspectorObject> serializeCookie(const Session::Cookie& cookie)
+{
+ RefPtr<InspectorObject> cookieObject = InspectorObject::create();
+ cookieObject->setString(ASCIILiteral("name"), cookie.name);
+ cookieObject->setString(ASCIILiteral("value"), cookie.value);
+ if (cookie.path)
+ cookieObject->setString(ASCIILiteral("path"), cookie.path.value());
+ if (cookie.domain)
+ cookieObject->setString(ASCIILiteral("domain"), cookie.domain.value());
+ if (cookie.secure)
+ cookieObject->setBoolean(ASCIILiteral("secure"), cookie.secure.value());
+ if (cookie.httpOnly)
+ cookieObject->setBoolean(ASCIILiteral("httpOnly"), cookie.httpOnly.value());
+ if (cookie.expiry)
+ cookieObject->setInteger(ASCIILiteral("expiry"), cookie.expiry.value());
+ return cookieObject;
+}
+
+void Session::getAllCookies(Function<void (CommandResult&&)>&& completionHandler)
+{
+ if (!m_toplevelBrowsingContext) {
+ completionHandler(CommandResult::fail(CommandResult::ErrorCode::NoSuchWindow));
+ return;
+ }
+
+ handleUserPrompts([this, completionHandler = WTFMove(completionHandler)](CommandResult&& result) mutable {
+ if (result.isError()) {
+ completionHandler(WTFMove(result));
+ return;
+ }
+
+ RefPtr<InspectorObject> parameters = InspectorObject::create();
+ parameters->setString(ASCIILiteral("browsingContextHandle"), m_toplevelBrowsingContext.value());
+ m_host->sendCommandToBackend(ASCIILiteral("getAllCookies"), WTFMove(parameters), [this, protectedThis = makeRef(*this), completionHandler = WTFMove(completionHandler)](SessionHost::CommandResponse&& response) mutable {
+ if (response.isError || !response.responseObject) {
+ completionHandler(CommandResult::fail(WTFMove(response.responseObject)));
+ return;
+ }
+ RefPtr<InspectorArray> cookiesArray;
+ if (!response.responseObject->getArray(ASCIILiteral("cookies"), cookiesArray)) {
+ completionHandler(CommandResult::fail(CommandResult::ErrorCode::UnknownError));
+ return;
+ }
+ RefPtr<InspectorArray> cookies = InspectorArray::create();
+ for (unsigned i = 0; i < cookiesArray->length(); ++i) {
+ RefPtr<InspectorValue> cookieValue = cookiesArray->get(i);
+ RefPtr<InspectorObject> cookieObject;
+ if (!cookieValue->asObject(cookieObject)) {
+ completionHandler(CommandResult::fail(CommandResult::ErrorCode::UnknownError));
+ return;
+ }
+
+ auto cookie = parseAutomationCookie(*cookieObject);
+ if (!cookie) {
+ completionHandler(CommandResult::fail(CommandResult::ErrorCode::UnknownError));
+ return;
+ }
+ cookies->pushObject(serializeCookie(cookie.value()));
+ }
+ completionHandler(CommandResult::success(WTFMove(cookies)));
+ });
+ });
+}
+
+void Session::getNamedCookie(const String& name, Function<void (CommandResult&&)>&& completionHandler)
+{
+ getAllCookies([this, name, completionHandler = WTFMove(completionHandler)](CommandResult&& result) mutable {
+ if (result.isError()) {
+ completionHandler(WTFMove(result));
+ return;
+ }
+ RefPtr<InspectorArray> cookiesArray;
+ result.result()->asArray(cookiesArray);
+ for (unsigned i = 0; i < cookiesArray->length(); ++i) {
+ RefPtr<InspectorValue> cookieValue = cookiesArray->get(i);
+ RefPtr<InspectorObject> cookieObject;
+ cookieValue->asObject(cookieObject);
+ String cookieName;
+ cookieObject->getString(ASCIILiteral("name"), cookieName);
+ if (cookieName == name) {
+ completionHandler(CommandResult::success(WTFMove(cookieObject)));
+ return;
+ }
+ }
+ completionHandler(CommandResult::fail(CommandResult::ErrorCode::NoSuchCookie));
+ });
+}
+
+void Session::addCookie(const Cookie& cookie, Function<void (CommandResult&&)>&& completionHandler)
+{
+ if (!m_toplevelBrowsingContext) {
+ completionHandler(CommandResult::fail(CommandResult::ErrorCode::NoSuchWindow));
+ return;
+ }
+
+ handleUserPrompts([this, cookie = builtAutomationCookie(cookie), completionHandler = WTFMove(completionHandler)](CommandResult&& result) mutable {
+ if (result.isError()) {
+ completionHandler(WTFMove(result));
+ return;
+ }
+ RefPtr<InspectorObject> parameters = InspectorObject::create();
+ parameters->setString(ASCIILiteral("browsingContextHandle"), m_toplevelBrowsingContext.value());
+ parameters->setObject(ASCIILiteral("cookie"), WTFMove(cookie));
+ m_host->sendCommandToBackend(ASCIILiteral("addSingleCookie"), WTFMove(parameters), [this, protectedThis = makeRef(*this), completionHandler = WTFMove(completionHandler)](SessionHost::CommandResponse&& response) {
+ if (response.isError) {
+ completionHandler(CommandResult::fail(WTFMove(response.responseObject)));
+ return;
+ }
+ completionHandler(CommandResult::success());
+ });
+ });
+}
+
+void Session::deleteCookie(const String& name, Function<void (CommandResult&&)>&& completionHandler)
+{
+ if (!m_toplevelBrowsingContext) {
+ completionHandler(CommandResult::fail(CommandResult::ErrorCode::NoSuchWindow));
+ return;
+ }
+
+ handleUserPrompts([this, name, completionHandler = WTFMove(completionHandler)](CommandResult&& result) mutable {
+ if (result.isError()) {
+ completionHandler(WTFMove(result));
+ return;
+ }
+ RefPtr<InspectorObject> parameters = InspectorObject::create();
+ parameters->setString(ASCIILiteral("browsingContextHandle"), m_toplevelBrowsingContext.value());
+ parameters->setString(ASCIILiteral("cookieName"), name);
+ m_host->sendCommandToBackend(ASCIILiteral("deleteSingleCookie"), WTFMove(parameters), [this, protectedThis = makeRef(*this), completionHandler = WTFMove(completionHandler)](SessionHost::CommandResponse&& response) {
+ if (response.isError) {
+ completionHandler(CommandResult::fail(WTFMove(response.responseObject)));
+ return;
+ }
+ completionHandler(CommandResult::success());
+ });
+ });
+}
+
+void Session::deleteAllCookies(Function<void (CommandResult&&)>&& completionHandler)
+{
+ if (!m_toplevelBrowsingContext) {
+ completionHandler(CommandResult::fail(CommandResult::ErrorCode::NoSuchWindow));
+ return;
+ }
+
+ handleUserPrompts([this, completionHandler = WTFMove(completionHandler)](CommandResult&& result) mutable {
+ if (result.isError()) {
+ completionHandler(WTFMove(result));
+ return;
+ }
+ RefPtr<InspectorObject> parameters = InspectorObject::create();
+ parameters->setString(ASCIILiteral("browsingContextHandle"), m_toplevelBrowsingContext.value());
+ m_host->sendCommandToBackend(ASCIILiteral("deleteAllCookies"), WTFMove(parameters), [this, protectedThis = makeRef(*this), completionHandler = WTFMove(completionHandler)](SessionHost::CommandResponse&& response) {
+ if (response.isError) {
+ completionHandler(CommandResult::fail(WTFMove(response.responseObject)));
+ return;
+ }
+ completionHandler(CommandResult::success());
+ });
+ });
+}
+
void Session::dismissAlert(Function<void (CommandResult&&)>&& completionHandler)
{
if (!m_toplevelBrowsingContext) {
Modified: releases/WebKitGTK/webkit-2.18/Source/WebDriver/Session.h (221362 => 221363)
--- releases/WebKitGTK/webkit-2.18/Source/WebDriver/Session.h 2017-08-30 10:14:08 UTC (rev 221362)
+++ releases/WebKitGTK/webkit-2.18/Source/WebDriver/Session.h 2017-08-30 10:14:47 UTC (rev 221363)
@@ -59,6 +59,16 @@
enum class ExecuteScriptMode { Sync, Async };
enum class Timeout { Script, PageLoad, Implicit };
+ struct Cookie {
+ String name;
+ String value;
+ std::optional<String> path;
+ std::optional<String> domain;
+ std::optional<bool> secure;
+ std::optional<bool> httpOnly;
+ std::optional<unsigned> expiry;
+ };
+
void waitForNavigationToComplete(Function<void (CommandResult&&)>&&);
void createTopLevelBrowsingContext(Function<void (CommandResult&&)>&&);
void close(Function<void (CommandResult&&)>&&);
@@ -94,6 +104,11 @@
void elementSendKeys(const String& elementID, Vector<String>&& keys, Function<void (CommandResult&&)>&&);
void elementSubmit(const String& elementID, Function<void (CommandResult&&)>&&);
void executeScript(const String& script, RefPtr<Inspector::InspectorArray>&& arguments, ExecuteScriptMode, Function<void (CommandResult&&)>&&);
+ void getAllCookies(Function<void (CommandResult&&)>&&);
+ void getNamedCookie(const String& name, Function<void (CommandResult&&)>&&);
+ void addCookie(const Cookie&, Function<void (CommandResult&&)>&&);
+ void deleteCookie(const String& name, Function<void (CommandResult&&)>&&);
+ void deleteAllCookies(Function<void (CommandResult&&)>&&);
void dismissAlert(Function<void (CommandResult&&)>&&);
void acceptAlert(Function<void (CommandResult&&)>&&);
void getAlertText(Function<void (CommandResult&&)>&&);
Modified: releases/WebKitGTK/webkit-2.18/Source/WebDriver/WebDriverService.cpp (221362 => 221363)
--- releases/WebKitGTK/webkit-2.18/Source/WebDriver/WebDriverService.cpp 2017-08-30 10:14:08 UTC (rev 221362)
+++ releases/WebKitGTK/webkit-2.18/Source/WebDriver/WebDriverService.cpp 2017-08-30 10:14:47 UTC (rev 221363)
@@ -147,6 +147,12 @@
{ HTTPMethod::Post, "/session/$sessionId/execute/sync", &WebDriverService::executeScript },
{ HTTPMethod::Post, "/session/$sessionId/execute/async", &WebDriverService::executeAsyncScript },
+ { HTTPMethod::Get, "/session/$sessionId/cookie", &WebDriverService::getAllCookies },
+ { HTTPMethod::Get, "/session/$sessionId/cookie/$name", &WebDriverService::getNamedCookie },
+ { HTTPMethod::Post, "/session/$sessionId/cookie", &WebDriverService::addCookie },
+ { HTTPMethod::Delete, "/session/$sessionId/cookie/$name", &WebDriverService::deleteCookie },
+ { HTTPMethod::Delete, "/session/$sessionId/cookie", &WebDriverService::deleteAllCookies },
+
{ HTTPMethod::Post, "/session/$sessionId/alert/dismiss", &WebDriverService::dismissAlert },
{ HTTPMethod::Post, "/session/$sessionId/alert/accept", &WebDriverService::acceptAlert },
{ HTTPMethod::Get, "/session/$sessionId/alert/text", &WebDriverService::getAlertText },
@@ -1274,6 +1280,159 @@
});
}
+void WebDriverService::getAllCookies(RefPtr<InspectorObject>&& parameters, Function<void (CommandResult&&)>&& completionHandler)
+{
+ // §16.1 Get All Cookies.
+ // https://w3c.github.io/webdriver/webdriver-spec.html#get-all-cookies
+ auto session = findSessionOrCompleteWithError(*parameters, completionHandler);
+ if (!session)
+ return;
+
+ session->waitForNavigationToComplete([session, completionHandler = WTFMove(completionHandler)](CommandResult&& result) mutable {
+ if (result.isError()) {
+ completionHandler(WTFMove(result));
+ return;
+ }
+ session->getAllCookies(WTFMove(completionHandler));
+ });
+}
+
+void WebDriverService::getNamedCookie(RefPtr<InspectorObject>&& parameters, Function<void (CommandResult&&)>&& completionHandler)
+{
+ // §16.2 Get Named Cookie.
+ // https://w3c.github.io/webdriver/webdriver-spec.html#get-named-cookie
+ auto session = findSessionOrCompleteWithError(*parameters, completionHandler);
+ if (!session)
+ return;
+
+ String name;
+ if (!parameters->getString(ASCIILiteral("name"), name)) {
+ completionHandler(CommandResult::fail(CommandResult::ErrorCode::InvalidArgument));
+ return;
+ }
+
+ session->waitForNavigationToComplete([session, name = WTFMove(name), completionHandler = WTFMove(completionHandler)](CommandResult&& result) mutable {
+ if (result.isError()) {
+ completionHandler(WTFMove(result));
+ return;
+ }
+ session->getNamedCookie(name, WTFMove(completionHandler));
+ });
+}
+
+static std::optional<Session::Cookie> deserializeCookie(InspectorObject& cookieObject)
+{
+ Session::Cookie cookie;
+ if (!cookieObject.getString(ASCIILiteral("name"), cookie.name) || cookie.name.isEmpty())
+ return std::nullopt;
+ if (!cookieObject.getString(ASCIILiteral("value"), cookie.value) || cookie.value.isEmpty())
+ return std::nullopt;
+
+ RefPtr<InspectorValue> value;
+ if (cookieObject.getValue(ASCIILiteral("path"), value)) {
+ String path;
+ if (!value->asString(path))
+ return std::nullopt;
+ cookie.path = path;
+ }
+ if (cookieObject.getValue(ASCIILiteral("domain"), value)) {
+ String domain;
+ if (!value->asString(domain))
+ return std::nullopt;
+ cookie.domain = domain;
+ }
+ if (cookieObject.getValue(ASCIILiteral("secure"), value)) {
+ bool secure;
+ if (!value->asBoolean(secure))
+ return std::nullopt;
+ cookie.secure = secure;
+ }
+ if (cookieObject.getValue(ASCIILiteral("httpOnly"), value)) {
+ bool httpOnly;
+ if (!value->asBoolean(httpOnly))
+ return std::nullopt;
+ cookie.httpOnly = httpOnly;
+ }
+ if (cookieObject.getValue(ASCIILiteral("expiry"), value)) {
+ int expiry;
+ if (!value->asInteger(expiry) || expiry < 0 || expiry > INT_MAX)
+ return std::nullopt;
+
+ cookie.expiry = static_cast<unsigned>(expiry);
+ }
+
+ return cookie;
+}
+
+void WebDriverService::addCookie(RefPtr<InspectorObject>&& parameters, Function<void (CommandResult&&)>&& completionHandler)
+{
+ // §16.3 Add Cookie.
+ // https://w3c.github.io/webdriver/webdriver-spec.html#add-cookie
+ auto session = findSessionOrCompleteWithError(*parameters, completionHandler);
+ if (!session)
+ return;
+
+ RefPtr<InspectorObject> cookieObject;
+ if (!parameters->getObject(ASCIILiteral("cookie"), cookieObject)) {
+ completionHandler(CommandResult::fail(CommandResult::ErrorCode::InvalidArgument));
+ return;
+ }
+
+ auto cookie = deserializeCookie(*cookieObject);
+ if (!cookie) {
+ completionHandler(CommandResult::fail(CommandResult::ErrorCode::InvalidArgument));
+ return;
+ }
+
+ session->waitForNavigationToComplete([session, cookie = WTFMove(cookie), completionHandler = WTFMove(completionHandler)](CommandResult&& result) mutable {
+ if (result.isError()) {
+ completionHandler(WTFMove(result));
+ return;
+ }
+ session->addCookie(cookie.value(), WTFMove(completionHandler));
+ });
+}
+
+void WebDriverService::deleteCookie(RefPtr<InspectorObject>&& parameters, Function<void (CommandResult&&)>&& completionHandler)
+{
+ // §16.4 Delete Cookie.
+ // https://w3c.github.io/webdriver/webdriver-spec.html#delete-cookie
+ auto session = findSessionOrCompleteWithError(*parameters, completionHandler);
+ if (!session)
+ return;
+
+ String name;
+ if (!parameters->getString(ASCIILiteral("name"), name)) {
+ completionHandler(CommandResult::fail(CommandResult::ErrorCode::InvalidArgument));
+ return;
+ }
+
+ session->waitForNavigationToComplete([session, name = WTFMove(name), completionHandler = WTFMove(completionHandler)](CommandResult&& result) mutable {
+ if (result.isError()) {
+ completionHandler(WTFMove(result));
+ return;
+ }
+ session->deleteCookie(name, WTFMove(completionHandler));
+ });
+}
+
+void WebDriverService::deleteAllCookies(RefPtr<InspectorObject>&& parameters, Function<void (CommandResult&&)>&& completionHandler)
+{
+ // §16.5 Delete All Cookies.
+ // https://w3c.github.io/webdriver/webdriver-spec.html#delete-all-cookies
+ auto session = findSessionOrCompleteWithError(*parameters, completionHandler);
+ if (!session)
+ return;
+
+ session->waitForNavigationToComplete([session, completionHandler = WTFMove(completionHandler)](CommandResult&& result) mutable {
+ if (result.isError()) {
+ completionHandler(WTFMove(result));
+ return;
+ }
+ session->deleteAllCookies(WTFMove(completionHandler));
+ });
+}
+
void WebDriverService::dismissAlert(RefPtr<InspectorObject>&& parameters, Function<void (CommandResult&&)>&& completionHandler)
{
// §18.1 Dismiss Alert.
Modified: releases/WebKitGTK/webkit-2.18/Source/WebDriver/WebDriverService.h (221362 => 221363)
--- releases/WebKitGTK/webkit-2.18/Source/WebDriver/WebDriverService.h 2017-08-30 10:14:08 UTC (rev 221362)
+++ releases/WebKitGTK/webkit-2.18/Source/WebDriver/WebDriverService.h 2017-08-30 10:14:47 UTC (rev 221363)
@@ -100,6 +100,11 @@
void elementSubmit(RefPtr<Inspector::InspectorObject>&&, Function<void (CommandResult&&)>&&);
void executeScript(RefPtr<Inspector::InspectorObject>&&, Function<void (CommandResult&&)>&&);
void executeAsyncScript(RefPtr<Inspector::InspectorObject>&&, Function<void (CommandResult&&)>&&);
+ void getAllCookies(RefPtr<Inspector::InspectorObject>&&, Function<void (CommandResult&&)>&&);
+ void getNamedCookie(RefPtr<Inspector::InspectorObject>&&, Function<void (CommandResult&&)>&&);
+ void addCookie(RefPtr<Inspector::InspectorObject>&&, Function<void (CommandResult&&)>&&);
+ void deleteCookie(RefPtr<Inspector::InspectorObject>&&, Function<void (CommandResult&&)>&&);
+ void deleteAllCookies(RefPtr<Inspector::InspectorObject>&&, Function<void (CommandResult&&)>&&);
void dismissAlert(RefPtr<Inspector::InspectorObject>&&, Function<void (CommandResult&&)>&&);
void acceptAlert(RefPtr<Inspector::InspectorObject>&&, Function<void (CommandResult&&)>&&);
void getAlertText(RefPtr<Inspector::InspectorObject>&&, Function<void (CommandResult&&)>&&);