Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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/browser/automation/testing_automation_provider.h" | 5 #include "chrome/browser/automation/testing_automation_provider.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <set> | 8 #include <set> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 395 IPC_MESSAGE_HANDLER(AutomationMsg_Type, GetType) | 395 IPC_MESSAGE_HANDLER(AutomationMsg_Type, GetType) |
| 396 IPC_MESSAGE_HANDLER(AutomationMsg_Tab, GetTab) | 396 IPC_MESSAGE_HANDLER(AutomationMsg_Tab, GetTab) |
| 397 IPC_MESSAGE_HANDLER(AutomationMsg_TabTitle, GetTabTitle) | 397 IPC_MESSAGE_HANDLER(AutomationMsg_TabTitle, GetTabTitle) |
| 398 IPC_MESSAGE_HANDLER(AutomationMsg_TabIndex, GetTabIndex) | 398 IPC_MESSAGE_HANDLER(AutomationMsg_TabIndex, GetTabIndex) |
| 399 IPC_MESSAGE_HANDLER(AutomationMsg_TabURL, GetTabURL) | 399 IPC_MESSAGE_HANDLER(AutomationMsg_TabURL, GetTabURL) |
| 400 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_DomOperation, | 400 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_DomOperation, |
| 401 ExecuteJavascript) | 401 ExecuteJavascript) |
| 402 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_OpenNewBrowserWindowOfType, | 402 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_OpenNewBrowserWindowOfType, |
| 403 OpenNewBrowserWindowOfType) | 403 OpenNewBrowserWindowOfType) |
| 404 IPC_MESSAGE_HANDLER(AutomationMsg_WindowForBrowser, GetWindowForBrowser) | 404 IPC_MESSAGE_HANDLER(AutomationMsg_WindowForBrowser, GetWindowForBrowser) |
| 405 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_WaitForTabToBeRestored, | |
| 406 WaitForTabToBeRestored) | |
| 407 IPC_MESSAGE_HANDLER(AutomationMsg_GetSecurityState, GetSecurityState) | |
| 408 IPC_MESSAGE_HANDLER(AutomationMsg_GetPageType, GetPageType) | |
| 409 IPC_MESSAGE_HANDLER(AutomationMsg_GetMetricEventDuration, | 405 IPC_MESSAGE_HANDLER(AutomationMsg_GetMetricEventDuration, |
| 410 GetMetricEventDuration) | 406 GetMetricEventDuration) |
| 411 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_ActionOnSSLBlockingPage, | |
| 412 ActionOnSSLBlockingPage) | |
| 413 IPC_MESSAGE_HANDLER(AutomationMsg_BringBrowserToFront, BringBrowserToFront) | 407 IPC_MESSAGE_HANDLER(AutomationMsg_BringBrowserToFront, BringBrowserToFront) |
| 414 IPC_MESSAGE_HANDLER(AutomationMsg_OpenFindInPage, | 408 IPC_MESSAGE_HANDLER(AutomationMsg_OpenFindInPage, |
| 415 HandleOpenFindInPageRequest) | 409 HandleOpenFindInPageRequest) |
| 416 IPC_MESSAGE_HANDLER(AutomationMsg_FindWindowVisibility, | 410 IPC_MESSAGE_HANDLER(AutomationMsg_FindWindowVisibility, |
| 417 GetFindWindowVisibility) | 411 GetFindWindowVisibility) |
| 418 IPC_MESSAGE_HANDLER(AutomationMsg_BookmarkBarVisibility, | 412 IPC_MESSAGE_HANDLER(AutomationMsg_BookmarkBarVisibility, |
| 419 GetBookmarkBarVisibility) | 413 GetBookmarkBarVisibility) |
| 420 IPC_MESSAGE_HANDLER(AutomationMsg_GetBookmarksAsJSON, | 414 IPC_MESSAGE_HANDLER(AutomationMsg_GetBookmarksAsJSON, |
| 421 GetBookmarksAsJSON) | 415 GetBookmarksAsJSON) |
| 422 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_WaitForBookmarkModelToLoad, | 416 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_WaitForBookmarkModelToLoad, |
| (...skipping 779 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1202 | 1196 |
| 1203 if (browser_tracker_->ContainsHandle(browser_handle)) { | 1197 if (browser_tracker_->ContainsHandle(browser_handle)) { |
| 1204 Browser* browser = browser_tracker_->GetResource(browser_handle); | 1198 Browser* browser = browser_tracker_->GetResource(browser_handle); |
| 1205 gfx::NativeWindow win = browser->window()->GetNativeWindow(); | 1199 gfx::NativeWindow win = browser->window()->GetNativeWindow(); |
| 1206 // Add() returns the existing handle for the resource if any. | 1200 // Add() returns the existing handle for the resource if any. |
| 1207 *handle = window_tracker_->Add(win); | 1201 *handle = window_tracker_->Add(win); |
| 1208 *success = true; | 1202 *success = true; |
| 1209 } | 1203 } |
| 1210 } | 1204 } |
| 1211 | 1205 |
| 1212 void TestingAutomationProvider::WaitForTabToBeRestored( | |
| 1213 int tab_handle, | |
| 1214 IPC::Message* reply_message) { | |
| 1215 if (tab_tracker_->ContainsHandle(tab_handle)) { | |
| 1216 NavigationController* tab = tab_tracker_->GetResource(tab_handle); | |
| 1217 restore_tracker_.reset( | |
| 1218 new NavigationControllerRestoredObserver(this, tab, reply_message)); | |
| 1219 } else { | |
| 1220 AutomationMsg_WaitForTabToBeRestored::WriteReplyParams( | |
| 1221 reply_message, false); | |
| 1222 Send(reply_message); | |
| 1223 } | |
| 1224 } | |
| 1225 | |
| 1226 void TestingAutomationProvider::GetSecurityState( | |
| 1227 int handle, | |
| 1228 bool* success, | |
| 1229 content::SecurityStyle* security_style, | |
| 1230 net::CertStatus* ssl_cert_status, | |
| 1231 int* insecure_content_status) { | |
| 1232 if (tab_tracker_->ContainsHandle(handle)) { | |
| 1233 NavigationController* tab = tab_tracker_->GetResource(handle); | |
| 1234 NavigationEntry* entry = tab->GetActiveEntry(); | |
| 1235 *success = true; | |
| 1236 *security_style = entry->GetSSL().security_style; | |
| 1237 *ssl_cert_status = entry->GetSSL().cert_status; | |
| 1238 *insecure_content_status = entry->GetSSL().content_status; | |
| 1239 } else { | |
| 1240 *success = false; | |
| 1241 *security_style = content::SECURITY_STYLE_UNKNOWN; | |
| 1242 *ssl_cert_status = 0; | |
| 1243 *insecure_content_status = 0; | |
| 1244 } | |
| 1245 } | |
| 1246 | |
| 1247 void TestingAutomationProvider::GetPageType( | |
| 1248 int handle, | |
| 1249 bool* success, | |
| 1250 content::PageType* page_type) { | |
| 1251 if (tab_tracker_->ContainsHandle(handle)) { | |
| 1252 NavigationController* tab = tab_tracker_->GetResource(handle); | |
| 1253 NavigationEntry* entry = tab->GetActiveEntry(); | |
| 1254 *page_type = entry->GetPageType(); | |
| 1255 *success = true; | |
| 1256 // In order to return the proper result when an interstitial is shown and | |
| 1257 // no navigation entry were created for it we need to ask the WebContents. | |
| 1258 if (*page_type == content::PAGE_TYPE_NORMAL && | |
| 1259 tab->GetWebContents()->ShowingInterstitialPage()) | |
| 1260 *page_type = content::PAGE_TYPE_INTERSTITIAL; | |
| 1261 } else { | |
| 1262 *success = false; | |
| 1263 *page_type = content::PAGE_TYPE_NORMAL; | |
| 1264 } | |
| 1265 } | |
| 1266 | |
| 1267 void TestingAutomationProvider::GetMetricEventDuration( | 1206 void TestingAutomationProvider::GetMetricEventDuration( |
| 1268 const std::string& event_name, | 1207 const std::string& event_name, |
| 1269 int* duration_ms) { | 1208 int* duration_ms) { |
| 1270 *duration_ms = metric_event_duration_observer_->GetEventDurationMs( | 1209 *duration_ms = metric_event_duration_observer_->GetEventDurationMs( |
| 1271 event_name); | 1210 event_name); |
| 1272 } | 1211 } |
| 1273 | 1212 |
| 1274 void TestingAutomationProvider::ActionOnSSLBlockingPage( | |
| 1275 int handle, | |
| 1276 bool proceed, | |
| 1277 IPC::Message* reply_message) { | |
| 1278 if (tab_tracker_->ContainsHandle(handle)) { | |
| 1279 NavigationController* tab = tab_tracker_->GetResource(handle); | |
| 1280 NavigationEntry* entry = tab->GetActiveEntry(); | |
| 1281 if (entry->GetPageType() == content::PAGE_TYPE_INTERSTITIAL) { | |
| 1282 WebContents* web_contents = tab->GetWebContents(); | |
| 1283 InterstitialPage* ssl_blocking_page = | |
| 1284 InterstitialPage::GetInterstitialPage(web_contents); | |
| 1285 if (ssl_blocking_page) { | |
| 1286 if (proceed) { | |
| 1287 new NavigationNotificationObserver(tab, this, reply_message, 1, | |
| 1288 false, false); | |
| 1289 ssl_blocking_page->Proceed(); | |
| 1290 return; | |
| 1291 } | |
| 1292 ssl_blocking_page->DontProceed(); | |
| 1293 AutomationMsg_ActionOnSSLBlockingPage::WriteReplyParams( | |
| 1294 reply_message, AUTOMATION_MSG_NAVIGATION_SUCCESS); | |
| 1295 Send(reply_message); | |
| 1296 return; | |
| 1297 } | |
| 1298 } | |
| 1299 } | |
| 1300 // We failed. | |
| 1301 AutomationMsg_ActionOnSSLBlockingPage::WriteReplyParams( | |
| 1302 reply_message, AUTOMATION_MSG_NAVIGATION_ERROR); | |
| 1303 Send(reply_message); | |
| 1304 } | |
| 1305 | |
| 1306 void TestingAutomationProvider::BringBrowserToFront(int browser_handle, | 1213 void TestingAutomationProvider::BringBrowserToFront(int browser_handle, |
| 1307 bool* success) { | 1214 bool* success) { |
| 1308 *success = false; | 1215 *success = false; |
| 1309 if (browser_tracker_->ContainsHandle(browser_handle)) { | 1216 if (browser_tracker_->ContainsHandle(browser_handle)) { |
| 1310 Browser* browser = browser_tracker_->GetResource(browser_handle); | 1217 Browser* browser = browser_tracker_->GetResource(browser_handle); |
| 1311 browser->window()->Activate(); | 1218 browser->window()->Activate(); |
| 1312 *success = true; | 1219 *success = true; |
| 1313 } | 1220 } |
| 1314 } | 1221 } |
| 1315 | 1222 |
| (...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1693 handler_map_["SendOSLevelKeyEventToTab"] = | 1600 handler_map_["SendOSLevelKeyEventToTab"] = |
| 1694 &TestingAutomationProvider::SendOSLevelKeyEventToTab; | 1601 &TestingAutomationProvider::SendOSLevelKeyEventToTab; |
| 1695 handler_map_["ProcessWebMouseEvent"] = | 1602 handler_map_["ProcessWebMouseEvent"] = |
| 1696 &TestingAutomationProvider::ProcessWebMouseEvent; | 1603 &TestingAutomationProvider::ProcessWebMouseEvent; |
| 1697 handler_map_["ActivateTab"] = | 1604 handler_map_["ActivateTab"] = |
| 1698 &TestingAutomationProvider::ActivateTabJSON; | 1605 &TestingAutomationProvider::ActivateTabJSON; |
| 1699 handler_map_["GetAppModalDialogMessage"] = | 1606 handler_map_["GetAppModalDialogMessage"] = |
| 1700 &TestingAutomationProvider::GetAppModalDialogMessage; | 1607 &TestingAutomationProvider::GetAppModalDialogMessage; |
| 1701 handler_map_["AcceptOrDismissAppModalDialog"] = | 1608 handler_map_["AcceptOrDismissAppModalDialog"] = |
| 1702 &TestingAutomationProvider::AcceptOrDismissAppModalDialog; | 1609 &TestingAutomationProvider::AcceptOrDismissAppModalDialog; |
| 1610 handler_map_["ActionOnSSLBlockingPage"] = | |
| 1611 &TestingAutomationProvider::ActionOnSSLBlockingPage; | |
| 1612 handler_map_["GetSecurityState"] = | |
| 1613 &TestingAutomationProvider::GetSecurityState; | |
| 1703 handler_map_["GetChromeDriverAutomationVersion"] = | 1614 handler_map_["GetChromeDriverAutomationVersion"] = |
| 1704 &TestingAutomationProvider::GetChromeDriverAutomationVersion; | 1615 &TestingAutomationProvider::GetChromeDriverAutomationVersion; |
| 1705 handler_map_["IsPageActionVisible"] = | 1616 handler_map_["IsPageActionVisible"] = |
| 1706 &TestingAutomationProvider::IsPageActionVisible; | 1617 &TestingAutomationProvider::IsPageActionVisible; |
| 1707 handler_map_["CreateNewAutomationProvider"] = | 1618 handler_map_["CreateNewAutomationProvider"] = |
| 1708 &TestingAutomationProvider::CreateNewAutomationProvider; | 1619 &TestingAutomationProvider::CreateNewAutomationProvider; |
| 1709 handler_map_["GetBrowserInfo"] = | 1620 handler_map_["GetBrowserInfo"] = |
| 1710 &TestingAutomationProvider::GetBrowserInfo; | 1621 &TestingAutomationProvider::GetBrowserInfo; |
| 1711 handler_map_["GetTabInfo"] = | 1622 handler_map_["GetTabInfo"] = |
| 1712 &TestingAutomationProvider::GetTabInfo; | 1623 &TestingAutomationProvider::GetTabInfo; |
| (...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2074 // Look for command in handlers that take a Browser. | 1985 // Look for command in handlers that take a Browser. |
| 2075 if (browser_handler_map_.find(std::string(command)) != | 1986 if (browser_handler_map_.find(std::string(command)) != |
| 2076 browser_handler_map_.end() && browser) { | 1987 browser_handler_map_.end() && browser) { |
| 2077 (this->*browser_handler_map_[command])(browser, dict_value.get(), | 1988 (this->*browser_handler_map_[command])(browser, dict_value.get(), |
| 2078 reply_message); | 1989 reply_message); |
| 2079 // Look for command in handlers that don't take a Browser. | 1990 // Look for command in handlers that don't take a Browser. |
| 2080 } else if (handler_map_.find(std::string(command)) != handler_map_.end()) { | 1991 } else if (handler_map_.find(std::string(command)) != handler_map_.end()) { |
| 2081 (this->*handler_map_[command])(dict_value.get(), reply_message); | 1992 (this->*handler_map_[command])(dict_value.get(), reply_message); |
| 2082 // Command has no handler. | 1993 // Command has no handler. |
| 2083 } else { | 1994 } else { |
| 2084 error_string = "Unknown command. Options: "; | 1995 error_string = StringPrintf("Unknown command '%s'. Options: ", |
| 1996 command.c_str()); | |
| 2085 for (std::map<std::string, JsonHandler>::const_iterator it = | 1997 for (std::map<std::string, JsonHandler>::const_iterator it = |
| 2086 handler_map_.begin(); it != handler_map_.end(); ++it) { | 1998 handler_map_.begin(); it != handler_map_.end(); ++it) { |
| 2087 error_string += it->first + ", "; | 1999 error_string += it->first + ", "; |
| 2088 } | 2000 } |
| 2089 for (std::map<std::string, BrowserJsonHandler>::const_iterator it = | 2001 for (std::map<std::string, BrowserJsonHandler>::const_iterator it = |
| 2090 browser_handler_map_.begin(); it != browser_handler_map_.end(); ++it) { | 2002 browser_handler_map_.begin(); it != browser_handler_map_.end(); ++it) { |
| 2091 error_string += it->first + ", "; | 2003 error_string += it->first + ", "; |
| 2092 } | 2004 } |
| 2093 AutomationJSONReply(this, reply_message).SendError(error_string); | 2005 AutomationJSONReply(this, reply_message).SendError(error_string); |
| 2094 } | 2006 } |
| (...skipping 2310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4405 | 4317 |
| 4406 if (action->HasPopup(ExtensionTabUtil::GetTabId(tab))) { | 4318 if (action->HasPopup(ExtensionTabUtil::GetTabId(tab))) { |
| 4407 // This observer will delete itself. | 4319 // This observer will delete itself. |
| 4408 new ExtensionPopupObserver( | 4320 new ExtensionPopupObserver( |
| 4409 this, reply_message, extension->id()); | 4321 this, reply_message, extension->id()); |
| 4410 } else { | 4322 } else { |
| 4411 AutomationJSONReply(this, reply_message).SendSuccess(NULL); | 4323 AutomationJSONReply(this, reply_message).SendSuccess(NULL); |
| 4412 } | 4324 } |
| 4413 } | 4325 } |
| 4414 | 4326 |
| 4327 void TestingAutomationProvider::ActionOnSSLBlockingPage( | |
| 4328 DictionaryValue* args, | |
| 4329 IPC::Message* reply_message) { | |
| 4330 WebContents* web_contents; | |
| 4331 bool proceed; | |
| 4332 std::string error; | |
| 4333 if (!GetTabFromJSONArgs(args, &web_contents, &error)) { | |
| 4334 AutomationJSONReply(this, reply_message).SendError(error); | |
| 4335 return; | |
| 4336 } | |
| 4337 if (!args->GetBoolean("proceed", &proceed)) { | |
| 4338 AutomationJSONReply(this, reply_message).SendError( | |
| 4339 "'proceed' is missing or invalid"); | |
| 4340 return; | |
| 4341 } | |
| 4342 NavigationController& controller = web_contents->GetController(); | |
| 4343 NavigationEntry* entry = controller.GetActiveEntry(); | |
| 4344 if (entry->GetPageType() == content::PAGE_TYPE_INTERSTITIAL) { | |
| 4345 InterstitialPage* ssl_blocking_page = | |
| 4346 InterstitialPage::GetInterstitialPage(web_contents); | |
| 4347 if (ssl_blocking_page) { | |
| 4348 if (proceed) { | |
| 4349 new NavigationNotificationObserver(&controller, this, reply_message, 1, | |
| 4350 false, true); | |
| 4351 ssl_blocking_page->Proceed(); | |
| 4352 return; | |
| 4353 } | |
| 4354 ssl_blocking_page->DontProceed(); | |
| 4355 AutomationJSONReply(this, reply_message).SendSuccess(NULL); | |
| 4356 return; | |
| 4357 } | |
| 4358 } | |
| 4359 AutomationJSONReply(this, reply_message).SendError(error); | |
| 4360 } | |
| 4361 | |
| 4362 void TestingAutomationProvider::GetSecurityState(DictionaryValue* args, | |
| 4363 IPC::Message* reply_message) { | |
| 4364 AutomationJSONReply reply(this, reply_message); | |
| 4365 WebContents* web_contents; | |
| 4366 std::string error; | |
| 4367 if (!GetTabFromJSONArgs(args, &web_contents, &error)) { | |
| 4368 reply.SendError(error); | |
| 4369 return; | |
| 4370 } | |
| 4371 NavigationEntry* entry = web_contents->GetController().GetActiveEntry(); | |
| 4372 DictionaryValue dict; | |
| 4373 dict.SetInteger("security_style", | |
| 4374 static_cast<int>(entry->GetSSL().security_style)); | |
| 4375 dict.SetInteger("ssl_cert_status", | |
| 4376 static_cast<int>(entry->GetSSL().cert_status)); | |
| 4377 dict.SetInteger("insecure_content_status", | |
| 4378 static_cast<int>(entry->GetSSL().content_status)); | |
| 4379 reply.SendSuccess(&dict); | |
| 4380 } | |
| 4381 | |
| 4415 // Sample json input: { "command": "UpdateExtensionsNow" } | 4382 // Sample json input: { "command": "UpdateExtensionsNow" } |
| 4416 // Sample json output: {} | 4383 // Sample json output: {} |
| 4417 void TestingAutomationProvider::UpdateExtensionsNow( | 4384 void TestingAutomationProvider::UpdateExtensionsNow( |
| 4418 DictionaryValue* args, | 4385 DictionaryValue* args, |
| 4419 IPC::Message* reply_message) { | 4386 IPC::Message* reply_message) { |
| 4420 std::string error; | 4387 std::string error; |
| 4421 Browser* browser; | 4388 Browser* browser; |
| 4422 if (!GetBrowserFromJSONArgs(args, &browser, &error)) { | 4389 if (!GetBrowserFromJSONArgs(args, &browser, &error)) { |
| 4423 AutomationJSONReply(this, reply_message).SendError(error); | 4390 AutomationJSONReply(this, reply_message).SendError(error); |
| 4424 return; | 4391 return; |
| (...skipping 1580 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6005 if (AppModalDialogQueue::GetInstance()->HasActiveDialog()) { | 5972 if (AppModalDialogQueue::GetInstance()->HasActiveDialog()) { |
| 6006 AutomationJSONReply(this, reply_message).SendSuccess(NULL); | 5973 AutomationJSONReply(this, reply_message).SendSuccess(NULL); |
| 6007 return; | 5974 return; |
| 6008 } | 5975 } |
| 6009 | 5976 |
| 6010 // This class will send the message immediately if no tab is loading. | 5977 // This class will send the message immediately if no tab is loading. |
| 6011 new AllViewsStoppedLoadingObserver( | 5978 new AllViewsStoppedLoadingObserver( |
| 6012 this, reply_message, profile()->GetExtensionProcessManager()); | 5979 this, reply_message, profile()->GetExtensionProcessManager()); |
| 6013 } | 5980 } |
| 6014 | 5981 |
| 5982 void TestingAutomationProvider::WaitForTabToBeRestored( | |
| 5983 DictionaryValue* args, | |
| 5984 IPC::Message* reply_message) { | |
| 5985 WebContents* web_contents; | |
| 5986 std::string error; | |
| 5987 if (!GetTabFromJSONArgs(args, &web_contents, &error)) { | |
| 5988 AutomationJSONReply(this, reply_message).SendError(error); | |
| 5989 return; | |
| 5990 } | |
| 5991 NavigationController& controller = web_contents->GetController(); | |
| 5992 new NavigationControllerRestoredObserver(this, &controller, reply_message); | |
| 5993 } | |
| 5994 | |
| 6015 void TestingAutomationProvider::GetPolicyDefinitionList( | 5995 void TestingAutomationProvider::GetPolicyDefinitionList( |
| 6016 DictionaryValue* args, | 5996 DictionaryValue* args, |
| 6017 IPC::Message* reply_message) { | 5997 IPC::Message* reply_message) { |
| 6018 AutomationJSONReply reply(this, reply_message); | 5998 AutomationJSONReply reply(this, reply_message); |
| 6019 | 5999 |
| 6020 #if !defined(ENABLE_CONFIGURATION_POLICY) | 6000 #if !defined(ENABLE_CONFIGURATION_POLICY) |
| 6021 reply.SendError("Configuration Policy disabled"); | 6001 reply.SendError("Configuration Policy disabled"); |
| 6022 #else | 6002 #else |
| 6023 DictionaryValue response; | 6003 DictionaryValue response; |
| 6024 | 6004 |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6155 if (!args->GetString("url", &url)) { | 6135 if (!args->GetString("url", &url)) { |
| 6156 AutomationJSONReply(this, reply_message) | 6136 AutomationJSONReply(this, reply_message) |
| 6157 .SendError("'url' missing or invalid"); | 6137 .SendError("'url' missing or invalid"); |
| 6158 return; | 6138 return; |
| 6159 } | 6139 } |
| 6160 if (!args->GetInteger("navigation_count", &navigation_count)) { | 6140 if (!args->GetInteger("navigation_count", &navigation_count)) { |
| 6161 AutomationJSONReply(this, reply_message) | 6141 AutomationJSONReply(this, reply_message) |
| 6162 .SendError("'navigation_count' missing or invalid"); | 6142 .SendError("'navigation_count' missing or invalid"); |
| 6163 return; | 6143 return; |
| 6164 } | 6144 } |
| 6165 new NavigationNotificationObserver( | 6145 if (navigation_count > 0) { |
| 6166 &web_contents->GetController(), this, reply_message, | 6146 new NavigationNotificationObserver( |
| 6167 navigation_count, false, true); | 6147 &web_contents->GetController(), this, reply_message, |
| 6148 navigation_count, false, true); | |
| 6149 } else { | |
| 6150 AutomationJSONReply(this, reply_message).SendSuccess(NULL); | |
| 6151 } | |
| 6168 OpenURLParams params( | 6152 OpenURLParams params( |
| 6169 GURL(url), content::Referrer(), CURRENT_TAB, | 6153 GURL(url), content::Referrer(), CURRENT_TAB, |
| 6170 content::PageTransitionFromInt( | 6154 content::PageTransitionFromInt( |
| 6171 content::PAGE_TRANSITION_TYPED | | 6155 content::PAGE_TRANSITION_TYPED | |
| 6172 content::PAGE_TRANSITION_FROM_ADDRESS_BAR), | 6156 content::PAGE_TRANSITION_FROM_ADDRESS_BAR), |
| 6173 false); | 6157 false); |
| 6174 browser->OpenURLFromTab(web_contents, params); | 6158 browser->OpenURLFromTab(web_contents, params); |
| 6175 } | 6159 } |
| 6176 | 6160 |
| 6177 void TestingAutomationProvider::GetActiveTabIndexJSON( | 6161 void TestingAutomationProvider::GetActiveTabIndexJSON( |
| (...skipping 682 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6860 automation_util::DoesObjectWithIdExist(id, profile())); | 6844 automation_util::DoesObjectWithIdExist(id, profile())); |
| 6861 reply.SendSuccess(&dict); | 6845 reply.SendSuccess(&dict); |
| 6862 } | 6846 } |
| 6863 | 6847 |
| 6864 void TestingAutomationProvider::CloseTabJSON( | 6848 void TestingAutomationProvider::CloseTabJSON( |
| 6865 DictionaryValue* args, IPC::Message* reply_message) { | 6849 DictionaryValue* args, IPC::Message* reply_message) { |
| 6866 AutomationJSONReply reply(this, reply_message); | 6850 AutomationJSONReply reply(this, reply_message); |
| 6867 Browser* browser; | 6851 Browser* browser; |
| 6868 WebContents* tab; | 6852 WebContents* tab; |
| 6869 std::string error; | 6853 std::string error; |
| 6854 bool wait_until_closed = false; // ChromeDriver does not use this. | |
|
Nirnimesh
2012/08/07 00:37:35
nit: need 2 spaces before //
craigdh
2012/08/07 21:08:51
Done.
| |
| 6855 args->GetBoolean("wait_until_closed", &wait_until_closed); | |
| 6870 // Close tabs synchronously. | 6856 // Close tabs synchronously. |
| 6871 if (GetBrowserAndTabFromJSONArgs(args, &browser, &tab, &error)) { | 6857 if (GetBrowserAndTabFromJSONArgs(args, &browser, &tab, &error)) { |
| 6858 if (wait_until_closed) { | |
| 6859 new TabClosedNotificationObserver(this, wait_until_closed, reply_message, | |
| 6860 true); | |
| 6861 } | |
| 6872 chrome::CloseWebContents(browser, tab); | 6862 chrome::CloseWebContents(browser, tab); |
| 6873 reply.SendSuccess(NULL); | 6863 if (!wait_until_closed) |
| 6864 reply.SendSuccess(NULL); | |
| 6874 return; | 6865 return; |
| 6875 } | 6866 } |
| 6876 | |
| 6877 // Close other types of views asynchronously. | 6867 // Close other types of views asynchronously. |
| 6878 RenderViewHost* view; | 6868 RenderViewHost* view; |
| 6879 if (!GetRenderViewFromJSONArgs(args, profile(), &view, &error)) { | 6869 if (!GetRenderViewFromJSONArgs(args, profile(), &view, &error)) { |
| 6880 reply.SendError(error); | 6870 reply.SendError(error); |
| 6881 return; | 6871 return; |
| 6882 } | 6872 } |
| 6883 view->ClosePage(); | 6873 view->ClosePage(); |
| 6884 reply.SendSuccess(NULL); | 6874 reply.SendSuccess(NULL); |
| 6885 } | 6875 } |
| 6886 | 6876 |
| (...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 7084 void TestingAutomationProvider::OnRemoveProvider() { | 7074 void TestingAutomationProvider::OnRemoveProvider() { |
| 7085 if (g_browser_process) | 7075 if (g_browser_process) |
| 7086 g_browser_process->GetAutomationProviderList()->RemoveProvider(this); | 7076 g_browser_process->GetAutomationProviderList()->RemoveProvider(this); |
| 7087 } | 7077 } |
| 7088 | 7078 |
| 7089 void TestingAutomationProvider::EnsureTabSelected(Browser* browser, | 7079 void TestingAutomationProvider::EnsureTabSelected(Browser* browser, |
| 7090 WebContents* tab) { | 7080 WebContents* tab) { |
| 7091 if (chrome::GetActiveWebContents(browser) != tab) | 7081 if (chrome::GetActiveWebContents(browser) != tab) |
| 7092 chrome::ActivateTabAt(browser, chrome::GetIndexOfTab(browser, tab), true); | 7082 chrome::ActivateTabAt(browser, chrome::GetIndexOfTab(browser, tab), true); |
| 7093 } | 7083 } |
| OLD | NEW |