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) { |