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_WINDOW_COMMANDS_H_ 6 #define CHROME_TEST_CHROMEDRIVER_WINDOW_COMMANDS_H_ 7 8 #include <string> 9 10 #include "base/callback_forward.h" 11 #include "base/memory/scoped_ptr.h" 12 13 namespace base { 14 class DictionaryValue; 15 class Value; 16 } 17 18 struct Session; 19 class Status; 20 class WebView; 21 22 typedef base::Callback<Status( 23 Session* session, 24 WebView* web_view, 25 const base::DictionaryValue&, 26 scoped_ptr<base::Value>*)> WindowCommand; 27 28 // Execute a Window Command on the target window. 29 Status ExecuteWindowCommand( 30 const WindowCommand& command, 31 Session* session, 32 const base::DictionaryValue& params, 33 scoped_ptr<base::Value>* value); 34 35 // Loads a URL. 36 Status ExecuteGet( 37 Session* session, 38 WebView* web_view, 39 const base::DictionaryValue& params, 40 scoped_ptr<base::Value>* value); 41 42 // Evaluates a given synchronous script with arguments. 43 Status ExecuteExecuteScript( 44 Session* session, 45 WebView* web_view, 46 const base::DictionaryValue& params, 47 scoped_ptr<base::Value>* value); 48 49 // Evaluates a given asynchronous script with arguments. 50 Status ExecuteExecuteAsyncScript( 51 Session* session, 52 WebView* web_view, 53 const base::DictionaryValue& params, 54 scoped_ptr<base::Value>* value); 55 56 // Changes the targeted frame for the given session. 57 Status ExecuteSwitchToFrame( 58 Session* session, 59 WebView* web_view, 60 const base::DictionaryValue& params, 61 scoped_ptr<base::Value>* value); 62 63 // Change focus to the parent frame. 64 Status ExecuteSwitchToParentFrame( 65 Session* session, 66 WebView* web_view, 67 const base::DictionaryValue& params, 68 scoped_ptr<base::Value>* value); 69 70 // Get the current page title. 71 Status ExecuteGetTitle( 72 Session* session, 73 WebView* web_view, 74 const base::DictionaryValue& params, 75 scoped_ptr<base::Value>* value); 76 77 // Get the current page source. 78 Status ExecuteGetPageSource( 79 Session* session, 80 WebView* web_view, 81 const base::DictionaryValue& params, 82 scoped_ptr<base::Value>* value); 83 84 // Search for an element on the page, starting from the document root. 85 Status ExecuteFindElement( 86 int interval_ms, 87 Session* session, 88 WebView* web_view, 89 const base::DictionaryValue& params, 90 scoped_ptr<base::Value>* value); 91 92 // Search for multiple elements on the page, starting from the document root. 93 Status ExecuteFindElements( 94 int interval_ms, 95 Session* session, 96 WebView* web_view, 97 const base::DictionaryValue& params, 98 scoped_ptr<base::Value>* value); 99 100 // Get the current page url. 101 Status ExecuteGetCurrentUrl( 102 Session* session, 103 WebView* web_view, 104 const base::DictionaryValue& params, 105 scoped_ptr<base::Value>* value); 106 107 // Navigate backward in the browser history. 108 Status ExecuteGoBack( 109 Session* session, 110 WebView* web_view, 111 const base::DictionaryValue& params, 112 scoped_ptr<base::Value>* value); 113 114 // Navigate forward in the browser history. 115 Status ExecuteGoForward( 116 Session* session, 117 WebView* web_view, 118 const base::DictionaryValue& params, 119 scoped_ptr<base::Value>* value); 120 121 // Refresh the current page. 122 Status ExecuteRefresh( 123 Session* session, 124 WebView* web_view, 125 const base::DictionaryValue& params, 126 scoped_ptr<base::Value>* value); 127 128 // Move the mouse by an offset of the element if specified . 129 Status ExecuteMouseMoveTo( 130 Session* session, 131 WebView* web_view, 132 const base::DictionaryValue& params, 133 scoped_ptr<base::Value>* value); 134 135 // Click a mouse button at the coordinates set by the last moveto. 136 Status ExecuteMouseClick( 137 Session* session, 138 WebView* web_view, 139 const base::DictionaryValue& params, 140 scoped_ptr<base::Value>* value); 141 142 // Click and hold a mouse button at the coordinates set by the last moveto. 143 Status ExecuteMouseButtonDown( 144 Session* session, 145 WebView* web_view, 146 const base::DictionaryValue& params, 147 scoped_ptr<base::Value>* value); 148 149 // Releases the mouse button previously held (where the mouse is currently at). 150 Status ExecuteMouseButtonUp( 151 Session* session, 152 WebView* web_view, 153 const base::DictionaryValue& params, 154 scoped_ptr<base::Value>* value); 155 156 // Double-clicks at the current mouse coordinates (set by last moveto). 157 Status ExecuteMouseDoubleClick( 158 Session* session, 159 WebView* web_view, 160 const base::DictionaryValue& params, 161 scoped_ptr<base::Value>* value); 162 163 // Touch press at a given coordinate. 164 Status ExecuteTouchDown( 165 Session* session, 166 WebView* web_view, 167 const base::DictionaryValue& params, 168 scoped_ptr<base::Value>* value); 169 170 // Touch release at a given coordinate. 171 Status ExecuteTouchUp( 172 Session* session, 173 WebView* web_view, 174 const base::DictionaryValue& params, 175 scoped_ptr<base::Value>* value); 176 177 // Touch move at a given coordinate. 178 Status ExecuteTouchMove( 179 Session* session, 180 WebView* web_view, 181 const base::DictionaryValue& params, 182 scoped_ptr<base::Value>* value); 183 184 Status ExecuteGetActiveElement( 185 Session* session, 186 WebView* web_view, 187 const base::DictionaryValue& params, 188 scoped_ptr<base::Value>* value); 189 190 // Send a sequence of key strokes to the active element. 191 Status ExecuteSendKeysToActiveElement( 192 Session* session, 193 WebView* web_view, 194 const base::DictionaryValue& params, 195 scoped_ptr<base::Value>* value); 196 197 // Gets the status of the application cache (window.applicationCache.status). 198 Status ExecuteGetAppCacheStatus( 199 Session* session, 200 WebView* web_view, 201 const base::DictionaryValue& params, 202 scoped_ptr<base::Value>* value); 203 204 Status ExecuteIsBrowserOnline( 205 Session* session, 206 WebView* web_view, 207 const base::DictionaryValue& params, 208 scoped_ptr<base::Value>* value); 209 210 Status ExecuteGetStorageItem( 211 const char* storage, 212 Session* session, 213 WebView* web_view, 214 const base::DictionaryValue& params, 215 scoped_ptr<base::Value>* value); 216 217 Status ExecuteGetStorageKeys( 218 const char* storage, 219 Session* session, 220 WebView* web_view, 221 const base::DictionaryValue& params, 222 scoped_ptr<base::Value>* value); 223 224 Status ExecuteSetStorageItem( 225 const char* storage, 226 Session* session, 227 WebView* web_view, 228 const base::DictionaryValue& params, 229 scoped_ptr<base::Value>* value); 230 231 Status ExecuteRemoveStorageItem( 232 const char* storage, 233 Session* session, 234 WebView* web_view, 235 const base::DictionaryValue& params, 236 scoped_ptr<base::Value>* value); 237 238 Status ExecuteClearStorage( 239 const char* storage, 240 Session* session, 241 WebView* web_view, 242 const base::DictionaryValue& params, 243 scoped_ptr<base::Value>* value); 244 245 Status ExecuteGetStorageSize( 246 const char* storage, 247 Session* session, 248 WebView* web_view, 249 const base::DictionaryValue& params, 250 scoped_ptr<base::Value>* value); 251 252 Status ExecuteScreenshot( 253 Session* session, 254 WebView* web_view, 255 const base::DictionaryValue& params, 256 scoped_ptr<base::Value>* value); 257 258 // Retrieve all cookies visible to the current page. 259 Status ExecuteGetCookies( 260 Session* session, 261 WebView* web_view, 262 const base::DictionaryValue& params, 263 scoped_ptr<base::Value>* value); 264 265 // Set a cookie. If the cookie path is not specified, it should be set to "/". 266 // If the domain is omitted, it should default to the current page's domain. 267 Status ExecuteAddCookie( 268 Session* session, 269 WebView* web_view, 270 const base::DictionaryValue& params, 271 scoped_ptr<base::Value>* value); 272 273 // Delete the cookie with the given name if it exists in the current page. 274 Status ExecuteDeleteCookie( 275 Session* session, 276 WebView* web_view, 277 const base::DictionaryValue& params, 278 scoped_ptr<base::Value>* value); 279 280 // Delete all cookies visible to the current page. 281 Status ExecuteDeleteAllCookies( 282 Session* session, 283 WebView* web_view, 284 const base::DictionaryValue& params, 285 scoped_ptr<base::Value>* value); 286 287 Status ExecuteSetLocation( 288 Session* session, 289 WebView* web_view, 290 const base::DictionaryValue& params, 291 scoped_ptr<base::Value>* value); 292 293 Status ExecuteTakeHeapSnapshot( 294 Session* session, 295 WebView* web_view, 296 const base::DictionaryValue& params, 297 scoped_ptr<base::Value>* value); 298 299 #endif // CHROME_TEST_CHROMEDRIVER_WINDOW_COMMANDS_H_ 300