Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(76)

Side by Side Diff: chrome/test/webdriver/webdriver_automation.h

Issue 23526047: Delete old chromedriver code, and remove mongoose webserver. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/test/webdriver/test/util.py ('k') | chrome/test/webdriver/webdriver_automation.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2012 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_WEBDRIVER_WEBDRIVER_AUTOMATION_H_
6 #define CHROME_TEST_WEBDRIVER_WEBDRIVER_AUTOMATION_H_
7
8 #include <map>
9 #include <string>
10 #include <vector>
11
12 #include "base/command_line.h"
13 #include "base/files/file_path.h"
14 #include "base/memory/ref_counted.h"
15 #include "base/memory/scoped_ptr.h"
16 #include "chrome/common/automation_constants.h"
17 #include "chrome/test/webdriver/webdriver_logging.h"
18 #include "ui/base/keycodes/keyboard_codes.h"
19
20 class AutomationId;
21 class AutomationProxy;
22 class ProxyLauncher;
23 struct WebKeyEvent;
24 struct WebMouseEvent;
25 class WebViewId;
26 struct WebViewInfo;
27 class WebViewLocator;
28
29 namespace base {
30 class DictionaryValue;
31 class ListValue;
32 class Value;
33 }
34
35 namespace webdriver {
36
37 class Error;
38 class FramePath;
39 class Point;
40 class Rect;
41
42 // Creates and controls the Chrome instance.
43 // This class should be created and accessed on a single thread.
44 // Note: All member functions are void because they are invoked
45 // by posting a task.
46 class Automation {
47 public:
48 struct BrowserOptions {
49 BrowserOptions();
50 ~BrowserOptions();
51
52 // The command line to use for launching the browser. If no program is
53 // specified, the default browser executable will be used.
54 CommandLine command;
55
56 // The user data directory to be copied and used. If empty, a temporary
57 // directory will be used.
58 base::FilePath user_data_dir;
59
60 // The channel ID of an already running browser to connect to. If empty,
61 // the browser will be launched with an anonymous channel.
62 std::string channel_id;
63
64 // True if the Chrome process should only be terminated if quit is called.
65 // If false, Chrome will also be terminated if this process is killed or
66 // shutdown.
67 bool detach_process;
68
69 // True if the browser should ignore certificate related errors.
70 bool ignore_certificate_errors;
71
72 // Set of switches to be excluded from default list when starting Chrome.
73 std::set<std::string> exclude_switches;
74 };
75
76 explicit Automation(const Logger& logger);
77 virtual ~Automation();
78
79 // Start the system's default Chrome binary.
80 void Init(const BrowserOptions& options, int* build_no, Error** error);
81
82 // Terminates this session and disconnects its automation proxy. After
83 // invoking this method, the Automation can safely be deleted.
84 void Terminate();
85
86 // Executes the given |script| in the specified frame of the current
87 // tab. |result| will be set to the JSON result. Returns true on success.
88 void ExecuteScript(const WebViewId& view_id,
89 const FramePath& frame_path,
90 const std::string& script,
91 std::string* result,
92 Error** error);
93
94 // Sends a webkit key event to the current browser. Waits until the key has
95 // been processed by the web page.
96 void SendWebKeyEvent(const WebViewId& view_id,
97 const WebKeyEvent& key_event,
98 Error** error);
99
100 // Sends a web mouse event to the given view. Waits until the event has
101 // been processed by the view.
102 void SendWebMouseEvent(const WebViewId& view_id,
103 const WebMouseEvent& event,
104 Error** error);
105
106 // Drag and drop the file paths to the given location.
107 void DragAndDropFilePaths(
108 const WebViewId& view_id,
109 const Point& location,
110 const std::vector<base::FilePath::StringType>& paths,
111 Error** error);
112
113 // Captures a snapshot of the tab to the specified path. The PNG will
114 // contain the entire page, including what is not in the current view
115 // on the screen.
116 void CaptureEntirePageAsPNG(
117 const WebViewId& view_id, const base::FilePath& path, Error** error);
118
119 #if !defined(NO_TCMALLOC) && (defined(OS_LINUX) || defined(OS_CHROMEOS))
120 // Dumps a heap profile of the process of the tab.
121 void HeapProfilerDump(
122 const WebViewId& view_id, const std::string& reason, Error** error);
123 #endif // !defined(NO_TCMALLOC) && (defined(OS_LINUX) || defined(OS_CHROMEOS))
124
125 void NavigateToURL(
126 const WebViewId& view_id, const std::string& url, Error** error);
127 void NavigateToURLAsync(
128 const WebViewId& view_id, const std::string& url, Error** error);
129 void GoForward(const WebViewId& view_id, Error** error);
130 void GoBack(const WebViewId& view_id, Error** error);
131 void Reload(const WebViewId& view_id, Error** error);
132
133 void GetCookies(const std::string& url,
134 scoped_ptr<base::ListValue>* cookies,
135 Error** error);
136 void DeleteCookie(const std::string& url,
137 const std::string& cookie_name,
138 Error** error);
139 void SetCookie(const std::string& url,
140 base::DictionaryValue* cookie_dict,
141 Error** error);
142
143 // TODO(kkania): All of these mouse commands are deprecated and should be
144 // removed when chrome build 1002 is no longer supported.
145 // Use SendWebMouseEvent instead.
146 void MouseMoveDeprecated(const WebViewId& view_id,
147 const Point& p,
148 Error** error);
149 void MouseClickDeprecated(const WebViewId& view_id,
150 const Point& p,
151 automation::MouseButton button,
152 Error** error);
153 void MouseDragDeprecated(const WebViewId& view_id,
154 const Point& start,
155 const Point& end,
156 Error** error);
157 void MouseButtonDownDeprecated(const WebViewId& view_id,
158 const Point& p,
159 Error** error);
160 void MouseButtonUpDeprecated(const WebViewId& view_id,
161 const Point& p,
162 Error** error);
163 void MouseDoubleClickDeprecated(const WebViewId& view_id,
164 const Point& p,
165 Error** error);
166
167 // Get info for all views currently open.
168 void GetViews(std::vector<WebViewInfo>* views, Error** error);
169
170 // Check if the given view exists currently.
171 void DoesViewExist(const WebViewId& view_id, bool* does_exist, Error** error);
172
173 // Closes the given view.
174 void CloseView(const WebViewId& view_id, Error** error);
175
176 // Sets the bounds for the given view. The position should be in screen
177 // coordinates, while the size should be the desired size of the view.
178 void SetViewBounds(const WebViewId& view_id,
179 const Rect& bounds,
180 Error** error);
181
182 // Maximizes the given view.
183 void MaximizeView(const WebViewId& view_id, Error** error);
184
185 // Gets the active JavaScript modal dialog's message.
186 void GetAppModalDialogMessage(std::string* message, Error** error);
187
188 // Accepts or dismisses the active JavaScript modal dialog.
189 void AcceptOrDismissAppModalDialog(bool accept, Error** error);
190
191 // Accepts an active prompt JavaScript modal dialog, using the given
192 // prompt text as the result of the prompt.
193 void AcceptPromptAppModalDialog(const std::string& prompt_text,
194 Error** error);
195
196 // Gets the version of the runing browser.
197 void GetBrowserVersion(std::string* version);
198
199 // Gets the ChromeDriver automation version supported by the automation
200 // server.
201 void GetChromeDriverAutomationVersion(int* version, Error** error);
202
203 // Waits for all views to stop loading.
204 void WaitForAllViewsToStopLoading(Error** error);
205
206 // Install a packed or unpacked extension. If the path ends with '.crx',
207 // the extension is assumed to be packed.
208 void InstallExtension(const base::FilePath& path, std::string* extension_id,
209 Error** error);
210
211 // Gets a list of dictionary information about all installed extensions.
212 void GetExtensionsInfo(base::ListValue* extensions_list, Error** error);
213
214 // Gets a list of dictionary information about all installed extensions.
215 void IsPageActionVisible(const WebViewId& tab_id,
216 const std::string& extension_id,
217 bool* is_visible,
218 Error** error);
219
220 // Sets whether the extension is enabled or not.
221 void SetExtensionState(const std::string& extension_id,
222 bool enable,
223 Error** error);
224
225 // Clicks the extension action button. If |browser_action| is false, the
226 // page action will be clicked.
227 void ClickExtensionButton(const std::string& extension_id,
228 bool browser_action,
229 Error** error);
230
231 // Uninstalls the given extension.
232 void UninstallExtension(const std::string& extension_id, Error** error);
233
234 // Set a local state preference, which is not associated with any profile.
235 // Ownership of |value| is taken by this function.
236 void SetLocalStatePreference(const std::string& pref,
237 base::Value* value,
238 Error** error);
239
240 // Set a user preference, which is associated with the current profile.
241 // Ownership of |value| is taken by this fucntion.
242 void SetPreference(const std::string& pref,
243 base::Value* value,
244 Error** error);
245
246 // Gets the current geolocation.
247 void GetGeolocation(scoped_ptr<base::DictionaryValue>* geolocation,
248 Error** error);
249
250 // Overrides the current geolocation.
251 void OverrideGeolocation(const base::DictionaryValue* geolocation,
252 Error** error);
253
254 private:
255 AutomationProxy* automation() const;
256 Error* ConvertViewIdToLocator(const WebViewId& view_id,
257 WebViewLocator* view_locator);
258 Error* DetermineBuildNumber();
259 Error* CheckVersion(int min_required_build_no,
260 const std::string& error_msg);
261 Error* CheckAlertsSupported();
262 Error* CheckAdvancedInteractionsSupported();
263 Error* CheckNewExtensionInterfaceSupported();
264 Error* CheckGeolocationSupported();
265 Error* CheckMaximizeSupported();
266 Error* IsNewMouseApiSupported(bool* supports_new_api);
267
268 const Logger& logger_;
269 scoped_ptr<ProxyLauncher> launcher_;
270 int build_no_;
271 scoped_ptr<base::DictionaryValue> geolocation_;
272
273 DISALLOW_COPY_AND_ASSIGN(Automation);
274 };
275
276 } // namespace webdriver
277
278 #endif // CHROME_TEST_WEBDRIVER_WEBDRIVER_AUTOMATION_H_
OLDNEW
« no previous file with comments | « chrome/test/webdriver/test/util.py ('k') | chrome/test/webdriver/webdriver_automation.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698