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 a9b1759617eee08cab5e1e3395f69cdac862bb11..2934c99b461d99dfa498badedad7e966128ec3fa 100644 |
--- a/chrome/browser/automation/testing_automation_provider.cc |
+++ b/chrome/browser/automation/testing_automation_provider.cc |
@@ -500,7 +500,7 @@ void TestingAutomationProvider::AppendTab(int handle, |
if (browser_tracker_->ContainsHandle(handle)) { |
Browser* browser = browser_tracker_->GetResource(handle); |
observer = new TabAppendedNotificationObserver(browser, this, |
- reply_message); |
+ reply_message, false); |
TabContents* contents = |
browser->AddSelectedTabWithURL(url, content::PAGE_TRANSITION_TYPED); |
if (contents) { |
@@ -1699,6 +1699,10 @@ void TestingAutomationProvider::SendJSONRequest(int handle, |
&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"] = |
@@ -6113,6 +6117,55 @@ 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 = |
+ browser->AddSelectedTabWithURL(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) { |