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

Unified Diff: net/proxy/proxy_service.cc

Issue 8985012: base::Bind: Convert net/proxy. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: One more include. Created 9 years 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 | « net/proxy/proxy_service.h ('k') | net/proxy/proxy_service_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/proxy/proxy_service.cc
diff --git a/net/proxy/proxy_service.cc b/net/proxy/proxy_service.cc
index 647718be1cd2e6e9cb132db8193e17ab2b0b6599..c8193b4dabdb3a79ce65f1059910c8eaf556b596 100644
--- a/net/proxy/proxy_service.cc
+++ b/net/proxy/proxy_service.cc
@@ -108,10 +108,10 @@ class ProxyResolverNull : public ProxyResolver {
public:
ProxyResolverNull() : ProxyResolver(false /*expects_pac_bytes*/) {}
- // ProxyResolver implementation:
+ // ProxyResolver implementation.
virtual int GetProxyForURL(const GURL& url,
ProxyInfo* results,
- OldCompletionCallback* callback,
+ const CompletionCallback& callback,
RequestHandle* request,
const BoundNetLog& net_log) OVERRIDE {
return ERR_NOT_IMPLEMENTED;
@@ -138,7 +138,7 @@ class ProxyResolverNull : public ProxyResolver {
virtual int SetPacScript(
const scoped_refptr<ProxyResolverScriptData>& /*script_data*/,
- OldCompletionCallback* /*callback*/) OVERRIDE {
+ const CompletionCallback& /*callback*/) OVERRIDE {
return ERR_NOT_IMPLEMENTED;
}
};
@@ -153,7 +153,7 @@ class ProxyResolverFromPacString : public ProxyResolver {
virtual int GetProxyForURL(const GURL& url,
ProxyInfo* results,
- OldCompletionCallback* callback,
+ const CompletionCallback& callback,
RequestHandle* request,
const BoundNetLog& net_log) OVERRIDE {
results->UsePacString(pac_string_);
@@ -181,7 +181,7 @@ class ProxyResolverFromPacString : public ProxyResolver {
virtual int SetPacScript(
const scoped_refptr<ProxyResolverScriptData>& pac_script,
- OldCompletionCallback* callback) OVERRIDE {
+ const CompletionCallback& callback) OVERRIDE {
return OK;
}
@@ -334,10 +334,7 @@ class ProxyService::InitProxyResolver {
NetLog* net_log)
: decider_(proxy_script_fetcher, dhcp_proxy_script_fetcher, net_log),
effective_config_(NULL),
- proxy_resolver_(proxy_resolver),
- user_callback_(NULL),
- ALLOW_THIS_IN_INITIALIZER_LIST(io_callback_(
- this, &InitProxyResolver::OnIOCompletion)) {
+ proxy_resolver_(proxy_resolver) {
}
~InitProxyResolver() {
@@ -351,11 +348,11 @@ class ProxyService::InitProxyResolver {
int Init(const ProxyConfig& config,
base::TimeDelta wait_delay,
ProxyConfig* effective_config,
- OldCompletionCallback* callback) {
+ const CompletionCallback& callback) {
config_ = config;
wait_delay_ = wait_delay;
effective_config_ = effective_config;
- user_callback_ = callback;
+ callback_ = callback;
next_state_ = STATE_DECIDE_PROXY_SCRIPT;
return DoLoop(OK);
@@ -405,7 +402,7 @@ class ProxyService::InitProxyResolver {
return decider_.Start(
config_, wait_delay_, proxy_resolver_->expects_pac_bytes(),
- &io_callback_);
+ base::Bind(&InitProxyResolver::OnIOCompletion, base::Unretained(this)));
}
int DoDecideProxyScriptComplete(int result) {
@@ -421,7 +418,9 @@ class ProxyService::InitProxyResolver {
DCHECK(decider_.script_data());
// TODO(eroman): Should log this latency to the NetLog.
next_state_ = STATE_SET_PAC_SCRIPT_COMPLETE;
- return proxy_resolver_->SetPacScript(decider_.script_data(), &io_callback_);
+ return proxy_resolver_->SetPacScript(
+ decider_.script_data(),
+ base::Bind(&InitProxyResolver::OnIOCompletion, base::Unretained(this)));
}
int DoSetPacScriptComplete(int result) {
@@ -437,7 +436,7 @@ class ProxyService::InitProxyResolver {
void DoCallback(int result) {
DCHECK_NE(ERR_IO_PENDING, result);
- user_callback_->Run(result);
+ callback_.Run(result);
}
ProxyConfig config_;
@@ -445,8 +444,7 @@ class ProxyService::InitProxyResolver {
ProxyScriptDecider decider_;
ProxyConfig* effective_config_;
ProxyResolver* proxy_resolver_;
- OldCompletionCallback* user_callback_;
- OldCompletionCallbackImpl<InitProxyResolver> io_callback_;
+ CompletionCallback callback_;
State next_state_;
DISALLOW_COPY_AND_ASSIGN(InitProxyResolver);
@@ -457,33 +455,13 @@ class ProxyService::InitProxyResolver {
class ProxyService::PacRequest
: public base::RefCounted<ProxyService::PacRequest> {
public:
- PacRequest(ProxyService* service,
- const GURL& url,
- ProxyInfo* results,
- OldCompletionCallback* user_callback,
- const BoundNetLog& net_log)
- : service_(service),
- old_user_callback_(user_callback),
- ALLOW_THIS_IN_INITIALIZER_LIST(io_callback_(
- this, &PacRequest::QueryComplete)),
- results_(results),
- url_(url),
- resolve_job_(NULL),
- config_id_(ProxyConfig::kInvalidConfigID),
- net_log_(net_log) {
- DCHECK(user_callback);
- }
-
- PacRequest(ProxyService* service,
+ PacRequest(ProxyService* service,
const GURL& url,
ProxyInfo* results,
const net::CompletionCallback& user_callback,
const BoundNetLog& net_log)
: service_(service),
- old_user_callback_(NULL),
user_callback_(user_callback),
- ALLOW_THIS_IN_INITIALIZER_LIST(io_callback_(
- this, &PacRequest::QueryComplete)),
results_(results),
url_(url),
resolve_job_(NULL),
@@ -502,7 +480,9 @@ class ProxyService::PacRequest
config_id_ = service_->config_.id();
return resolver()->GetProxyForURL(
- url_, results_, &io_callback_, &resolve_job_, net_log_);
+ url_, results_,
+ base::Bind(&PacRequest::QueryComplete, base::Unretained(this)),
+ &resolve_job_, net_log_);
}
bool is_started() const {
@@ -534,7 +514,6 @@ class ProxyService::PacRequest
// Mark as cancelled, to prevent accessing this again later.
service_ = NULL;
- old_user_callback_ = NULL;
user_callback_.Reset();
results_ = NULL;
@@ -543,7 +522,7 @@ class ProxyService::PacRequest
// Returns true if Cancel() has been called.
bool was_cancelled() const {
- return old_user_callback_ == NULL && user_callback_.is_null();
+ return user_callback_.is_null();
}
// Helper to call after ProxyResolver completion (both synchronous and
@@ -581,11 +560,7 @@ class ProxyService::PacRequest
// Remove this completed PacRequest from the service's pending list.
/// (which will probably cause deletion of |this|).
- if (old_user_callback_) {
- OldCompletionCallback* callback = old_user_callback_;
- service_->RemovePendingRequest(this);
- callback->Run(result_code);
- } else if (!user_callback_.is_null()){
+ if (!user_callback_.is_null()){
net::CompletionCallback callback = user_callback_;
service_->RemovePendingRequest(this);
callback.Run(result_code);
@@ -598,9 +573,7 @@ class ProxyService::PacRequest
// requests are cancelled during ~ProxyService, so this is guaranteed
// to be valid throughout our lifetime.
ProxyService* service_;
- OldCompletionCallback* old_user_callback_;
net::CompletionCallback user_callback_;
- OldCompletionCallbackImpl<PacRequest> io_callback_;
ProxyInfo* results_;
GURL url_;
ProxyResolver::RequestHandle resolve_job_;
@@ -615,8 +588,6 @@ ProxyService::ProxyService(ProxyConfigService* config_service,
NetLog* net_log)
: resolver_(resolver),
next_config_id_(1),
- ALLOW_THIS_IN_INITIALIZER_LIST(init_proxy_resolver_callback_(
- this, &ProxyService::OnInitProxyResolverComplete)),
current_state_(STATE_NONE) ,
net_log_(net_log),
stall_proxy_auto_config_delay_(
@@ -740,54 +711,6 @@ ProxyService* ProxyService::CreateFixedFromPacResult(
int ProxyService::ResolveProxy(const GURL& raw_url,
ProxyInfo* result,
- OldCompletionCallback* callback,
- PacRequest** pac_request,
- const BoundNetLog& net_log) {
- DCHECK(CalledOnValidThread());
- DCHECK(callback);
-
- net_log.BeginEvent(NetLog::TYPE_PROXY_SERVICE, NULL);
-
- config_service_->OnLazyPoll();
- if (current_state_ == STATE_NONE)
- ApplyProxyConfigIfAvailable();
-
- // Strip away any reference fragments and the username/password, as they
- // are not relevant to proxy resolution.
- GURL url = SimplifyUrlForRequest(raw_url);
-
- // Check if the request can be completed right away. (This is the case when
- // using a direct connection for example).
- int rv = TryToCompleteSynchronously(url, result);
- if (rv != ERR_IO_PENDING)
- return DidFinishResolvingProxy(result, rv, net_log);
-
- scoped_refptr<PacRequest> req(
- new PacRequest(this, url, result, callback, net_log));
-
- if (current_state_ == STATE_READY) {
- // Start the resolve request.
- rv = req->Start();
- if (rv != ERR_IO_PENDING)
- return req->QueryDidComplete(rv);
- } else {
- req->net_log()->BeginEvent(NetLog::TYPE_PROXY_SERVICE_WAITING_FOR_INIT_PAC,
- NULL);
- }
-
- DCHECK_EQ(ERR_IO_PENDING, rv);
- DCHECK(!ContainsPendingRequest(req));
- pending_requests_.push_back(req);
-
- // Completion will be notified through |callback|, unless the caller cancels
- // the request using |pac_request|.
- if (pac_request)
- *pac_request = req.get();
- return rv; // ERR_IO_PENDING
-}
-
-int ProxyService::ResolveProxy(const GURL& raw_url,
- ProxyInfo* result,
const net::CompletionCallback& callback,
PacRequest** pac_request,
const BoundNetLog& net_log) {
@@ -1242,7 +1165,9 @@ void ProxyService::InitializeUsingLastFetchedConfig() {
stall_proxy_autoconfig_until_ - base::TimeTicks::Now();
int rv = init_proxy_resolver_->Init(
- fetched_config_, wait_delay, &config_, &init_proxy_resolver_callback_);
+ fetched_config_, wait_delay, &config_,
+ base::Bind(&ProxyService::OnInitProxyResolverComplete,
+ base::Unretained(this)));
if (rv != ERR_IO_PENDING)
OnInitProxyResolverComplete(rv);
@@ -1274,8 +1199,10 @@ int SyncProxyServiceHelper::ResolveProxy(const GURL& url,
const BoundNetLog& net_log) {
DCHECK(io_message_loop_ != MessageLoop::current());
- io_message_loop_->PostTask(FROM_HERE, NewRunnableMethod(
- this, &SyncProxyServiceHelper::StartAsyncResolve, url, net_log));
+ io_message_loop_->PostTask(
+ FROM_HERE,
+ base::Bind(&SyncProxyServiceHelper::StartAsyncResolve, this, url,
+ net_log));
event_.Wait();
@@ -1289,8 +1216,10 @@ int SyncProxyServiceHelper::ReconsiderProxyAfterError(
const GURL& url, ProxyInfo* proxy_info, const BoundNetLog& net_log) {
DCHECK(io_message_loop_ != MessageLoop::current());
- io_message_loop_->PostTask(FROM_HERE, NewRunnableMethod(
- this, &SyncProxyServiceHelper::StartAsyncReconsider, url, net_log));
+ io_message_loop_->PostTask(
+ FROM_HERE,
+ base::Bind(&SyncProxyServiceHelper::StartAsyncReconsider, this, url,
+ net_log));
event_.Wait();
« no previous file with comments | « net/proxy/proxy_service.h ('k') | net/proxy/proxy_service_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698