| 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/automation/automation_json_requests.h" | 5 #include "chrome/test/automation/automation_json_requests.h" |
| 6 | 6 |
| 7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
| 8 #include "base/file_path.h" | 8 #include "base/file_path.h" |
| 9 #include "base/format_macros.h" | 9 #include "base/format_macros.h" |
| 10 #include "base/json/json_reader.h" | 10 #include "base/json/json_reader.h" |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 73 ui::KeyboardCode key_code, | 73 ui::KeyboardCode key_code, |
| 74 const std::string& unmodified_text, | 74 const std::string& unmodified_text, |
| 75 const std::string& modified_text, | 75 const std::string& modified_text, |
| 76 int modifiers) | 76 int modifiers) |
| 77 : type(type), | 77 : type(type), |
| 78 key_code(key_code), | 78 key_code(key_code), |
| 79 unmodified_text(unmodified_text), | 79 unmodified_text(unmodified_text), |
| 80 modified_text(modified_text), | 80 modified_text(modified_text), |
| 81 modifiers(modifiers) {} | 81 modifiers(modifiers) {} |
| 82 | 82 |
| 83 WebViewInfo::WebViewInfo( |
| 84 AutomationId::Type type, |
| 85 const WebViewId& view_id, |
| 86 const std::string& extension_id) |
| 87 : type(type), |
| 88 view_id(view_id), |
| 89 extension_id(extension_id) {} |
| 90 |
| 91 WebViewInfo::~WebViewInfo() {} |
| 92 |
| 93 /* |
| 94 WebViewLocator::WebViewLocator() {} |
| 95 |
| 96 WebViewLocator::~WebViewLocator() {} |
| 97 */ |
| 98 |
| 99 void WebViewLocator::UpdateDictionary(DictionaryValue* dict) const { |
| 100 if (type == kTypeIndexPair) { |
| 101 dict->SetInteger("windex", locator.index_pair.browser_index); |
| 102 dict->SetInteger("tab_index", locator.index_pair.tab_index); |
| 103 } else if (type == kTypeViewId) { |
| 104 dict->Set("view_id", locator.view_id.ToValue()); |
| 105 } |
| 106 } |
| 107 |
| 108 void WebViewId::UpdateDictionary(DictionaryValue* dict) const { |
| 109 if (type == kTypeTabId) { |
| 110 dict->SetInteger("id", id.tab_id); |
| 111 } else if (type == kTypeViewId) { |
| 112 dict->Set("view_id", id.view_id.ToValue()); |
| 113 } |
| 114 } |
| 115 |
| 116 /* |
| 117 WebViewId::WebViewId() {} |
| 118 |
| 119 WebViewId::~WebViewId() {} |
| 120 */ |
| 121 |
| 83 bool SendAutomationJSONRequest(AutomationMessageSender* sender, | 122 bool SendAutomationJSONRequest(AutomationMessageSender* sender, |
| 84 const std::string& request, | 123 const std::string& request, |
| 85 int timeout_ms, | 124 int timeout_ms, |
| 86 std::string* reply, | 125 std::string* reply, |
| 87 bool* success) { | 126 bool* success) { |
| 88 return sender->Send(new AutomationMsg_SendJSONRequest( | 127 return sender->Send(new AutomationMsg_SendJSONRequest( |
| 89 -1, request, reply, success), timeout_ms); | 128 -1, request, reply, success), timeout_ms); |
| 90 } | 129 } |
| 91 | 130 |
| 92 bool SendAutomationJSONRequestWithDefaultTimeout( | 131 bool SendAutomationJSONRequestWithDefaultTimeout( |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 155 return false; | 194 return false; |
| 156 int response = 0; | 195 int response = 0; |
| 157 if (!reply_dict.GetInteger("result", &response)) | 196 if (!reply_dict.GetInteger("result", &response)) |
| 158 return false; | 197 return false; |
| 159 *nav_response = static_cast<AutomationMsg_NavigationResponseValues>(response); | 198 *nav_response = static_cast<AutomationMsg_NavigationResponseValues>(response); |
| 160 return true; | 199 return true; |
| 161 } | 200 } |
| 162 | 201 |
| 163 bool SendExecuteJavascriptJSONRequest( | 202 bool SendExecuteJavascriptJSONRequest( |
| 164 AutomationMessageSender* sender, | 203 AutomationMessageSender* sender, |
| 165 int browser_index, | 204 const WebViewLocator& locator, |
| 166 int tab_index, | |
| 167 const std::string& frame_xpath, | 205 const std::string& frame_xpath, |
| 168 const std::string& javascript, | 206 const std::string& javascript, |
| 169 Value** result, | 207 Value** result, |
| 170 std::string* error_msg) { | 208 std::string* error_msg) { |
| 171 DictionaryValue dict; | 209 DictionaryValue dict; |
| 172 dict.SetString("command", "ExecuteJavascript"); | 210 dict.SetString("command", "ExecuteJavascript"); |
| 173 dict.SetInteger("windex", browser_index); | 211 locator.UpdateDictionary(&dict); |
| 174 dict.SetInteger("tab_index", tab_index); | |
| 175 dict.SetString("frame_xpath", frame_xpath); | 212 dict.SetString("frame_xpath", frame_xpath); |
| 176 dict.SetString("javascript", javascript); | 213 dict.SetString("javascript", javascript); |
| 177 DictionaryValue reply_dict; | 214 DictionaryValue reply_dict; |
| 178 if (!SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg)) | 215 if (!SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg)) |
| 179 return false; | 216 return false; |
| 180 | 217 |
| 181 std::string json; | 218 std::string json; |
| 182 if (!reply_dict.GetString("result", &json)) { | 219 if (!reply_dict.GetString("result", &json)) { |
| 183 LOG(ERROR) << "Executed javascript but received no 'result'"; | 220 LOG(ERROR) << "Executed javascript but received no 'result'"; |
| 184 return false; | 221 return false; |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 246 DictionaryValue dict; | 283 DictionaryValue dict; |
| 247 dict.SetString("command", "CaptureEntirePage"); | 284 dict.SetString("command", "CaptureEntirePage"); |
| 248 dict.SetInteger("windex", browser_index); | 285 dict.SetInteger("windex", browser_index); |
| 249 dict.SetInteger("tab_index", tab_index); | 286 dict.SetInteger("tab_index", tab_index); |
| 250 dict.SetString("path", path.value()); | 287 dict.SetString("path", path.value()); |
| 251 DictionaryValue reply_dict; | 288 DictionaryValue reply_dict; |
| 252 | 289 |
| 253 return SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg); | 290 return SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg); |
| 254 } | 291 } |
| 255 | 292 |
| 256 bool SendGetTabURLJSONRequest( | |
| 257 AutomationMessageSender* sender, | |
| 258 int browser_index, | |
| 259 int tab_index, | |
| 260 std::string* url, | |
| 261 std::string* error_msg) { | |
| 262 DictionaryValue dict; | |
| 263 dict.SetString("command", "GetTabURL"); | |
| 264 dict.SetInteger("windex", browser_index); | |
| 265 dict.SetInteger("tab_index", tab_index); | |
| 266 DictionaryValue reply_dict; | |
| 267 if (!SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg)) | |
| 268 return false; | |
| 269 return reply_dict.GetString("url", url); | |
| 270 } | |
| 271 | |
| 272 bool SendGetTabTitleJSONRequest( | |
| 273 AutomationMessageSender* sender, | |
| 274 int browser_index, | |
| 275 int tab_index, | |
| 276 std::string* tab_title, | |
| 277 std::string* error_msg) { | |
| 278 DictionaryValue dict; | |
| 279 dict.SetString("command", "GetTabTitle"); | |
| 280 dict.SetInteger("windex", browser_index); | |
| 281 dict.SetInteger("tab_index", tab_index); | |
| 282 DictionaryValue reply_dict; | |
| 283 if (!SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg)) | |
| 284 return false; | |
| 285 return reply_dict.GetString("title", tab_title); | |
| 286 } | |
| 287 | |
| 288 bool SendGetCookiesJSONRequest( | 293 bool SendGetCookiesJSONRequest( |
| 289 AutomationMessageSender* sender, | 294 AutomationMessageSender* sender, |
| 290 const std::string& url, | 295 const std::string& url, |
| 291 ListValue** cookies, | 296 ListValue** cookies, |
| 292 std::string* error_msg) { | 297 std::string* error_msg) { |
| 293 DictionaryValue dict; | 298 DictionaryValue dict; |
| 294 dict.SetString("command", "GetCookies"); | 299 dict.SetString("command", "GetCookies"); |
| 295 dict.SetString("url", url); | 300 dict.SetString("url", url); |
| 296 DictionaryValue reply_dict; | 301 DictionaryValue reply_dict; |
| 297 if (!SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg)) | 302 if (!SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg)) |
| (...skipping 29 matching lines...) Expand all Loading... |
| 327 DictionaryValue dict; | 332 DictionaryValue dict; |
| 328 dict.SetString("command", "SetCookie"); | 333 dict.SetString("command", "SetCookie"); |
| 329 dict.SetString("url", url); | 334 dict.SetString("url", url); |
| 330 dict.Set("cookie", cookie_dict->DeepCopy()); | 335 dict.Set("cookie", cookie_dict->DeepCopy()); |
| 331 DictionaryValue reply_dict; | 336 DictionaryValue reply_dict; |
| 332 return SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg); | 337 return SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg); |
| 333 } | 338 } |
| 334 | 339 |
| 335 bool SendGetTabIdsJSONRequest( | 340 bool SendGetTabIdsJSONRequest( |
| 336 AutomationMessageSender* sender, | 341 AutomationMessageSender* sender, |
| 337 std::vector<int>* tab_ids, | 342 std::vector<WebViewInfo>* views, |
| 338 std::string* error_msg) { | 343 std::string* error_msg) { |
| 339 DictionaryValue dict; | 344 DictionaryValue dict; |
| 340 dict.SetString("command", "GetTabIds"); | 345 dict.SetString("command", "GetTabIds"); |
| 341 DictionaryValue reply_dict; | 346 DictionaryValue reply_dict; |
| 342 if (!SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg)) | 347 if (!SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg)) |
| 343 return false; | 348 return false; |
| 344 ListValue* id_list; | 349 ListValue* id_list; |
| 345 if (!reply_dict.GetList("ids", &id_list)) { | 350 if (reply_dict.GetList("ids", &id_list)) { |
| 346 LOG(ERROR) << "Returned 'ids' key is missing or invalid"; | 351 for (size_t i = 0; i < id_list->GetSize(); ++i) { |
| 352 int id; |
| 353 if (!id_list->GetInteger(i, &id)) { |
| 354 *error_msg = "Returned id in 'tab_ids' is not an integer"; |
| 355 return false; |
| 356 } |
| 357 views->push_back(WebViewInfo( |
| 358 AutomationId::kTypeTab, WebViewId::ForTab(id), std::string())); |
| 359 } |
| 360 } |
| 361 return true; |
| 362 } |
| 363 |
| 364 bool SendGetWebViewsJSONRequest( |
| 365 AutomationMessageSender* sender, |
| 366 std::vector<WebViewInfo>* views, |
| 367 std::string* error_msg) { |
| 368 DictionaryValue dict; |
| 369 dict.SetString("command", "GetViews"); |
| 370 DictionaryValue reply_dict; |
| 371 if (!SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg)) |
| 372 return false; |
| 373 ListValue* views_list; |
| 374 if (!reply_dict.GetList("views", &views_list)) { |
| 375 *error_msg = "Returned 'views' key is missing or invalid"; |
| 347 return false; | 376 return false; |
| 348 } | 377 } |
| 349 std::vector<int> temp_ids; | 378 for (size_t i = 0; i < views_list->GetSize(); ++i) { |
| 350 for (size_t i = 0; i < id_list->GetSize(); ++i) { | 379 DictionaryValue* view_dict; |
| 351 int id; | 380 if (!views_list->GetDictionary(i, &view_dict)) { |
| 352 if (!id_list->GetInteger(i, &id)) { | 381 *error_msg = "Returned 'views' key contains non-dictionary values"; |
| 353 LOG(ERROR) << "Returned 'ids' key contains non-integer values"; | |
| 354 return false; | 382 return false; |
| 355 } | 383 } |
| 356 temp_ids.push_back(id); | 384 Value* view_id_value; |
| 385 std::string extension_id; |
| 386 if (!view_dict->Get("view_id", &view_id_value)) { |
| 387 *error_msg = "Missing 'view_id'"; |
| 388 return false; |
| 389 } |
| 390 AutomationId view_id; |
| 391 if (!AutomationId::FromValue(view_id_value, &view_id, error_msg)) |
| 392 return false; |
| 393 view_dict->GetString("extension_id", &extension_id); |
| 394 views->push_back(WebViewInfo( |
| 395 static_cast<AutomationId::Type>(0), WebViewId::ForView(view_id), extensi
on_id)); |
| 357 } | 396 } |
| 358 *tab_ids = temp_ids; | |
| 359 return true; | 397 return true; |
| 360 } | 398 } |
| 361 | 399 |
| 362 bool SendIsTabIdValidJSONRequest( | 400 bool SendIsTabIdValidJSONRequest( |
| 363 AutomationMessageSender* sender, | 401 AutomationMessageSender* sender, |
| 364 int tab_id, | 402 const WebViewId& view_id, |
| 365 bool* is_valid, | 403 bool* is_valid, |
| 366 std::string* error_msg) { | 404 std::string* error_msg) { |
| 367 DictionaryValue dict; | 405 DictionaryValue dict; |
| 368 dict.SetString("command", "IsTabIdValid"); | 406 dict.SetString("command", "IsTabIdValid"); |
| 369 dict.SetInteger("id", tab_id); | 407 view_id.UpdateDictionary(&dict); |
| 370 DictionaryValue reply_dict; | 408 DictionaryValue reply_dict; |
| 371 if (!SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg)) | 409 if (!SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg)) |
| 372 return false; | 410 return false; |
| 373 return reply_dict.GetBoolean("is_valid", is_valid); | 411 return reply_dict.GetBoolean("is_valid", is_valid); |
| 374 } | 412 } |
| 375 | 413 |
| 414 bool SendDoesViewExistJSONRequest( |
| 415 AutomationMessageSender* sender, |
| 416 const WebViewId& view_id, |
| 417 bool* does_exist, |
| 418 std::string* error_msg) { |
| 419 DictionaryValue dict; |
| 420 dict.SetString("command", "DoesViewExist"); |
| 421 view_id.UpdateDictionary(&dict); |
| 422 DictionaryValue reply_dict; |
| 423 if (!SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg)) |
| 424 return false; |
| 425 return reply_dict.GetBoolean("does_exist", does_exist); |
| 426 } |
| 427 |
| 376 bool SendCloseTabJSONRequest( | 428 bool SendCloseTabJSONRequest( |
| 377 AutomationMessageSender* sender, | 429 AutomationMessageSender* sender, |
| 378 int browser_index, | 430 int browser_index, |
| 379 int tab_index, | 431 int tab_index, |
| 380 std::string* error_msg) { | 432 std::string* error_msg) { |
| 381 DictionaryValue dict; | 433 DictionaryValue dict; |
| 382 dict.SetString("command", "CloseTab"); | 434 dict.SetString("command", "CloseTab"); |
| 383 dict.SetInteger("windex", browser_index); | 435 dict.SetInteger("windex", browser_index); |
| 384 dict.SetInteger("tab_index", tab_index); | 436 dict.SetInteger("tab_index", tab_index); |
| 385 DictionaryValue reply_dict; | 437 DictionaryValue reply_dict; |
| 386 return SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg); | 438 return SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg); |
| 387 } | 439 } |
| 388 | 440 |
| 389 bool SendMouseMoveJSONRequest( | 441 bool SendMouseMoveJSONRequest( |
| 390 AutomationMessageSender* sender, | 442 AutomationMessageSender* sender, |
| 391 int browser_index, | 443 const WebViewLocator& locator, |
| 392 int tab_index, | |
| 393 int x, | 444 int x, |
| 394 int y, | 445 int y, |
| 395 std::string* error_msg) { | 446 std::string* error_msg) { |
| 396 DictionaryValue dict; | 447 DictionaryValue dict; |
| 397 dict.SetString("command", "WebkitMouseMove"); | 448 dict.SetString("command", "WebkitMouseMove"); |
| 398 dict.SetInteger("windex", browser_index); | 449 locator.UpdateDictionary(&dict); |
| 399 dict.SetInteger("tab_index", tab_index); | |
| 400 dict.SetInteger("x", x); | 450 dict.SetInteger("x", x); |
| 401 dict.SetInteger("y", y); | 451 dict.SetInteger("y", y); |
| 402 DictionaryValue reply_dict; | 452 DictionaryValue reply_dict; |
| 403 return SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg); | 453 return SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg); |
| 404 } | 454 } |
| 405 | 455 |
| 406 bool SendMouseClickJSONRequest( | 456 bool SendMouseClickJSONRequest( |
| 407 AutomationMessageSender* sender, | 457 AutomationMessageSender* sender, |
| 408 int browser_index, | 458 const WebViewLocator& locator, |
| 409 int tab_index, | |
| 410 automation::MouseButton button, | 459 automation::MouseButton button, |
| 411 int x, | 460 int x, |
| 412 int y, | 461 int y, |
| 413 std::string* error_msg) { | 462 std::string* error_msg) { |
| 414 DictionaryValue dict; | 463 DictionaryValue dict; |
| 415 dict.SetString("command", "WebkitMouseClick"); | 464 dict.SetString("command", "WebkitMouseClick"); |
| 416 dict.SetInteger("windex", browser_index); | 465 locator.UpdateDictionary(&dict); |
| 417 dict.SetInteger("tab_index", tab_index); | |
| 418 dict.SetInteger("button", button); | 466 dict.SetInteger("button", button); |
| 419 dict.SetInteger("x", x); | 467 dict.SetInteger("x", x); |
| 420 dict.SetInteger("y", y); | 468 dict.SetInteger("y", y); |
| 421 DictionaryValue reply_dict; | 469 DictionaryValue reply_dict; |
| 422 return SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg); | 470 return SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg); |
| 423 } | 471 } |
| 424 | 472 |
| 425 bool SendMouseDragJSONRequest( | 473 bool SendMouseDragJSONRequest( |
| 426 AutomationMessageSender* sender, | 474 AutomationMessageSender* sender, |
| 427 int browser_index, | 475 const WebViewLocator& locator, |
| 428 int tab_index, | |
| 429 int start_x, | 476 int start_x, |
| 430 int start_y, | 477 int start_y, |
| 431 int end_x, | 478 int end_x, |
| 432 int end_y, | 479 int end_y, |
| 433 std::string* error_msg) { | 480 std::string* error_msg) { |
| 434 DictionaryValue dict; | 481 DictionaryValue dict; |
| 435 dict.SetString("command", "WebkitMouseDrag"); | 482 dict.SetString("command", "WebkitMouseDrag"); |
| 436 dict.SetInteger("windex", browser_index); | 483 locator.UpdateDictionary(&dict); |
| 437 dict.SetInteger("tab_index", tab_index); | |
| 438 dict.SetInteger("start_x", start_x); | 484 dict.SetInteger("start_x", start_x); |
| 439 dict.SetInteger("start_y", start_y); | 485 dict.SetInteger("start_y", start_y); |
| 440 dict.SetInteger("end_x", end_x); | 486 dict.SetInteger("end_x", end_x); |
| 441 dict.SetInteger("end_y", end_y); | 487 dict.SetInteger("end_y", end_y); |
| 442 DictionaryValue reply_dict; | 488 DictionaryValue reply_dict; |
| 443 return SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg); | 489 return SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg); |
| 444 } | 490 } |
| 445 | 491 |
| 446 bool SendMouseButtonDownJSONRequest( | 492 bool SendMouseButtonDownJSONRequest( |
| 447 AutomationMessageSender* sender, | 493 AutomationMessageSender* sender, |
| 448 int browser_index, | 494 const WebViewLocator& locator, |
| 449 int tab_index, | |
| 450 int x, | 495 int x, |
| 451 int y, | 496 int y, |
| 452 std::string* error_msg) { | 497 std::string* error_msg) { |
| 453 DictionaryValue dict; | 498 DictionaryValue dict; |
| 454 dict.SetString("command", "WebkitMouseButtonDown"); | 499 dict.SetString("command", "WebkitMouseButtonDown"); |
| 455 dict.SetInteger("windex", browser_index); | 500 locator.UpdateDictionary(&dict); |
| 456 dict.SetInteger("tab_index", tab_index); | |
| 457 dict.SetInteger("x", x); | 501 dict.SetInteger("x", x); |
| 458 dict.SetInteger("y", y); | 502 dict.SetInteger("y", y); |
| 459 DictionaryValue reply_dict; | 503 DictionaryValue reply_dict; |
| 460 return SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg); | 504 return SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg); |
| 461 } | 505 } |
| 462 | 506 |
| 463 bool SendMouseButtonUpJSONRequest( | 507 bool SendMouseButtonUpJSONRequest( |
| 464 AutomationMessageSender* sender, | 508 AutomationMessageSender* sender, |
| 465 int browser_index, | 509 const WebViewLocator& locator, |
| 466 int tab_index, | |
| 467 int x, | 510 int x, |
| 468 int y, | 511 int y, |
| 469 std::string* error_msg) { | 512 std::string* error_msg) { |
| 470 DictionaryValue dict; | 513 DictionaryValue dict; |
| 471 dict.SetString("command", "WebkitMouseButtonUp"); | 514 dict.SetString("command", "WebkitMouseButtonUp"); |
| 472 dict.SetInteger("windex", browser_index); | 515 locator.UpdateDictionary(&dict); |
| 473 dict.SetInteger("tab_index", tab_index); | |
| 474 dict.SetInteger("x", x); | 516 dict.SetInteger("x", x); |
| 475 dict.SetInteger("y", y); | 517 dict.SetInteger("y", y); |
| 476 DictionaryValue reply_dict; | 518 DictionaryValue reply_dict; |
| 477 return SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg); | 519 return SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg); |
| 478 } | 520 } |
| 479 | 521 |
| 480 bool SendMouseDoubleClickJSONRequest( | 522 bool SendMouseDoubleClickJSONRequest( |
| 481 AutomationMessageSender* sender, | 523 AutomationMessageSender* sender, |
| 482 int browser_index, | 524 const WebViewLocator& locator, |
| 483 int tab_index, | |
| 484 int x, | 525 int x, |
| 485 int y, | 526 int y, |
| 486 std::string* error_msg) { | 527 std::string* error_msg) { |
| 487 DictionaryValue dict; | 528 DictionaryValue dict; |
| 488 dict.SetString("command", "WebkitMouseDoubleClick"); | 529 dict.SetString("command", "WebkitMouseDoubleClick"); |
| 489 dict.SetInteger("windex", browser_index); | 530 locator.UpdateDictionary(&dict); |
| 490 dict.SetInteger("tab_index", tab_index); | |
| 491 dict.SetInteger("x", x); | 531 dict.SetInteger("x", x); |
| 492 dict.SetInteger("y", y); | 532 dict.SetInteger("y", y); |
| 493 DictionaryValue reply_dict; | 533 DictionaryValue reply_dict; |
| 494 return SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg); | 534 return SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg); |
| 495 } | 535 } |
| 496 | 536 |
| 497 bool SendWebKeyEventJSONRequest( | 537 bool SendWebKeyEventJSONRequest( |
| 498 AutomationMessageSender* sender, | 538 AutomationMessageSender* sender, |
| 499 int browser_index, | 539 const WebViewLocator& locator, |
| 500 int tab_index, | |
| 501 const WebKeyEvent& key_event, | 540 const WebKeyEvent& key_event, |
| 502 std::string* error_msg) { | 541 std::string* error_msg) { |
| 503 DictionaryValue dict; | 542 DictionaryValue dict; |
| 504 dict.SetString("command", "SendWebkitKeyEvent"); | 543 dict.SetString("command", "SendWebkitKeyEvent"); |
| 505 dict.SetInteger("windex", browser_index); | 544 locator.UpdateDictionary(&dict); |
| 506 dict.SetInteger("tab_index", tab_index); | |
| 507 dict.SetInteger("type", key_event.type); | 545 dict.SetInteger("type", key_event.type); |
| 508 dict.SetInteger("nativeKeyCode", key_event.key_code); | 546 dict.SetInteger("nativeKeyCode", key_event.key_code); |
| 509 dict.SetInteger("windowsKeyCode", key_event.key_code); | 547 dict.SetInteger("windowsKeyCode", key_event.key_code); |
| 510 dict.SetString("unmodifiedText", key_event.unmodified_text); | 548 dict.SetString("unmodifiedText", key_event.unmodified_text); |
| 511 dict.SetString("text", key_event.modified_text); | 549 dict.SetString("text", key_event.modified_text); |
| 512 dict.SetInteger("modifiers", key_event.modifiers); | 550 dict.SetInteger("modifiers", key_event.modifiers); |
| 513 dict.SetBoolean("isSystemKey", false); | 551 dict.SetBoolean("isSystemKey", false); |
| 514 DictionaryValue reply_dict; | 552 DictionaryValue reply_dict; |
| 515 return SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg); | 553 return SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg); |
| 516 } | 554 } |
| (...skipping 10 matching lines...) Expand all Loading... |
| 527 dict.SetInteger("windex", browser_index); | 565 dict.SetInteger("windex", browser_index); |
| 528 dict.SetInteger("tab_index", tab_index); | 566 dict.SetInteger("tab_index", tab_index); |
| 529 dict.SetInteger("keyCode", key_code); | 567 dict.SetInteger("keyCode", key_code); |
| 530 dict.SetInteger("modifiers", modifiers); | 568 dict.SetInteger("modifiers", modifiers); |
| 531 DictionaryValue reply_dict; | 569 DictionaryValue reply_dict; |
| 532 return SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg); | 570 return SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg); |
| 533 } | 571 } |
| 534 | 572 |
| 535 bool SendDragAndDropFilePathsJSONRequest( | 573 bool SendDragAndDropFilePathsJSONRequest( |
| 536 AutomationMessageSender* sender, | 574 AutomationMessageSender* sender, |
| 537 int browser_index, | 575 const WebViewLocator& locator, |
| 538 int tab_index, | |
| 539 int x, | 576 int x, |
| 540 int y, | 577 int y, |
| 541 const std::vector<FilePath::StringType>& paths, | 578 const std::vector<FilePath::StringType>& paths, |
| 542 std::string* error_msg) { | 579 std::string* error_msg) { |
| 543 DictionaryValue dict; | 580 DictionaryValue dict; |
| 544 dict.SetString("command", "DragAndDropFilePaths"); | 581 dict.SetString("command", "DragAndDropFilePaths"); |
| 545 dict.SetInteger("windex", browser_index); | 582 locator.UpdateDictionary(&dict); |
| 546 dict.SetInteger("tab_index", tab_index); | |
| 547 dict.SetInteger("x", x); | 583 dict.SetInteger("x", x); |
| 548 dict.SetInteger("y", y); | 584 dict.SetInteger("y", y); |
| 549 | 585 |
| 550 ListValue* list_value = new ListValue(); | 586 ListValue* list_value = new ListValue(); |
| 551 for (size_t path_index = 0; path_index < paths.size(); ++path_index) { | 587 for (size_t path_index = 0; path_index < paths.size(); ++path_index) { |
| 552 list_value->Append(Value::CreateStringValue(paths[path_index])); | 588 list_value->Append(Value::CreateStringValue(paths[path_index])); |
| 553 } | 589 } |
| 554 dict.Set("paths", list_value); | 590 dict.Set("paths", list_value); |
| 555 | 591 |
| 556 DictionaryValue reply_dict; | 592 DictionaryValue reply_dict; |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 643 dict.SetBoolean("with_ui", with_ui); | 679 dict.SetBoolean("with_ui", with_ui); |
| 644 DictionaryValue reply_dict; | 680 DictionaryValue reply_dict; |
| 645 if (!SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg)) | 681 if (!SendAutomationJSONRequest(sender, dict, &reply_dict, error_msg)) |
| 646 return false; | 682 return false; |
| 647 if (!reply_dict.GetString("id", extension_id)) { | 683 if (!reply_dict.GetString("id", extension_id)) { |
| 648 *error_msg = "Missing or invalid 'id'"; | 684 *error_msg = "Missing or invalid 'id'"; |
| 649 return false; | 685 return false; |
| 650 } | 686 } |
| 651 return true; | 687 return true; |
| 652 } | 688 } |
| OLD | NEW |