1// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_TEST_CHROMEDRIVER_SESSION_COMMANDS_H_
6#define CHROME_TEST_CHROMEDRIVER_SESSION_COMMANDS_H_
7
8#include <string>
9
10#include "base/callback_forward.h"
11#include "base/memory/scoped_ptr.h"
12#include "chrome/test/chromedriver/command.h"
13#include "chrome/test/chromedriver/net/sync_websocket_factory.h"
14
15namespace base {
16class DictionaryValue;
17class Value;
18}
19
20class DeviceManager;
21class PortManager;
22class PortServer;
23struct Session;
24class Status;
25class URLRequestContextGetter;
26
27struct InitSessionParams {
28  InitSessionParams(scoped_refptr<URLRequestContextGetter> context_getter,
29                    const SyncWebSocketFactory& socket_factory,
30                    DeviceManager* device_manager,
31                    PortServer* port_server,
32                    PortManager* port_manager);
33  ~InitSessionParams();
34
35  scoped_refptr<URLRequestContextGetter> context_getter;
36  SyncWebSocketFactory socket_factory;
37  DeviceManager* device_manager;
38  PortServer* port_server;
39  PortManager* port_manager;
40};
41
42// Initializes a session.
43Status ExecuteInitSession(
44    const InitSessionParams& bound_params,
45    Session* session,
46    const base::DictionaryValue& params,
47    scoped_ptr<base::Value>* value);
48
49// Quits a session.
50Status ExecuteQuit(
51    bool allow_detach,
52    Session* session,
53    const base::DictionaryValue& params,
54    scoped_ptr<base::Value>* value);
55
56// Gets the capabilities of a particular session.
57Status ExecuteGetSessionCapabilities(
58    Session* session,
59    const base::DictionaryValue& params,
60    scoped_ptr<base::Value>* value);
61
62// Retrieve the handle of the target window.
63Status ExecuteGetCurrentWindowHandle(
64    Session* session,
65    const base::DictionaryValue& params,
66    scoped_ptr<base::Value>* value);
67
68// Close the target window.
69Status ExecuteClose(
70    Session* session,
71    const base::DictionaryValue& params,
72    scoped_ptr<base::Value>* value);
73
74// Retrieve the list of all window handles available to the session.
75Status ExecuteGetWindowHandles(
76    Session* session,
77    const base::DictionaryValue& params,
78    scoped_ptr<base::Value>* value);
79
80// Change target window to another. The window to target at may be specified by
81// its server assigned window handle, or by the value of its name attribute.
82Status ExecuteSwitchToWindow(
83    Session* session,
84    const base::DictionaryValue& params,
85    scoped_ptr<base::Value>* value);
86
87// Configure the amount of time that a particular type of operation can execute
88// for before they are aborted and a timeout error is returned to the client.
89Status ExecuteSetTimeout(
90    Session* session,
91    const base::DictionaryValue& params,
92    scoped_ptr<base::Value>* value);
93
94// Set the timeout for asynchronous scripts.
95Status ExecuteSetScriptTimeout(
96    Session* session,
97    const base::DictionaryValue& params,
98    scoped_ptr<base::Value>* value);
99
100// Set the amount of time the driver should wait when searching for elements.
101Status ExecuteImplicitlyWait(
102    Session* session,
103    const base::DictionaryValue& params,
104    scoped_ptr<base::Value>* value);
105
106Status ExecuteIsLoading(
107    Session* session,
108    const base::DictionaryValue& params,
109    scoped_ptr<base::Value>* value);
110
111Status ExecuteLaunchApp(
112    Session* session,
113    const base::DictionaryValue& params,
114    scoped_ptr<base::Value>* value);
115
116Status ExecuteGetLocation(
117    Session* session,
118    const base::DictionaryValue& params,
119    scoped_ptr<base::Value>* value);
120
121Status ExecuteGetWindowPosition(
122    Session* session,
123    const base::DictionaryValue& params,
124    scoped_ptr<base::Value>* value);
125
126Status ExecuteSetWindowPosition(
127    Session* session,
128    const base::DictionaryValue& params,
129    scoped_ptr<base::Value>* value);
130
131Status ExecuteGetWindowSize(
132    Session* session,
133    const base::DictionaryValue& params,
134    scoped_ptr<base::Value>* value);
135
136Status ExecuteSetWindowSize(
137    Session* session,
138    const base::DictionaryValue& params,
139    scoped_ptr<base::Value>* value);
140
141Status ExecuteMaximizeWindow(
142    Session* session,
143    const base::DictionaryValue& params,
144    scoped_ptr<base::Value>* value);
145
146Status ExecuteGetAvailableLogTypes(
147    Session* session,
148    const base::DictionaryValue& params,
149    scoped_ptr<base::Value>* value);
150
151Status ExecuteGetLog(
152    Session* session,
153    const base::DictionaryValue& params,
154    scoped_ptr<base::Value>* value);
155
156Status ExecuteUploadFile(
157    Session* session,
158    const base::DictionaryValue& params,
159    scoped_ptr<base::Value>* value);
160
161Status ExecuteIsAutoReporting(
162    Session* session,
163    const base::DictionaryValue& params,
164    scoped_ptr<base::Value>* value);
165
166Status ExecuteSetAutoReporting(
167    Session* session,
168    const base::DictionaryValue& params,
169    scoped_ptr<base::Value>* value);
170
171#endif  // CHROME_TEST_CHROMEDRIVER_SESSION_COMMANDS_H_
172