Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(384)

Side by Side Diff: chrome/browser/automation/testing_automation_provider.cc

Issue 12767006: [Cleanup] Remove StringPrintf from global namespace (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase, once more Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 void DidEnablePlugin(base::WeakPtr<AutomationProvider> automation, 203 void DidEnablePlugin(base::WeakPtr<AutomationProvider> automation,
204 IPC::Message* reply_message, 204 IPC::Message* reply_message,
205 const base::FilePath::StringType& path, 205 const base::FilePath::StringType& path,
206 const std::string& error_msg, 206 const std::string& error_msg,
207 bool did_enable) { 207 bool did_enable) {
208 if (did_enable) { 208 if (did_enable) {
209 SendSuccessReply(automation, reply_message); 209 SendSuccessReply(automation, reply_message);
210 } else { 210 } else {
211 if (automation) { 211 if (automation) {
212 AutomationJSONReply(automation.get(), reply_message).SendError( 212 AutomationJSONReply(automation.get(), reply_message).SendError(
213 StringPrintf(error_msg.c_str(), path.c_str())); 213 base::StringPrintf(error_msg.c_str(), path.c_str()));
214 } 214 }
215 } 215 }
216 } 216 }
217 217
218 // Helper to resolve the overloading of PostTask. 218 // Helper to resolve the overloading of PostTask.
219 void PostTask(BrowserThread::ID id, const base::Closure& callback) { 219 void PostTask(BrowserThread::ID id, const base::Closure& callback) {
220 BrowserThread::PostTask(id, FROM_HERE, callback); 220 BrowserThread::PostTask(id, FROM_HERE, callback);
221 } 221 }
222 222
223 class AutomationInterstitialPage : public content::InterstitialPageDelegate { 223 class AutomationInterstitialPage : public content::InterstitialPageDelegate {
(...skipping 929 matching lines...) Expand 10 before | Expand all | Expand 10 after
1153 ProfileManager* profile_manager = g_browser_process->profile_manager(); 1153 ProfileManager* profile_manager = g_browser_process->profile_manager();
1154 base::FilePath::StringType path; 1154 base::FilePath::StringType path;
1155 if (!args->GetString("path", &path)) { 1155 if (!args->GetString("path", &path)) {
1156 AutomationJSONReply(this, reply_message).SendError( 1156 AutomationJSONReply(this, reply_message).SendError(
1157 "Invalid or missing arg: 'path'"); 1157 "Invalid or missing arg: 'path'");
1158 return; 1158 return;
1159 } 1159 }
1160 Profile* profile = profile_manager->GetProfileByPath(base::FilePath(path)); 1160 Profile* profile = profile_manager->GetProfileByPath(base::FilePath(path));
1161 if (!profile) { 1161 if (!profile) {
1162 AutomationJSONReply(this, reply_message).SendError( 1162 AutomationJSONReply(this, reply_message).SendError(
1163 StringPrintf("Invalid profile path: %s", path.c_str())); 1163 base::StringPrintf("Invalid profile path: %s", path.c_str()));
1164 return; 1164 return;
1165 } 1165 }
1166 int num_loads; 1166 int num_loads;
1167 if (!args->GetInteger("num_loads", &num_loads)) { 1167 if (!args->GetInteger("num_loads", &num_loads)) {
1168 AutomationJSONReply(this, reply_message).SendError( 1168 AutomationJSONReply(this, reply_message).SendError(
1169 "Invalid or missing arg: 'num_loads'"); 1169 "Invalid or missing arg: 'num_loads'");
1170 return; 1170 return;
1171 } 1171 }
1172 new BrowserOpenedWithExistingProfileNotificationObserver( 1172 new BrowserOpenedWithExistingProfileNotificationObserver(
1173 this, reply_message, num_loads); 1173 this, reply_message, num_loads);
(...skipping 810 matching lines...) Expand 10 before | Expand all | Expand 10 after
1984 "The browser window does not exist."); 1984 "The browser window does not exist.");
1985 } 1985 }
1986 } 1986 }
1987 1987
1988 void TestingAutomationProvider::SendJSONRequestWithBrowserIndex( 1988 void TestingAutomationProvider::SendJSONRequestWithBrowserIndex(
1989 int index, 1989 int index,
1990 const std::string& json_request, 1990 const std::string& json_request,
1991 IPC::Message* reply_message) { 1991 IPC::Message* reply_message) {
1992 Browser* browser = index < 0 ? NULL : automation_util::GetBrowserAt(index); 1992 Browser* browser = index < 0 ? NULL : automation_util::GetBrowserAt(index);
1993 if (!browser && index >= 0) { 1993 if (!browser && index >= 0) {
1994 AutomationJSONReply(this, reply_message).SendError( 1994 AutomationJSONReply(this, reply_message).SendError(base::StringPrintf(
1995 StringPrintf("Browser window with index=%d does not exist.", index)); 1995 "Browser window with index=%d does not exist.", index));
1996 } else { 1996 } else {
1997 SendJSONRequest(browser, json_request, reply_message); 1997 SendJSONRequest(browser, json_request, reply_message);
1998 } 1998 }
1999 } 1999 }
2000 2000
2001 void TestingAutomationProvider::SendJSONRequest(Browser* browser, 2001 void TestingAutomationProvider::SendJSONRequest(Browser* browser,
2002 const std::string& json_request, 2002 const std::string& json_request,
2003 IPC::Message* reply_message) { 2003 IPC::Message* reply_message) {
2004 std::string command, error_string; 2004 std::string command, error_string;
2005 scoped_ptr<DictionaryValue> dict_value( 2005 scoped_ptr<DictionaryValue> dict_value(
2006 ParseJSONRequestCommand(json_request, &command, &error_string)); 2006 ParseJSONRequestCommand(json_request, &command, &error_string));
2007 if (!dict_value.get() || command.empty()) { 2007 if (!dict_value.get() || command.empty()) {
2008 AutomationJSONReply(this, reply_message).SendError(error_string); 2008 AutomationJSONReply(this, reply_message).SendError(error_string);
2009 return; 2009 return;
2010 } 2010 }
2011 2011
2012 if (handler_map_.empty() || browser_handler_map_.empty()) 2012 if (handler_map_.empty() || browser_handler_map_.empty())
2013 BuildJSONHandlerMaps(); 2013 BuildJSONHandlerMaps();
2014 2014
2015 // Look for command in handlers that take a Browser. 2015 // Look for command in handlers that take a Browser.
2016 if (browser_handler_map_.find(std::string(command)) != 2016 if (browser_handler_map_.find(std::string(command)) !=
2017 browser_handler_map_.end() && browser) { 2017 browser_handler_map_.end() && browser) {
2018 (this->*browser_handler_map_[command])(browser, dict_value.get(), 2018 (this->*browser_handler_map_[command])(browser, dict_value.get(),
2019 reply_message); 2019 reply_message);
2020 // Look for command in handlers that don't take a Browser. 2020 // Look for command in handlers that don't take a Browser.
2021 } else if (handler_map_.find(std::string(command)) != handler_map_.end()) { 2021 } else if (handler_map_.find(std::string(command)) != handler_map_.end()) {
2022 (this->*handler_map_[command])(dict_value.get(), reply_message); 2022 (this->*handler_map_[command])(dict_value.get(), reply_message);
2023 // Command has no handler. 2023 // Command has no handler.
2024 } else { 2024 } else {
2025 error_string = StringPrintf("Unknown command '%s'. Options: ", 2025 error_string = base::StringPrintf("Unknown command '%s'. Options: ",
2026 command.c_str()); 2026 command.c_str());
2027 for (std::map<std::string, JsonHandler>::const_iterator it = 2027 for (std::map<std::string, JsonHandler>::const_iterator it =
2028 handler_map_.begin(); it != handler_map_.end(); ++it) { 2028 handler_map_.begin(); it != handler_map_.end(); ++it) {
2029 error_string += it->first + ", "; 2029 error_string += it->first + ", ";
2030 } 2030 }
2031 for (std::map<std::string, BrowserJsonHandler>::const_iterator it = 2031 for (std::map<std::string, BrowserJsonHandler>::const_iterator it =
2032 browser_handler_map_.begin(); it != browser_handler_map_.end(); ++it) { 2032 browser_handler_map_.begin(); it != browser_handler_map_.end(); ++it) {
2033 error_string += it->first + ", "; 2033 error_string += it->first + ", ";
2034 } 2034 }
2035 AutomationJSONReply(this, reply_message).SendError(error_string); 2035 AutomationJSONReply(this, reply_message).SendError(error_string);
2036 } 2036 }
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
2144 if (!args->GetInteger("tab_index", &tab_index) || 2144 if (!args->GetInteger("tab_index", &tab_index) ||
2145 !args->GetInteger("infobar_index", &infobar_index_int) || 2145 !args->GetInteger("infobar_index", &infobar_index_int) ||
2146 !args->GetString("action", &action)) { 2146 !args->GetString("action", &action)) {
2147 reply.SendError("Invalid or missing args"); 2147 reply.SendError("Invalid or missing args");
2148 return; 2148 return;
2149 } 2149 }
2150 2150
2151 WebContents* web_contents = 2151 WebContents* web_contents =
2152 browser->tab_strip_model()->GetWebContentsAt(tab_index); 2152 browser->tab_strip_model()->GetWebContentsAt(tab_index);
2153 if (!web_contents) { 2153 if (!web_contents) {
2154 reply.SendError(StringPrintf("No such tab at index %d", tab_index)); 2154 reply.SendError(base::StringPrintf("No such tab at index %d", tab_index));
2155 return; 2155 return;
2156 } 2156 }
2157 InfoBarService* infobar_service = 2157 InfoBarService* infobar_service =
2158 InfoBarService::FromWebContents(web_contents); 2158 InfoBarService::FromWebContents(web_contents);
2159 2159
2160 InfoBarDelegate* infobar = NULL; 2160 InfoBarDelegate* infobar = NULL;
2161 size_t infobar_index = static_cast<size_t>(infobar_index_int); 2161 size_t infobar_index = static_cast<size_t>(infobar_index_int);
2162 if (infobar_index >= infobar_service->GetInfoBarCount()) { 2162 if (infobar_index >= infobar_service->GetInfoBarCount()) {
2163 reply.SendError(StringPrintf("No such infobar at index %" PRIuS, 2163 reply.SendError(base::StringPrintf("No such infobar at index %" PRIuS,
2164 infobar_index)); 2164 infobar_index));
2165 return; 2165 return;
2166 } 2166 }
2167 infobar = infobar_service->GetInfoBarDelegateAt(infobar_index); 2167 infobar = infobar_service->GetInfoBarDelegateAt(infobar_index);
2168 2168
2169 if ("dismiss" == action) { 2169 if ("dismiss" == action) {
2170 infobar->InfoBarDismissed(); 2170 infobar->InfoBarDismissed();
2171 infobar_service->RemoveInfoBar(infobar); 2171 infobar_service->RemoveInfoBar(infobar);
2172 reply.SendSuccess(NULL); 2172 reply.SendSuccess(NULL);
2173 return; 2173 return;
2174 } 2174 }
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after
2553 } 2553 }
2554 2554
2555 void TestingAutomationProvider::WaitForAllDownloadsToComplete( 2555 void TestingAutomationProvider::WaitForAllDownloadsToComplete(
2556 Browser* browser, 2556 Browser* browser,
2557 DictionaryValue* args, 2557 DictionaryValue* args,
2558 IPC::Message* reply_message) { 2558 IPC::Message* reply_message) {
2559 ListValue* pre_download_ids = NULL; 2559 ListValue* pre_download_ids = NULL;
2560 2560
2561 if (!args->GetList("pre_download_ids", &pre_download_ids)) { 2561 if (!args->GetList("pre_download_ids", &pre_download_ids)) {
2562 AutomationJSONReply(this, reply_message) 2562 AutomationJSONReply(this, reply_message)
2563 .SendError(StringPrintf("List of IDs of previous downloads required.")); 2563 .SendError(
2564 base::StringPrintf("List of IDs of previous downloads required."));
2564 return; 2565 return;
2565 } 2566 }
2566 2567
2567 DownloadService* download_service = 2568 DownloadService* download_service =
2568 DownloadServiceFactory::GetForProfile(browser->profile()); 2569 DownloadServiceFactory::GetForProfile(browser->profile());
2569 if (!download_service->HasCreatedDownloadManager()) { 2570 if (!download_service->HasCreatedDownloadManager()) {
2570 // No download manager, so no downloads to wait for. 2571 // No download manager, so no downloads to wait for.
2571 AutomationJSONReply(this, reply_message).SendSuccess(NULL); 2572 AutomationJSONReply(this, reply_message).SendSuccess(NULL);
2572 return; 2573 return;
2573 } 2574 }
(...skipping 24 matching lines...) Expand all
2598 AutomationJSONReply(this, reply_message) 2599 AutomationJSONReply(this, reply_message)
2599 .SendError("Must include int id and string action."); 2600 .SendError("Must include int id and string action.");
2600 return; 2601 return;
2601 } 2602 }
2602 2603
2603 DownloadManager* download_manager = 2604 DownloadManager* download_manager =
2604 BrowserContext::GetDownloadManager(browser->profile()); 2605 BrowserContext::GetDownloadManager(browser->profile());
2605 DownloadItem* selected_item = download_manager->GetDownload(id); 2606 DownloadItem* selected_item = download_manager->GetDownload(id);
2606 if (!selected_item) { 2607 if (!selected_item) {
2607 AutomationJSONReply(this, reply_message) 2608 AutomationJSONReply(this, reply_message)
2608 .SendError(StringPrintf("No download with an id of %d\n", id)); 2609 .SendError(base::StringPrintf("No download with an id of %d\n", id));
2609 return; 2610 return;
2610 } 2611 }
2611 2612
2612 // We need to be IN_PROGRESS for these actions. 2613 // We need to be IN_PROGRESS for these actions.
2613 if ((action == "pause" || action == "resume" || action == "cancel") && 2614 if ((action == "pause" || action == "resume" || action == "cancel") &&
2614 !selected_item->IsInProgress()) { 2615 !selected_item->IsInProgress()) {
2615 AutomationJSONReply(this, reply_message) 2616 AutomationJSONReply(this, reply_message)
2616 .SendError("Selected DownloadItem is not in progress."); 2617 .SendError("Selected DownloadItem is not in progress.");
2617 } 2618 }
2618 2619
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
2673 selected_item->AddObserver(new AutomationProviderDownloadUpdatedObserver( 2674 selected_item->AddObserver(new AutomationProviderDownloadUpdatedObserver(
2674 this, reply_message, false, browser->profile()->IsOffTheRecord())); 2675 this, reply_message, false, browser->profile()->IsOffTheRecord()));
2675 selected_item->Resume(); 2676 selected_item->Resume();
2676 } 2677 }
2677 } else if (action == "cancel") { 2678 } else if (action == "cancel") {
2678 selected_item->AddObserver(new AutomationProviderDownloadUpdatedObserver( 2679 selected_item->AddObserver(new AutomationProviderDownloadUpdatedObserver(
2679 this, reply_message, false, browser->profile()->IsOffTheRecord())); 2680 this, reply_message, false, browser->profile()->IsOffTheRecord()));
2680 selected_item->Cancel(true); 2681 selected_item->Cancel(true);
2681 } else { 2682 } else {
2682 AutomationJSONReply(this, reply_message) 2683 AutomationJSONReply(this, reply_message)
2683 .SendError(StringPrintf("Invalid action '%s' given.", action.c_str())); 2684 .SendError(
2685 base::StringPrintf("Invalid action '%s' given.", action.c_str()));
2684 } 2686 }
2685 } 2687 }
2686 2688
2687 void TestingAutomationProvider::SetDownloadShelfVisibleJSON( 2689 void TestingAutomationProvider::SetDownloadShelfVisibleJSON(
2688 DictionaryValue* args, 2690 DictionaryValue* args,
2689 IPC::Message* reply_message) { 2691 IPC::Message* reply_message) {
2690 AutomationJSONReply reply(this, reply_message); 2692 AutomationJSONReply reply(this, reply_message);
2691 Browser* browser; 2693 Browser* browser;
2692 std::string error_msg; 2694 std::string error_msg;
2693 bool is_visible; 2695 bool is_visible;
(...skipping 756 matching lines...) Expand 10 before | Expand all | Expand 10 after
3450 std::string* error_message) { 3452 std::string* error_message) {
3451 int tab_index; 3453 int tab_index;
3452 if (!args->GetInteger("tab_index", &tab_index)) { 3454 if (!args->GetInteger("tab_index", &tab_index)) {
3453 *error_message = "Must include tab_index."; 3455 *error_message = "Must include tab_index.";
3454 return NULL; 3456 return NULL;
3455 } 3457 }
3456 3458
3457 WebContents* web_contents = 3459 WebContents* web_contents =
3458 browser->tab_strip_model()->GetWebContentsAt(tab_index); 3460 browser->tab_strip_model()->GetWebContentsAt(tab_index);
3459 if (!web_contents) { 3461 if (!web_contents) {
3460 *error_message = StringPrintf("No tab at index %d.", tab_index); 3462 *error_message = base::StringPrintf("No tab at index %d.", tab_index);
3461 return NULL; 3463 return NULL;
3462 } 3464 }
3463 return web_contents; 3465 return web_contents;
3464 } 3466 }
3465 3467
3466 } // namespace 3468 } // namespace
3467 3469
3468 void TestingAutomationProvider::FindInPage( 3470 void TestingAutomationProvider::FindInPage(
3469 Browser* browser, 3471 Browser* browser,
3470 DictionaryValue* args, 3472 DictionaryValue* args,
(...skipping 426 matching lines...) Expand 10 before | Expand all | Expand 10 after
3897 for (int i = 0; i < num_browser_actions; ++i) { 3899 for (int i = 0; i < num_browser_actions; ++i) {
3898 if (extension->id() == browser_actions.GetExtensionId(i)) { 3900 if (extension->id() == browser_actions.GetExtensionId(i)) {
3899 action_index = i; 3901 action_index = i;
3900 break; 3902 break;
3901 } 3903 }
3902 } 3904 }
3903 #else 3905 #else
3904 // TODO(kkania): Implement the platform-specific GetExtensionId() in 3906 // TODO(kkania): Implement the platform-specific GetExtensionId() in
3905 // BrowserActionTestUtil. 3907 // BrowserActionTestUtil.
3906 if (num_browser_actions != 1) { 3908 if (num_browser_actions != 1) {
3907 AutomationJSONReply(this, reply_message).SendError(StringPrintf( 3909 AutomationJSONReply(this, reply_message).SendError(base::StringPrintf(
3908 "Found %d browser actions. Only one browser action must be active.", 3910 "Found %d browser actions. Only one browser action must be active.",
3909 num_browser_actions)); 3911 num_browser_actions));
3910 return; 3912 return;
3911 } 3913 }
3912 // This extension has a browser action, and there's only one action, so this 3914 // This extension has a browser action, and there's only one action, so this
3913 // must be the first one. 3915 // must be the first one.
3914 action_index = 0; 3916 action_index = 0;
3915 #endif 3917 #endif
3916 if (action_index == -1) { 3918 if (action_index == -1) {
3917 AutomationJSONReply(this, reply_message).SendError( 3919 AutomationJSONReply(this, reply_message).SendError(
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
4143 .SendError("'index' missing or invalid."); 4145 .SendError("'index' missing or invalid.");
4144 return; 4146 return;
4145 } 4147 }
4146 BalloonNotificationUIManager* manager = 4148 BalloonNotificationUIManager* manager =
4147 BalloonNotificationUIManager::GetInstanceForTesting(); 4149 BalloonNotificationUIManager::GetInstanceForTesting();
4148 BalloonCollection* collection = manager->balloon_collection(); 4150 BalloonCollection* collection = manager->balloon_collection();
4149 const BalloonCollection::Balloons& balloons = collection->GetActiveBalloons(); 4151 const BalloonCollection::Balloons& balloons = collection->GetActiveBalloons();
4150 int balloon_count = static_cast<int>(balloons.size()); 4152 int balloon_count = static_cast<int>(balloons.size());
4151 if (index < 0 || index >= balloon_count) { 4153 if (index < 0 || index >= balloon_count) {
4152 AutomationJSONReply(this, reply_message) 4154 AutomationJSONReply(this, reply_message)
4153 .SendError(StringPrintf("No notification at index %d", index)); 4155 .SendError(base::StringPrintf("No notification at index %d", index));
4154 return; 4156 return;
4155 } 4157 }
4156 std::vector<const Notification*> queued_notes; 4158 std::vector<const Notification*> queued_notes;
4157 manager->GetQueuedNotificationsForTesting(&queued_notes); 4159 manager->GetQueuedNotificationsForTesting(&queued_notes);
4158 if (queued_notes.empty()) { 4160 if (queued_notes.empty()) {
4159 new OnNotificationBalloonCountObserver( 4161 new OnNotificationBalloonCountObserver(
4160 this, reply_message, balloon_count - 1); 4162 this, reply_message, balloon_count - 1);
4161 } else { 4163 } else {
4162 new NewNotificationBalloonObserver(this, reply_message); 4164 new NewNotificationBalloonObserver(this, reply_message);
4163 } 4165 }
(...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after
4593 if (!service) { 4595 if (!service) {
4594 AutomationJSONReply(this, reply_message).SendError( 4596 AutomationJSONReply(this, reply_message).SendError(
4595 "No extensions service."); 4597 "No extensions service.");
4596 return; 4598 return;
4597 } 4599 }
4598 4600
4599 const Extension* extension = service->GetExtensionById( 4601 const Extension* extension = service->GetExtensionById(
4600 id, false /* do not include disabled extensions */); 4602 id, false /* do not include disabled extensions */);
4601 if (!extension) { 4603 if (!extension) {
4602 AutomationJSONReply(this, reply_message).SendError( 4604 AutomationJSONReply(this, reply_message).SendError(
4603 StringPrintf("Extension with ID '%s' doesn't exist or is disabled.", 4605 base::StringPrintf(
4604 id.c_str())); 4606 "Extension with ID '%s' doesn't exist or is disabled.",
4607 id.c_str()));
4605 return; 4608 return;
4606 } 4609 }
4607 4610
4608 WebContents* old_contents = 4611 WebContents* old_contents =
4609 browser->tab_strip_model()->GetActiveWebContents(); 4612 browser->tab_strip_model()->GetActiveWebContents();
4610 if (!old_contents) { 4613 if (!old_contents) {
4611 AutomationJSONReply(this, reply_message).SendError( 4614 AutomationJSONReply(this, reply_message).SendError(
4612 "Cannot identify selected tab contents."); 4615 "Cannot identify selected tab contents.");
4613 return; 4616 return;
4614 } 4617 }
(...skipping 30 matching lines...) Expand all
4645 ExtensionService* service = extensions::ExtensionSystem::Get( 4648 ExtensionService* service = extensions::ExtensionSystem::Get(
4646 browser->profile())->extension_service(); 4649 browser->profile())->extension_service();
4647 if (!service) { 4650 if (!service) {
4648 reply.SendError("No extensions service."); 4651 reply.SendError("No extensions service.");
4649 return; 4652 return;
4650 } 4653 }
4651 4654
4652 const Extension* extension = service->GetExtensionById( 4655 const Extension* extension = service->GetExtensionById(
4653 id, true /* include disabled extensions */); 4656 id, true /* include disabled extensions */);
4654 if (!extension) { 4657 if (!extension) {
4655 reply.SendError( 4658 reply.SendError(base::StringPrintf(
4656 StringPrintf("Extension with ID '%s' doesn't exist.", id.c_str())); 4659 "Extension with ID '%s' doesn't exist.", id.c_str()));
4657 return; 4660 return;
4658 } 4661 }
4659 4662
4660 extensions::ExtensionPrefs::LaunchType launch_type; 4663 extensions::ExtensionPrefs::LaunchType launch_type;
4661 if (launch_type_str == "pinned") { 4664 if (launch_type_str == "pinned") {
4662 launch_type = extensions::ExtensionPrefs::LAUNCH_PINNED; 4665 launch_type = extensions::ExtensionPrefs::LAUNCH_PINNED;
4663 } else if (launch_type_str == "regular") { 4666 } else if (launch_type_str == "regular") {
4664 launch_type = extensions::ExtensionPrefs::LAUNCH_REGULAR; 4667 launch_type = extensions::ExtensionPrefs::LAUNCH_REGULAR;
4665 } else if (launch_type_str == "fullscreen") { 4668 } else if (launch_type_str == "fullscreen") {
4666 launch_type = extensions::ExtensionPrefs::LAUNCH_FULLSCREEN; 4669 launch_type = extensions::ExtensionPrefs::LAUNCH_FULLSCREEN;
4667 } else if (launch_type_str == "window") { 4670 } else if (launch_type_str == "window") {
4668 launch_type = extensions::ExtensionPrefs::LAUNCH_WINDOW; 4671 launch_type = extensions::ExtensionPrefs::LAUNCH_WINDOW;
4669 } else { 4672 } else {
4670 reply.SendError( 4673 reply.SendError(base::StringPrintf(
4671 StringPrintf("Unexpected launch type '%s'.", launch_type_str.c_str())); 4674 "Unexpected launch type '%s'.", launch_type_str.c_str()));
4672 return; 4675 return;
4673 } 4676 }
4674 4677
4675 service->extension_prefs()->SetLaunchType(extension->id(), launch_type); 4678 service->extension_prefs()->SetLaunchType(extension->id(), launch_type);
4676 reply.SendSuccess(NULL); 4679 reply.SendSuccess(NULL);
4677 } 4680 }
4678 4681
4679 // Sample json input: { "command": "GetV8HeapStats", 4682 // Sample json input: { "command": "GetV8HeapStats",
4680 // "tab_index": 0 } 4683 // "tab_index": 0 }
4681 // Refer to GetV8HeapStats() in chrome/test/pyautolib/pyauto.py for 4684 // Refer to GetV8HeapStats() in chrome/test/pyautolib/pyauto.py for
4682 // sample json output. 4685 // sample json output.
4683 void TestingAutomationProvider::GetV8HeapStats( 4686 void TestingAutomationProvider::GetV8HeapStats(
4684 Browser* browser, 4687 Browser* browser,
4685 DictionaryValue* args, 4688 DictionaryValue* args,
4686 IPC::Message* reply_message) { 4689 IPC::Message* reply_message) {
4687 WebContents* web_contents; 4690 WebContents* web_contents;
4688 int tab_index; 4691 int tab_index;
4689 std::string error; 4692 std::string error;
4690 4693
4691 if (!args->GetInteger("tab_index", &tab_index)) { 4694 if (!args->GetInteger("tab_index", &tab_index)) {
4692 AutomationJSONReply(this, reply_message).SendError( 4695 AutomationJSONReply(this, reply_message).SendError(
4693 "Missing 'tab_index' argument."); 4696 "Missing 'tab_index' argument.");
4694 return; 4697 return;
4695 } 4698 }
4696 4699
4697 web_contents = browser->tab_strip_model()->GetWebContentsAt(tab_index); 4700 web_contents = browser->tab_strip_model()->GetWebContentsAt(tab_index);
4698 if (!web_contents) { 4701 if (!web_contents) {
4699 AutomationJSONReply(this, reply_message).SendError( 4702 AutomationJSONReply(this, reply_message).SendError(base::StringPrintf(
4700 StringPrintf("Could not get WebContents at tab index %d", tab_index)); 4703 "Could not get WebContents at tab index %d", tab_index));
4701 return; 4704 return;
4702 } 4705 }
4703 4706
4704 RenderViewHost* render_view = web_contents->GetRenderViewHost(); 4707 RenderViewHost* render_view = web_contents->GetRenderViewHost();
4705 4708
4706 // This observer will delete itself. 4709 // This observer will delete itself.
4707 new V8HeapStatsObserver( 4710 new V8HeapStatsObserver(
4708 this, reply_message, 4711 this, reply_message,
4709 base::GetProcId(render_view->GetProcess()->GetHandle())); 4712 base::GetProcId(render_view->GetProcess()->GetHandle()));
4710 render_view->Send(new ChromeViewMsg_GetV8HeapStats); 4713 render_view->Send(new ChromeViewMsg_GetV8HeapStats);
(...skipping 12 matching lines...) Expand all
4723 std::string error; 4726 std::string error;
4724 4727
4725 if (!args->GetInteger("tab_index", &tab_index)) { 4728 if (!args->GetInteger("tab_index", &tab_index)) {
4726 AutomationJSONReply(this, reply_message).SendError( 4729 AutomationJSONReply(this, reply_message).SendError(
4727 "Missing 'tab_index' argument."); 4730 "Missing 'tab_index' argument.");
4728 return; 4731 return;
4729 } 4732 }
4730 4733
4731 web_contents = browser->tab_strip_model()->GetWebContentsAt(tab_index); 4734 web_contents = browser->tab_strip_model()->GetWebContentsAt(tab_index);
4732 if (!web_contents) { 4735 if (!web_contents) {
4733 AutomationJSONReply(this, reply_message).SendError( 4736 AutomationJSONReply(this, reply_message).SendError(base::StringPrintf(
4734 StringPrintf("Could not get WebContents at tab index %d", tab_index)); 4737 "Could not get WebContents at tab index %d", tab_index));
4735 return; 4738 return;
4736 } 4739 }
4737 4740
4738 RenderViewHost* render_view = web_contents->GetRenderViewHost(); 4741 RenderViewHost* render_view = web_contents->GetRenderViewHost();
4739 int routing_id = render_view->GetRoutingID(); 4742 int routing_id = render_view->GetRoutingID();
4740 4743
4741 // This observer will delete itself. 4744 // This observer will delete itself.
4742 new FPSObserver( 4745 new FPSObserver(
4743 this, reply_message, 4746 this, reply_message,
4744 base::GetProcId(render_view->GetProcess()->GetHandle()), 4747 base::GetProcId(render_view->GetProcess()->GetHandle()),
(...skipping 510 matching lines...) Expand 10 before | Expand all | Expand 10 after
5255 std::string error; 5258 std::string error;
5256 if (!GetBrowserFromJSONArgs(args, &browser, &error)) { 5259 if (!GetBrowserFromJSONArgs(args, &browser, &error)) {
5257 reply.SendError(error); 5260 reply.SendError(error);
5258 return; 5261 return;
5259 } 5262 }
5260 if (!args->GetInteger("accelerator", &command)) { 5263 if (!args->GetInteger("accelerator", &command)) {
5261 reply.SendError("'accelerator' missing or invalid."); 5264 reply.SendError("'accelerator' missing or invalid.");
5262 return; 5265 return;
5263 } 5266 }
5264 if (!chrome::SupportsCommand(browser, command)) { 5267 if (!chrome::SupportsCommand(browser, command)) {
5265 reply.SendError(StringPrintf("Browser does not support command=%d.", 5268 reply.SendError(base::StringPrintf("Browser does not support command=%d.",
5266 command)); 5269 command));
5267 return; 5270 return;
5268 } 5271 }
5269 if (!chrome::IsCommandEnabled(browser, command)) { 5272 if (!chrome::IsCommandEnabled(browser, command)) {
5270 reply.SendError(StringPrintf("Browser command=%d not enabled.", command)); 5273 reply.SendError(base::StringPrintf(
5274 "Browser command=%d not enabled.", command));
5271 return; 5275 return;
5272 } 5276 }
5273 chrome::ExecuteCommand(browser, command); 5277 chrome::ExecuteCommand(browser, command);
5274 reply.SendSuccess(NULL); 5278 reply.SendSuccess(NULL);
5275 } 5279 }
5276 5280
5277 void TestingAutomationProvider::ExecuteBrowserCommandJSON( 5281 void TestingAutomationProvider::ExecuteBrowserCommandJSON(
5278 DictionaryValue* args, 5282 DictionaryValue* args,
5279 IPC::Message* reply_message) { 5283 IPC::Message* reply_message) {
5280 int command; 5284 int command;
5281 Browser* browser; 5285 Browser* browser;
5282 std::string error; 5286 std::string error;
5283 if (!GetBrowserFromJSONArgs(args, &browser, &error)) { 5287 if (!GetBrowserFromJSONArgs(args, &browser, &error)) {
5284 AutomationJSONReply(this, reply_message).SendError(error); 5288 AutomationJSONReply(this, reply_message).SendError(error);
5285 return; 5289 return;
5286 } 5290 }
5287 if (!args->GetInteger("accelerator", &command)) { 5291 if (!args->GetInteger("accelerator", &command)) {
5288 AutomationJSONReply(this, reply_message).SendError( 5292 AutomationJSONReply(this, reply_message).SendError(
5289 "'accelerator' missing or invalid."); 5293 "'accelerator' missing or invalid.");
5290 return; 5294 return;
5291 } 5295 }
5292 if (!chrome::SupportsCommand(browser, command)) { 5296 if (!chrome::SupportsCommand(browser, command)) {
5293 AutomationJSONReply(this, reply_message).SendError( 5297 AutomationJSONReply(this, reply_message).SendError(
5294 StringPrintf("Browser does not support command=%d.", command)); 5298 base::StringPrintf("Browser does not support command=%d.", command));
5295 return; 5299 return;
5296 } 5300 }
5297 if (!chrome::IsCommandEnabled(browser, command)) { 5301 if (!chrome::IsCommandEnabled(browser, command)) {
5298 AutomationJSONReply(this, reply_message).SendError( 5302 AutomationJSONReply(this, reply_message).SendError(
5299 StringPrintf("Browser command=%d not enabled.", command)); 5303 base::StringPrintf("Browser command=%d not enabled.", command));
5300 return; 5304 return;
5301 } 5305 }
5302 // First check if we can handle the command without using an observer. 5306 // First check if we can handle the command without using an observer.
5303 for (size_t i = 0; i < arraysize(kSynchronousCommands); i++) { 5307 for (size_t i = 0; i < arraysize(kSynchronousCommands); i++) {
5304 if (command == kSynchronousCommands[i]) { 5308 if (command == kSynchronousCommands[i]) {
5305 chrome::ExecuteCommand(browser, command); 5309 chrome::ExecuteCommand(browser, command);
5306 AutomationJSONReply(this, reply_message).SendSuccess(NULL); 5310 AutomationJSONReply(this, reply_message).SendSuccess(NULL);
5307 return; 5311 return;
5308 } 5312 }
5309 } 5313 }
5310 // Use an observer if we have one, otherwise fail. 5314 // Use an observer if we have one, otherwise fail.
5311 if (ExecuteBrowserCommandObserver::CreateAndRegisterObserver( 5315 if (ExecuteBrowserCommandObserver::CreateAndRegisterObserver(
5312 this, browser, command, reply_message, true)) { 5316 this, browser, command, reply_message, true)) {
5313 chrome::ExecuteCommand(browser, command); 5317 chrome::ExecuteCommand(browser, command);
5314 return; 5318 return;
5315 } 5319 }
5316 AutomationJSONReply(this, reply_message).SendError( 5320 AutomationJSONReply(this, reply_message).SendError(base::StringPrintf(
5317 StringPrintf("Unable to register observer for browser command=%d.", 5321 "Unable to register observer for browser command=%d.", command));
5318 command));
5319 } 5322 }
5320 5323
5321 void TestingAutomationProvider::IsMenuCommandEnabledJSON( 5324 void TestingAutomationProvider::IsMenuCommandEnabledJSON(
5322 DictionaryValue* args, 5325 DictionaryValue* args,
5323 IPC::Message* reply_message) { 5326 IPC::Message* reply_message) {
5324 int command; 5327 int command;
5325 Browser* browser; 5328 Browser* browser;
5326 std::string error; 5329 std::string error;
5327 if (!GetBrowserFromJSONArgs(args, &browser, &error)) { 5330 if (!GetBrowserFromJSONArgs(args, &browser, &error)) {
5328 AutomationJSONReply(this, reply_message).SendError(error); 5331 AutomationJSONReply(this, reply_message).SendError(error);
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
5487 return; 5490 return;
5488 } 5491 }
5489 GURL url(url_string); 5492 GURL url(url_string);
5490 if (!url.is_valid()) { 5493 if (!url.is_valid()) {
5491 reply.SendError("Invalid url."); 5494 reply.SendError("Invalid url.");
5492 return; 5495 return;
5493 } 5496 }
5494 automation_util::GetCookies(url, web_contents, &value_size, &value); 5497 automation_util::GetCookies(url, web_contents, &value_size, &value);
5495 if (value_size == -1) { 5498 if (value_size == -1) {
5496 reply.SendError( 5499 reply.SendError(
5497 StringPrintf("Unable to retrieve cookies for url=%s.", 5500 base::StringPrintf("Unable to retrieve cookies for url=%s.",
5498 url_string.c_str())); 5501 url_string.c_str()));
5499 return; 5502 return;
5500 } 5503 }
5501 DictionaryValue dict; 5504 DictionaryValue dict;
5502 dict.SetString("cookies", value); 5505 dict.SetString("cookies", value);
5503 reply.SendSuccess(&dict); 5506 reply.SendSuccess(&dict);
5504 } 5507 }
5505 5508
5506 void TestingAutomationProvider::DeleteCookieInBrowserContext( 5509 void TestingAutomationProvider::DeleteCookieInBrowserContext(
5507 DictionaryValue* args, 5510 DictionaryValue* args,
5508 IPC::Message* reply_message) { 5511 IPC::Message* reply_message) {
(...skipping 20 matching lines...) Expand all
5529 return; 5532 return;
5530 } 5533 }
5531 GURL url(url_string); 5534 GURL url(url_string);
5532 if (!url.is_valid()) { 5535 if (!url.is_valid()) {
5533 reply.SendError("Invalid url."); 5536 reply.SendError("Invalid url.");
5534 return; 5537 return;
5535 } 5538 }
5536 automation_util::DeleteCookie(url, cookie_name, web_contents, &success); 5539 automation_util::DeleteCookie(url, cookie_name, web_contents, &success);
5537 if (!success) { 5540 if (!success) {
5538 reply.SendError( 5541 reply.SendError(
5539 StringPrintf("Failed to delete cookie with name=%s for url=%s.", 5542 base::StringPrintf("Failed to delete cookie with name=%s for url=%s.",
5540 cookie_name.c_str(), url_string.c_str())); 5543 cookie_name.c_str(), url_string.c_str()));
5541 return; 5544 return;
5542 } 5545 }
5543 reply.SendSuccess(NULL); 5546 reply.SendSuccess(NULL);
5544 } 5547 }
5545 5548
5546 void TestingAutomationProvider::SetCookieInBrowserContext( 5549 void TestingAutomationProvider::SetCookieInBrowserContext(
5547 DictionaryValue* args, 5550 DictionaryValue* args,
5548 IPC::Message* reply_message) { 5551 IPC::Message* reply_message) {
5549 AutomationJSONReply reply(this, reply_message); 5552 AutomationJSONReply reply(this, reply_message);
5550 WebContents* web_contents; 5553 WebContents* web_contents;
(...skipping 16 matching lines...) Expand all
5567 reply.SendError("'url' missing or invalid."); 5570 reply.SendError("'url' missing or invalid.");
5568 return; 5571 return;
5569 } 5572 }
5570 GURL url(url_string); 5573 GURL url(url_string);
5571 if (!url.is_valid()) { 5574 if (!url.is_valid()) {
5572 reply.SendError("Invalid url."); 5575 reply.SendError("Invalid url.");
5573 return; 5576 return;
5574 } 5577 }
5575 automation_util::SetCookie(url, value, web_contents, &response_value); 5578 automation_util::SetCookie(url, value, web_contents, &response_value);
5576 if (response_value != 1) { 5579 if (response_value != 1) {
5577 reply.SendError( 5580 reply.SendError(base::StringPrintf(
5578 StringPrintf("Unable set cookie for url=%s.", url_string.c_str())); 5581 "Unable set cookie for url=%s.", url_string.c_str()));
5579 return; 5582 return;
5580 } 5583 }
5581 reply.SendSuccess(NULL); 5584 reply.SendSuccess(NULL);
5582 } 5585 }
5583 5586
5584 void TestingAutomationProvider::GetTabIds( 5587 void TestingAutomationProvider::GetTabIds(
5585 DictionaryValue* args, IPC::Message* reply_message) { 5588 DictionaryValue* args, IPC::Message* reply_message) {
5586 ListValue* id_list = new ListValue(); 5589 ListValue* id_list = new ListValue();
5587 for (chrome::BrowserIterator it; !it.done(); it.Next()) { 5590 for (chrome::BrowserIterator it; !it.done(); it.Next()) {
5588 Browser* browser = *it; 5591 Browser* browser = *it;
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
5915 if (g_browser_process) 5918 if (g_browser_process)
5916 g_browser_process->GetAutomationProviderList()->RemoveProvider(this); 5919 g_browser_process->GetAutomationProviderList()->RemoveProvider(this);
5917 } 5920 }
5918 5921
5919 void TestingAutomationProvider::EnsureTabSelected(Browser* browser, 5922 void TestingAutomationProvider::EnsureTabSelected(Browser* browser,
5920 WebContents* tab) { 5923 WebContents* tab) {
5921 TabStripModel* tab_strip = browser->tab_strip_model(); 5924 TabStripModel* tab_strip = browser->tab_strip_model();
5922 if (tab_strip->GetActiveWebContents() != tab) 5925 if (tab_strip->GetActiveWebContents() != tab)
5923 tab_strip->ActivateTabAt(tab_strip->GetIndexOfWebContents(tab), true); 5926 tab_strip->ActivateTabAt(tab_strip->GetIndexOfWebContents(tab), true);
5924 } 5927 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698