| Index: chrome/browser/automation/testing_automation_provider.cc
|
| diff --git a/chrome/browser/automation/testing_automation_provider.cc b/chrome/browser/automation/testing_automation_provider.cc
|
| index 6dbd5c7bea02810d2abee21f13486ee94c989980..3f958588131e2d0e3ebfa14bc60bfae3df89e0e3 100644
|
| --- a/chrome/browser/automation/testing_automation_provider.cc
|
| +++ b/chrome/browser/automation/testing_automation_provider.cc
|
| @@ -504,9 +504,10 @@ void TestingAutomationProvider::AppendTab(int handle,
|
| if (browser_tracker_->ContainsHandle(handle)) {
|
| Browser* browser = browser_tracker_->GetResource(handle);
|
| observer = new TabAppendedNotificationObserver(browser, this,
|
| - reply_message);
|
| - TabContents* contents = chrome::AddSelectedTabWithURL(
|
| - browser, url, content::PAGE_TRANSITION_TYPED);
|
| + reply_message, false);
|
| + TabContents* contents =
|
| + chrome::AddSelectedTabWithURL(browser, url,
|
| + content::PAGE_TRANSITION_TYPED);
|
| if (contents) {
|
| append_tab_response = GetIndexForNavigationController(
|
| &contents->web_contents()->GetController(), browser);
|
| @@ -1677,6 +1678,10 @@ void TestingAutomationProvider::BuildJSONHandlerMaps() {
|
| &TestingAutomationProvider::GetIndicesFromTab;
|
| handler_map_["NavigateToURL"] =
|
| &TestingAutomationProvider::NavigateToURL;
|
| + handler_map_["GetActiveTabIndex"] =
|
| + &TestingAutomationProvider::GetActiveTabIndexJSON;
|
| + handler_map_["AppendTab"] =
|
| + &TestingAutomationProvider::AppendTabJSON;
|
| handler_map_["WaitUntilNavigationCompletes"] =
|
| &TestingAutomationProvider::WaitUntilNavigationCompletes;
|
| handler_map_["GetLocalStatePrefsInfo"] =
|
| @@ -6147,6 +6152,56 @@ void TestingAutomationProvider::NavigateToURL(
|
| browser->OpenURLFromTab(web_contents, params);
|
| }
|
|
|
| +void TestingAutomationProvider::GetActiveTabIndexJSON(
|
| + DictionaryValue* args,
|
| + IPC::Message* reply_message) {
|
| + AutomationJSONReply reply(this, reply_message);
|
| + Browser* browser;
|
| + std::string error_msg;
|
| + if (!GetBrowserFromJSONArgs(args, &browser, &error_msg)) {
|
| + reply.SendError(error_msg);
|
| + return;
|
| + }
|
| + int tab_index = browser->active_index();
|
| + scoped_ptr<DictionaryValue> return_value(new DictionaryValue);
|
| + return_value->SetInteger("tab_index", tab_index);
|
| + reply.SendSuccess(return_value.get());
|
| +}
|
| +
|
| +void TestingAutomationProvider::AppendTabJSON(DictionaryValue* args,
|
| + IPC::Message* reply_message) {
|
| + TabAppendedNotificationObserver* observer = NULL;
|
| + int append_tab_response = -1;
|
| + Browser* browser;
|
| + std::string error_msg, url;
|
| + if (!GetBrowserFromJSONArgs(args, &browser, &error_msg)) {
|
| + AutomationJSONReply(this, reply_message).SendError(error_msg);
|
| + return;
|
| + }
|
| + if (!args->GetString("url", &url)) {
|
| + AutomationJSONReply(this, reply_message)
|
| + .SendError("'url' missing or invalid");
|
| + return;
|
| + }
|
| + observer = new TabAppendedNotificationObserver(browser, this, reply_message,
|
| + true);
|
| + TabContents* contents =
|
| + chrome::AddSelectedTabWithURL(browser, GURL(url),
|
| + content::PAGE_TRANSITION_TYPED);
|
| + if (contents) {
|
| + append_tab_response = GetIndexForNavigationController(
|
| + &contents->web_contents()->GetController(), browser);
|
| + }
|
| +
|
| + if (!contents || append_tab_response < 0) {
|
| + if (observer) {
|
| + observer->ReleaseReply();
|
| + delete observer;
|
| + }
|
| + AutomationJSONReply(this, reply_message).SendError("Failed to append tab.");
|
| + }
|
| +}
|
| +
|
| void TestingAutomationProvider::WaitUntilNavigationCompletes(
|
| DictionaryValue* args,
|
| IPC::Message* reply_message) {
|
|
|