blob: f9d76cf0371035c3e93a101fb4867681f7c99c63 [file] [log] [blame]
// Copyright (c) 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_TEST_CHROMEDRIVER_WINDOW_COMMANDS_H_
#define CHROME_TEST_CHROMEDRIVER_WINDOW_COMMANDS_H_
#include <memory>
#include <string>
#include "base/callback_forward.h"
#include "base/values.h"
#include "chrome/test/chromedriver/session.h"
namespace base {
class DictionaryValue;
class Value;
} // namespace base
struct Session;
class Status;
class Timeout;
class WebView;
typedef base::Callback<Status(Session* session,
WebView* web_view,
const base::DictionaryValue&,
std::unique_ptr<base::Value>*,
Timeout*)>
WindowCommand;
// Execute a Window Command on the target window.
Status ExecuteWindowCommand(const WindowCommand& command,
Session* session,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value);
// Loads a URL.
Status ExecuteGet(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Evaluates a given synchronous script with arguments.
Status ExecuteExecuteScript(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Evaluates a given asynchronous script with arguments.
Status ExecuteExecuteAsyncScript(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Creates a new window/tab.
Status ExecuteNewWindow(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Changes the targeted frame for the given session.
Status ExecuteSwitchToFrame(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Change focus to the parent frame.
Status ExecuteSwitchToParentFrame(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Get the current page title.
Status ExecuteGetTitle(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Get the current page source.
Status ExecuteGetPageSource(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Search for an element on the page, starting from the document root.
Status ExecuteFindElement(int interval_ms,
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Search for multiple elements on the page, starting from the document root.
Status ExecuteFindElements(int interval_ms,
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Get the current page url.
Status ExecuteGetCurrentUrl(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Navigate backward in the browser history.
Status ExecuteGoBack(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Navigate forward in the browser history.
Status ExecuteGoForward(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Refresh the current page.
Status ExecuteRefresh(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Freeze the current page.
Status ExecuteFreeze(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Resume the current page.
Status ExecuteResume(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Move the mouse by an offset of the element if specified .
Status ExecuteMouseMoveTo(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Click a mouse button at the coordinates set by the last moveto.
Status ExecuteMouseClick(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Click and hold a mouse button at the coordinates set by the last moveto.
Status ExecuteMouseButtonDown(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Releases the mouse button previously held (where the mouse is currently at).
Status ExecuteMouseButtonUp(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Double-clicks at the current mouse coordinates (set by last moveto).
Status ExecuteMouseDoubleClick(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Touch press at a given coordinate.
Status ExecuteTouchDown(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Touch release at a given coordinate.
Status ExecuteTouchUp(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Touch move at a given coordinate.
Status ExecuteTouchMove(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Do a swipe (scroll) gesture beginning at the element.
Status ExecuteTouchScroll(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
Status ExecuteSendCommand(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
Status ExecuteSendCommandAndGetResult(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
Status ExecuteGetActiveElement(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Send a sequence of key strokes to the active element.
Status ExecuteSendKeysToActiveElement(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Gets the status of the application cache (window.applicationCache.status).
Status ExecuteGetAppCacheStatus(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
Status ExecuteIsBrowserOnline(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
Status ExecuteGetStorageItem(const char* storage,
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
Status ExecuteGetStorageKeys(const char* storage,
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
Status ExecuteSetStorageItem(const char* storage,
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
Status ExecuteRemoveStorageItem(const char* storage,
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
Status ExecuteClearStorage(const char* storage,
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
Status ExecuteGetStorageSize(const char* storage,
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
Status ExecuteScreenshot(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Retrieve all cookies visible to the current page.
Status ExecuteGetCookies(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Retrieve a single cookie with the requested name.
Status ExecuteGetNamedCookie(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Set a cookie. If the cookie path is not specified, it should be set to "/".
// If the domain is omitted, it should default to the current page's domain.
Status ExecuteAddCookie(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Delete the cookie with the given name if it exists in the current page.
Status ExecuteDeleteCookie(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Delete all cookies visible to the current page.
Status ExecuteDeleteAllCookies(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
Status ExecuteSetLocation(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
Status ExecuteSetNetworkConditions(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
Status ExecuteDeleteNetworkConditions(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
Status ExecuteTakeHeapSnapshot(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
Status ExecutePerformActions(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
Status ProcessInputActionSequence(
Session* session,
const base::DictionaryValue* action_sequence,
std::unique_ptr<base::DictionaryValue>* result);
Status ExecuteReleaseActions(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
Status ExecuteGetWindowRect(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
Status ExecuteSetWindowRect(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
Status ExecuteMaximizeWindow(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
Status ExecuteMinimizeWindow(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
Status ExecuteFullScreenWindow(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Sets the sink to be used when the web page invokes Presentation or Remote
// Playback API. Uses the "sinkName" value in |params|.
Status ExecuteSetSinkToUse(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Starts mirroring the tab to the sink specified by the "sinkName" value in
// |params|.
Status ExecuteStartTabMirroring(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Stops casting to the sink specified by the "sinkName" value in |params|.
Status ExecuteStopCasting(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Returns a list of Cast sinks that are available.
Status ExecuteGetSinks(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
// Returns the outstanding issue in the Cast UI.
Status ExecuteGetIssueMessage(Session* session,
WebView* web_view,
const base::DictionaryValue& params,
std::unique_ptr<base::Value>* value,
Timeout* timeout);
#endif // CHROME_TEST_CHROMEDRIVER_WINDOW_COMMANDS_H_