Index: net/proxy/dhcp_proxy_script_fetcher_win.cc |
diff --git a/net/proxy/dhcp_proxy_script_fetcher_win.cc b/net/proxy/dhcp_proxy_script_fetcher_win.cc |
index 9ec711351c81e7ba8bb47a11e4826e9ff4c54506..cec2b1ca7a030904c8bffddc0377a0d0cf8fb97a 100644 |
--- a/net/proxy/dhcp_proxy_script_fetcher_win.cc |
+++ b/net/proxy/dhcp_proxy_script_fetcher_win.cc |
@@ -5,6 +5,7 @@ |
#include "net/proxy/dhcp_proxy_script_fetcher_win.h" |
#include "base/bind.h" |
+#include "base/bind_helpers.h" |
#include "base/metrics/histogram.h" |
#include "base/perftimer.h" |
#include "base/threading/worker_pool.h" |
@@ -37,8 +38,6 @@ namespace net { |
DhcpProxyScriptFetcherWin::DhcpProxyScriptFetcherWin( |
URLRequestContext* url_request_context) |
: state_(STATE_START), |
- ALLOW_THIS_IN_INITIALIZER_LIST(fetcher_callback_( |
- this, &DhcpProxyScriptFetcherWin::OnFetcherDone)), |
num_pending_fetchers_(0), |
url_request_context_(url_request_context) { |
DCHECK(url_request_context_); |
@@ -55,7 +54,7 @@ DhcpProxyScriptFetcherWin::~DhcpProxyScriptFetcherWin() { |
} |
int DhcpProxyScriptFetcherWin::Fetch(string16* utf16_text, |
- OldCompletionCallback* callback) { |
+ const CompletionCallback& callback) { |
DCHECK(CalledOnValidThread()); |
if (state_ != STATE_START && state_ != STATE_DONE) { |
NOTREACHED(); |
@@ -65,7 +64,7 @@ int DhcpProxyScriptFetcherWin::Fetch(string16* utf16_text, |
fetch_start_time_ = base::TimeTicks::Now(); |
state_ = STATE_WAIT_ADAPTERS; |
- client_callback_ = callback; |
+ callback_ = callback; |
destination_string_ = utf16_text; |
last_query_ = ImplCreateAdapterQuery(); |
@@ -100,7 +99,7 @@ void DhcpProxyScriptFetcherWin::CancelImpl() { |
DCHECK(CalledOnValidThread()); |
if (state_ != STATE_DONE) { |
- client_callback_ = NULL; |
+ callback_.Reset(); |
wait_timer_.Stop(); |
state_ = STATE_DONE; |
@@ -145,7 +144,9 @@ void DhcpProxyScriptFetcherWin::OnGetCandidateAdapterNamesDone( |
it != adapter_names.end(); |
++it) { |
DhcpProxyScriptAdapterFetcher* fetcher(ImplCreateAdapterFetcher()); |
- fetcher->Fetch(*it, &fetcher_callback_); |
+ fetcher->Fetch( |
+ *it, base::Bind(&DhcpProxyScriptFetcherWin::OnFetcherDone, |
+ base::Unretained(this))); |
fetchers_.push_back(fetcher); |
} |
num_pending_fetchers_ = fetchers_.size(); |
@@ -245,11 +246,11 @@ void DhcpProxyScriptFetcherWin::TransitionToDone() { |
} |
} |
- OldCompletionCallback* callback = client_callback_; |
+ CompletionCallback callback = callback_; |
CancelImpl(); |
DCHECK_EQ(state_, STATE_DONE); |
DCHECK(fetchers_.empty()); |
- DCHECK(!client_callback_); // Invariant of data. |
+ DCHECK(callback_.is_null()); // Invariant of data. |
UMA_HISTOGRAM_TIMES("Net.DhcpWpadCompletionTime", |
base::TimeTicks::Now() - fetch_start_time_); |
@@ -260,7 +261,7 @@ void DhcpProxyScriptFetcherWin::TransitionToDone() { |
} |
// We may be deleted re-entrantly within this outcall. |
- callback->Run(result); |
+ callback.Run(result); |
} |
int DhcpProxyScriptFetcherWin::num_pending_fetchers() const { |