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

Unified Diff: chrome/browser/automation/automation_provider.cc

Issue 8678018: base::Bind: Convert automation_provider.cc. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/automation/automation_provider.cc
diff --git a/chrome/browser/automation/automation_provider.cc b/chrome/browser/automation/automation_provider.cc
index 1d2205c5047af52476ab54d6df4b9ba8e7fd1c3c..a48ad44561f5685747dd3208a7c9139d20d3b738 100644
--- a/chrome/browser/automation/automation_provider.cc
+++ b/chrome/browser/automation/automation_provider.cc
@@ -6,6 +6,7 @@
#include <set>
+#include "base/bind.h"
#include "base/callback.h"
#include "base/command_line.h"
#include "base/debug/trace_event.h"
@@ -106,6 +107,66 @@ using content::BrowserThread;
using WebKit::WebFindOptions;
using base::Time;
+namespace {
+
+void PopulateProxyConfig(const DictionaryValue& dict, net::ProxyConfig* pc) {
+ DCHECK(pc);
+ bool no_proxy = false;
+ if (dict.GetBoolean(automation::kJSONProxyNoProxy, &no_proxy)) {
+ // Make no changes to the ProxyConfig.
+ return;
+ }
+ bool auto_config;
+ if (dict.GetBoolean(automation::kJSONProxyAutoconfig, &auto_config)) {
+ pc->set_auto_detect(true);
+ }
+ std::string pac_url;
+ if (dict.GetString(automation::kJSONProxyPacUrl, &pac_url)) {
+ pc->set_pac_url(GURL(pac_url));
+ }
+ bool pac_mandatory;
+ if (dict.GetBoolean(automation::kJSONProxyPacMandatory, &pac_mandatory)) {
+ pc->set_pac_mandatory(pac_mandatory);
+ }
+ std::string proxy_bypass_list;
+ if (dict.GetString(automation::kJSONProxyBypassList, &proxy_bypass_list)) {
+ pc->proxy_rules().bypass_rules.ParseFromString(proxy_bypass_list);
+ }
+ std::string proxy_server;
+ if (dict.GetString(automation::kJSONProxyServer, &proxy_server)) {
+ pc->proxy_rules().ParseFromString(proxy_server);
+ }
+}
+
+void SetProxyConfigCallback(
+ const scoped_refptr<net::URLRequestContextGetter>& request_context_getter,
+ const std::string& proxy_config) {
+ // First, deserialize the JSON string. If this fails, log and bail.
+ JSONStringValueSerializer deserializer(proxy_config);
+ std::string error_msg;
+ scoped_ptr<Value> root(deserializer.Deserialize(NULL, &error_msg));
+ if (!root.get() || root->GetType() != Value::TYPE_DICTIONARY) {
+ DLOG(WARNING) << "Received bad JSON string for ProxyConfig: "
+ << error_msg;
+ return;
+ }
+
+ scoped_ptr<DictionaryValue> dict(
+ static_cast<DictionaryValue*>(root.release()));
+ // Now put together a proxy configuration from the deserialized string.
+ net::ProxyConfig pc;
+ PopulateProxyConfig(*dict.get(), &pc);
+
+ net::ProxyService* proxy_service =
+ request_context_getter->GetURLRequestContext()->proxy_service();
+ DCHECK(proxy_service);
+ scoped_ptr<net::ProxyConfigService> proxy_config_service(
+ new net::ProxyConfigServiceFixed(pc));
+ proxy_service->ResetConfigService(proxy_config_service.release());
+}
+
+} // namespace
+
AutomationProvider::AutomationProvider(Profile* profile)
: profile_(profile),
reply_message_(NULL),
@@ -431,24 +492,6 @@ void AutomationProvider::OnMessageDeserializationFailure() {
channel_->Close();
}
-// This task just adds another task to the event queue. This is useful if
-// you want to ensure that any tasks added to the event queue after this one
-// have already been processed by the time |task| is run.
-class InvokeTaskLaterTask : public Task {
- public:
- explicit InvokeTaskLaterTask(Task* task) : task_(task) {}
- virtual ~InvokeTaskLaterTask() {}
-
- virtual void Run() {
- MessageLoop::current()->PostTask(FROM_HERE, task_);
- }
-
- private:
- Task* task_;
-
- DISALLOW_COPY_AND_ASSIGN(InvokeTaskLaterTask);
-};
-
void AutomationProvider::HandleUnused(const IPC::Message& message, int handle) {
if (window_tracker_->ContainsHandle(handle)) {
window_tracker_->Remove(window_tracker_->GetResource(handle));
@@ -542,72 +585,6 @@ void AutomationProvider::SendFindRequest(
options);
}
-class SetProxyConfigTask : public Task {
- public:
- SetProxyConfigTask(net::URLRequestContextGetter* request_context_getter,
- const std::string& new_proxy_config)
- : request_context_getter_(request_context_getter),
- proxy_config_(new_proxy_config) {}
- virtual void Run() {
- // First, deserialize the JSON string. If this fails, log and bail.
- JSONStringValueSerializer deserializer(proxy_config_);
- std::string error_msg;
- scoped_ptr<Value> root(deserializer.Deserialize(NULL, &error_msg));
- if (!root.get() || root->GetType() != Value::TYPE_DICTIONARY) {
- DLOG(WARNING) << "Received bad JSON string for ProxyConfig: "
- << error_msg;
- return;
- }
-
- scoped_ptr<DictionaryValue> dict(
- static_cast<DictionaryValue*>(root.release()));
- // Now put together a proxy configuration from the deserialized string.
- net::ProxyConfig pc;
- PopulateProxyConfig(*dict.get(), &pc);
-
- net::ProxyService* proxy_service =
- request_context_getter_->GetURLRequestContext()->proxy_service();
- DCHECK(proxy_service);
- scoped_ptr<net::ProxyConfigService> proxy_config_service(
- new net::ProxyConfigServiceFixed(pc));
- proxy_service->ResetConfigService(proxy_config_service.release());
- }
-
- void PopulateProxyConfig(const DictionaryValue& dict, net::ProxyConfig* pc) {
- DCHECK(pc);
- bool no_proxy = false;
- if (dict.GetBoolean(automation::kJSONProxyNoProxy, &no_proxy)) {
- // Make no changes to the ProxyConfig.
- return;
- }
- bool auto_config;
- if (dict.GetBoolean(automation::kJSONProxyAutoconfig, &auto_config)) {
- pc->set_auto_detect(true);
- }
- std::string pac_url;
- if (dict.GetString(automation::kJSONProxyPacUrl, &pac_url)) {
- pc->set_pac_url(GURL(pac_url));
- }
- bool pac_mandatory;
- if (dict.GetBoolean(automation::kJSONProxyPacMandatory, &pac_mandatory)) {
- pc->set_pac_mandatory(pac_mandatory);
- }
- std::string proxy_bypass_list;
- if (dict.GetString(automation::kJSONProxyBypassList, &proxy_bypass_list)) {
- pc->proxy_rules().bypass_rules.ParseFromString(proxy_bypass_list);
- }
- std::string proxy_server;
- if (dict.GetString(automation::kJSONProxyServer, &proxy_server)) {
- pc->proxy_rules().ParseFromString(proxy_server);
- }
- }
-
- private:
- scoped_refptr<net::URLRequestContextGetter> request_context_getter_;
- std::string proxy_config_;
-};
-
-
void AutomationProvider::SetProxyConfig(const std::string& new_proxy_config) {
net::URLRequestContextGetter* context_getter =
profile_->GetRequestContext();
@@ -615,7 +592,8 @@ void AutomationProvider::SetProxyConfig(const std::string& new_proxy_config) {
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
- new SetProxyConfigTask(context_getter, new_proxy_config));
+ base::Bind(SetProxyConfigCallback, make_scoped_refptr(context_getter),
+ new_proxy_config));
}
TabContents* AutomationProvider::GetTabContentsForHandle(
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698