// 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 <string>
#include "base/callback_forward.h"
#include "base/memory/scoped_ptr.h"
namespace base {
class DictionaryValue;
class Value;
}
struct Session;
class Status;
class WebView;
typedef base::Callback<Status(
Session* session,
WebView* web_view,
const base::DictionaryValue&,
scoped_ptr<base::Value>*)> WindowCommand;
// Execute a Window Command on the target window.
Status ExecuteWindowCommand(
const WindowCommand& command,
Session* session,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
// Loads a URL.
Status ExecuteGet(
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
// Evaluates a given synchronous script with arguments.
Status ExecuteExecuteScript(
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
// Evaluates a given asynchronous script with arguments.
Status ExecuteExecuteAsyncScript(
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
// Changes the targeted frame for the given session.
Status ExecuteSwitchToFrame(
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
// Change focus to the parent frame.
Status ExecuteSwitchToParentFrame(
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
// Get the current page title.
Status ExecuteGetTitle(
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
// Get the current page source.
Status ExecuteGetPageSource(
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
// 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,
scoped_ptr<base::Value>* value);
// 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,
scoped_ptr<base::Value>* value);
// Get the current page url.
Status ExecuteGetCurrentUrl(
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
// Navigate backward in the browser history.
Status ExecuteGoBack(
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
// Navigate forward in the browser history.
Status ExecuteGoForward(
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
// Refresh the current page.
Status ExecuteRefresh(
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
// Move the mouse by an offset of the element if specified .
Status ExecuteMouseMoveTo(
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
// Click a mouse button at the coordinates set by the last moveto.
Status ExecuteMouseClick(
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
// 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,
scoped_ptr<base::Value>* value);
// Releases the mouse button previously held (where the mouse is currently at).
Status ExecuteMouseButtonUp(
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
// Double-clicks at the current mouse coordinates (set by last moveto).
Status ExecuteMouseDoubleClick(
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
// Touch press at a given coordinate.
Status ExecuteTouchDown(
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
// Touch release at a given coordinate.
Status ExecuteTouchUp(
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
// Touch move at a given coordinate.
Status ExecuteTouchMove(
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
Status ExecuteGetActiveElement(
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
// Send a sequence of key strokes to the active element.
Status ExecuteSendKeysToActiveElement(
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
// Gets the status of the application cache (window.applicationCache.status).
Status ExecuteGetAppCacheStatus(
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
Status ExecuteIsBrowserOnline(
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
Status ExecuteGetStorageItem(
const char* storage,
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
Status ExecuteGetStorageKeys(
const char* storage,
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
Status ExecuteSetStorageItem(
const char* storage,
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
Status ExecuteRemoveStorageItem(
const char* storage,
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
Status ExecuteClearStorage(
const char* storage,
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
Status ExecuteGetStorageSize(
const char* storage,
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
Status ExecuteScreenshot(
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
// Retrieve all cookies visible to the current page.
Status ExecuteGetCookies(
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
// 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,
scoped_ptr<base::Value>* value);
// 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,
scoped_ptr<base::Value>* value);
// Delete all cookies visible to the current page.
Status ExecuteDeleteAllCookies(
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
Status ExecuteSetLocation(
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
Status ExecuteTakeHeapSnapshot(
Session* session,
WebView* web_view,
const base::DictionaryValue& params,
scoped_ptr<base::Value>* value);
#endif // CHROME_TEST_CHROMEDRIVER_WINDOW_COMMANDS_H_