| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/test/webdriver/automation.h" | 5 #include "chrome/test/webdriver/automation.h" |
| 6 | 6 |
| 7 #if defined(OS_WIN) | 7 #if defined(OS_WIN) |
| 8 #include <windows.h> | 8 #include <windows.h> |
| 9 #endif | 9 #endif |
| 10 | 10 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 #include "chrome/common/chrome_constants.h" | 28 #include "chrome/common/chrome_constants.h" |
| 29 #include "chrome/common/chrome_switches.h" | 29 #include "chrome/common/chrome_switches.h" |
| 30 #include "chrome/common/url_constants.h" | 30 #include "chrome/common/url_constants.h" |
| 31 #include "chrome/test/automation/automation_json_requests.h" | 31 #include "chrome/test/automation/automation_json_requests.h" |
| 32 #include "chrome/test/automation/automation_proxy.h" | 32 #include "chrome/test/automation/automation_proxy.h" |
| 33 #include "chrome/test/automation/browser_proxy.h" | 33 #include "chrome/test/automation/browser_proxy.h" |
| 34 #include "chrome/test/automation/extension_proxy.h" | 34 #include "chrome/test/automation/extension_proxy.h" |
| 35 #include "chrome/test/automation/proxy_launcher.h" | 35 #include "chrome/test/automation/proxy_launcher.h" |
| 36 #include "chrome/test/automation/tab_proxy.h" | 36 #include "chrome/test/automation/tab_proxy.h" |
| 37 #include "chrome/test/webdriver/frame_path.h" | 37 #include "chrome/test/webdriver/frame_path.h" |
| 38 #include "chrome/test/webdriver/utility_functions.h" | 38 #include "chrome/test/webdriver/webdriver_basic_types.h" |
| 39 #include "chrome/test/webdriver/webdriver_error.h" | 39 #include "chrome/test/webdriver/webdriver_error.h" |
| 40 #include "ui/gfx/point.h" | 40 #include "chrome/test/webdriver/webdriver_util.h" |
| 41 | 41 |
| 42 #if defined(OS_WIN) | 42 #if defined(OS_WIN) |
| 43 #include "base/win/registry.h" | 43 #include "base/win/registry.h" |
| 44 #include "base/win/windows_version.h" | 44 #include "base/win/windows_version.h" |
| 45 #endif | 45 #endif |
| 46 | 46 |
| 47 namespace { | 47 namespace { |
| 48 | 48 |
| 49 // Iterates through each browser executable path, and checks if the path exists | 49 // Iterates through each browser executable path, and checks if the path exists |
| 50 // in any of the given locations. If found, returns true and sets |browser_exe|. | 50 // in any of the given locations. If found, returns true and sets |browser_exe|. |
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 295 &unscoped_value, &error_msg)) { | 295 &unscoped_value, &error_msg)) { |
| 296 *error = new Error(kUnknownError, error_msg); | 296 *error = new Error(kUnknownError, error_msg); |
| 297 return; | 297 return; |
| 298 } | 298 } |
| 299 scoped_ptr<Value> value(unscoped_value); | 299 scoped_ptr<Value> value(unscoped_value); |
| 300 if (!value->GetAsString(result)) | 300 if (!value->GetAsString(result)) |
| 301 *error = new Error(kUnknownError, "Execute script did not return string"); | 301 *error = new Error(kUnknownError, "Execute script did not return string"); |
| 302 } | 302 } |
| 303 | 303 |
| 304 void Automation::MouseMove(int tab_id, | 304 void Automation::MouseMove(int tab_id, |
| 305 const gfx::Point& p, | 305 const Point& p, |
| 306 Error** error) { | 306 Error** error) { |
| 307 int windex = 0, tab_index = 0; | 307 int windex = 0, tab_index = 0; |
| 308 *error = GetIndicesForTab(tab_id, &windex, &tab_index); | 308 *error = GetIndicesForTab(tab_id, &windex, &tab_index); |
| 309 if (*error) | 309 if (*error) |
| 310 return; | 310 return; |
| 311 | 311 |
| 312 std::string error_msg; | 312 std::string error_msg; |
| 313 if (!SendMouseMoveJSONRequest( | 313 if (!SendMouseMoveJSONRequest( |
| 314 automation(), windex, tab_index, p.x(), p.y(), &error_msg)) { | 314 automation(), windex, tab_index, p.rounded_x(), p.rounded_y(), |
| 315 &error_msg)) { |
| 315 *error = new Error(kUnknownError, error_msg); | 316 *error = new Error(kUnknownError, error_msg); |
| 316 } | 317 } |
| 317 } | 318 } |
| 318 | 319 |
| 319 void Automation::MouseClick(int tab_id, | 320 void Automation::MouseClick(int tab_id, |
| 320 const gfx::Point& p, | 321 const Point& p, |
| 321 automation::MouseButton button, | 322 automation::MouseButton button, |
| 322 Error** error) { | 323 Error** error) { |
| 323 int windex = 0, tab_index = 0; | 324 int windex = 0, tab_index = 0; |
| 324 *error = GetIndicesForTab(tab_id, &windex, &tab_index); | 325 *error = GetIndicesForTab(tab_id, &windex, &tab_index); |
| 325 if (*error) | 326 if (*error) |
| 326 return; | 327 return; |
| 327 | 328 |
| 328 std::string error_msg; | 329 std::string error_msg; |
| 329 if (!SendMouseClickJSONRequest( | 330 if (!SendMouseClickJSONRequest( |
| 330 automation(), windex, tab_index, button, p.x(), p.y(), &error_msg)) { | 331 automation(), windex, tab_index, button, p.rounded_x(), |
| 332 p.rounded_y(), &error_msg)) { |
| 331 *error = new Error(kUnknownError, error_msg); | 333 *error = new Error(kUnknownError, error_msg); |
| 332 } | 334 } |
| 333 } | 335 } |
| 334 | 336 |
| 335 void Automation::MouseDrag(int tab_id, | 337 void Automation::MouseDrag(int tab_id, |
| 336 const gfx::Point& start, | 338 const Point& start, |
| 337 const gfx::Point& end, | 339 const Point& end, |
| 338 Error** error) { | 340 Error** error) { |
| 339 int windex = 0, tab_index = 0; | 341 int windex = 0, tab_index = 0; |
| 340 *error = GetIndicesForTab(tab_id, &windex, &tab_index); | 342 *error = GetIndicesForTab(tab_id, &windex, &tab_index); |
| 341 if (*error) | 343 if (*error) |
| 342 return; | 344 return; |
| 343 | 345 |
| 344 std::string error_msg; | 346 std::string error_msg; |
| 345 if (!SendMouseDragJSONRequest(automation(), windex, tab_index, start.x(), | 347 if (!SendMouseDragJSONRequest( |
| 346 start.y(), end.x(), end.y(), &error_msg)) { | 348 automation(), windex, tab_index, start.rounded_x(), start.rounded_y(), |
| 349 end.rounded_x(), end.rounded_y(), &error_msg)) { |
| 347 *error = new Error(kUnknownError, error_msg); | 350 *error = new Error(kUnknownError, error_msg); |
| 348 } | 351 } |
| 349 } | 352 } |
| 350 | 353 |
| 351 void Automation::MouseButtonUp(int tab_id, | 354 void Automation::MouseButtonUp(int tab_id, |
| 352 const gfx::Point& p, | 355 const Point& p, |
| 353 Error** error) { | 356 Error** error) { |
| 354 *error = CheckAdvancedInteractionsSupported(); | 357 *error = CheckAdvancedInteractionsSupported(); |
| 355 if (*error) | 358 if (*error) |
| 356 return; | 359 return; |
| 357 | 360 |
| 358 int windex = 0, tab_index = 0; | 361 int windex = 0, tab_index = 0; |
| 359 *error = GetIndicesForTab(tab_id, &windex, &tab_index); | 362 *error = GetIndicesForTab(tab_id, &windex, &tab_index); |
| 360 if (*error) | 363 if (*error) |
| 361 return; | 364 return; |
| 362 | 365 |
| 363 std::string error_msg; | 366 std::string error_msg; |
| 364 if (!SendMouseButtonUpJSONRequest( | 367 if (!SendMouseButtonUpJSONRequest( |
| 365 automation(), windex, tab_index, p.x(), p.y(), &error_msg)) { | 368 automation(), windex, tab_index, p.rounded_x(), p.rounded_y(), |
| 369 &error_msg)) { |
| 366 *error = new Error(kUnknownError, error_msg); | 370 *error = new Error(kUnknownError, error_msg); |
| 367 } | 371 } |
| 368 } | 372 } |
| 369 | 373 |
| 370 void Automation::MouseButtonDown(int tab_id, | 374 void Automation::MouseButtonDown(int tab_id, |
| 371 const gfx::Point& p, | 375 const Point& p, |
| 372 Error** error) { | 376 Error** error) { |
| 373 *error = CheckAdvancedInteractionsSupported(); | 377 *error = CheckAdvancedInteractionsSupported(); |
| 374 if (*error) | 378 if (*error) |
| 375 return; | 379 return; |
| 376 | 380 |
| 377 int windex = 0, tab_index = 0; | 381 int windex = 0, tab_index = 0; |
| 378 *error = GetIndicesForTab(tab_id, &windex, &tab_index); | 382 *error = GetIndicesForTab(tab_id, &windex, &tab_index); |
| 379 if (*error) | 383 if (*error) |
| 380 return; | 384 return; |
| 381 | 385 |
| 382 std::string error_msg; | 386 std::string error_msg; |
| 383 if (!SendMouseButtonDownJSONRequest( | 387 if (!SendMouseButtonDownJSONRequest( |
| 384 automation(), windex, tab_index, p.x(), p.y(), &error_msg)) { | 388 automation(), windex, tab_index, p.rounded_x(), p.rounded_y(), |
| 389 &error_msg)) { |
| 385 *error = new Error(kUnknownError, error_msg); | 390 *error = new Error(kUnknownError, error_msg); |
| 386 } | 391 } |
| 387 } | 392 } |
| 388 | 393 |
| 389 void Automation::MouseDoubleClick(int tab_id, | 394 void Automation::MouseDoubleClick(int tab_id, |
| 390 const gfx::Point& p, | 395 const Point& p, |
| 391 Error** error) { | 396 Error** error) { |
| 392 *error = CheckAdvancedInteractionsSupported(); | 397 *error = CheckAdvancedInteractionsSupported(); |
| 393 if (*error) | 398 if (*error) |
| 394 return; | 399 return; |
| 395 | 400 |
| 396 int windex = 0, tab_index = 0; | 401 int windex = 0, tab_index = 0; |
| 397 *error = GetIndicesForTab(tab_id, &windex, &tab_index); | 402 *error = GetIndicesForTab(tab_id, &windex, &tab_index); |
| 398 if (*error) | 403 if (*error) |
| 399 return; | 404 return; |
| 400 | 405 |
| 401 std::string error_msg; | 406 std::string error_msg; |
| 402 if (!SendMouseDoubleClickJSONRequest( | 407 if (!SendMouseDoubleClickJSONRequest( |
| 403 automation(), windex, tab_index, p.x(), p.y(), &error_msg)) { | 408 automation(), windex, tab_index, p.rounded_x(), p.rounded_y(), |
| 409 &error_msg)) { |
| 404 *error = new Error(kUnknownError, error_msg); | 410 *error = new Error(kUnknownError, error_msg); |
| 405 } | 411 } |
| 406 } | 412 } |
| 407 | 413 |
| 408 void Automation::DragAndDropFilePaths( | 414 void Automation::DragAndDropFilePaths( |
| 409 int tab_id, const gfx::Point& location, | 415 int tab_id, const Point& location, |
| 410 const std::vector<FilePath::StringType>& paths, Error** error) { | 416 const std::vector<FilePath::StringType>& paths, Error** error) { |
| 411 int windex = 0, tab_index = 0; | 417 int windex = 0, tab_index = 0; |
| 412 *error = GetIndicesForTab(tab_id, &windex, &tab_index); | 418 *error = GetIndicesForTab(tab_id, &windex, &tab_index); |
| 413 if (*error) { | 419 if (*error) { |
| 414 return; | 420 return; |
| 415 } | 421 } |
| 416 | 422 |
| 417 std::string error_msg; | 423 std::string error_msg; |
| 418 if (!SendDragAndDropFilePathsJSONRequest( | 424 if (!SendDragAndDropFilePathsJSONRequest( |
| 419 automation(), windex, tab_index, location.x(), location.y(), paths, | 425 automation(), windex, tab_index, location.rounded_x(), |
| 420 &error_msg)) { | 426 location.rounded_y(), paths, &error_msg)) { |
| 421 *error = new Error(kUnknownError, error_msg); | 427 *error = new Error(kUnknownError, error_msg); |
| 422 } | 428 } |
| 423 } | 429 } |
| 424 | 430 |
| 425 void Automation::SendWebKeyEvent(int tab_id, | 431 void Automation::SendWebKeyEvent(int tab_id, |
| 426 const WebKeyEvent& key_event, | 432 const WebKeyEvent& key_event, |
| 427 Error** error) { | 433 Error** error) { |
| 428 int windex = 0, tab_index = 0; | 434 int windex = 0, tab_index = 0; |
| 429 *error = GetIndicesForTab(tab_id, &windex, &tab_index); | 435 *error = GetIndicesForTab(tab_id, &windex, &tab_index); |
| 430 if (*error) | 436 if (*error) |
| (...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 715 768, 0, "Alerts are not supported for this version of Chrome"); | 721 768, 0, "Alerts are not supported for this version of Chrome"); |
| 716 } | 722 } |
| 717 | 723 |
| 718 Error* Automation::CheckAdvancedInteractionsSupported() { | 724 Error* Automation::CheckAdvancedInteractionsSupported() { |
| 719 const char* message = | 725 const char* message = |
| 720 "Advanced user interactions are not supported for this version of Chrome"; | 726 "Advanced user interactions are not supported for this version of Chrome"; |
| 721 return CheckVersion(750, 0, message); | 727 return CheckVersion(750, 0, message); |
| 722 } | 728 } |
| 723 | 729 |
| 724 } // namespace webdriver | 730 } // namespace webdriver |
| OLD | NEW |