Use CompletionOnceCallback in //net/proxy_resolution.
Change most of arguments of type CompletionCallback by constant reference to
CompletionOnceCallback by value, and change most const or non-const
CompletionCallback type members to non-const CompletionOnceCallback in
//net/proxy_resolution, and in some other places as necessary. This is part of
//the larger transition effort described on the bug.
In addition to changing type, also:
* avoid move to local variable when unnecessary;
* remove unused MockAsyncProxyResolver::callback() method;
* inline ProxyResolutionService::InitProxyResolver::DoCallback() and
PacFileDecider::DoCallback(), both only called once;
* include completion_callback.h in //chromeos where
CompletionCallback is used but was only transitively included.
Bug: 807724
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_mojo
Change-Id: Ib9e08f54988abb6655f2efd68fc6169ff12e9b20
Reviewed-on: https://chromium-review.googlesource.com/1066291
Reviewed-by: Steven Bennetts <[email protected]>
Reviewed-by: Eric Roman <[email protected]>
Reviewed-by: Scott Graham <[email protected]>
Commit-Queue: Bence Béky <[email protected]>
Cr-Commit-Position: refs/heads/master@{#561992}
diff --git a/chromeos/dbus/services/proxy_resolution_service_provider_unittest.cc b/chromeos/dbus/services/proxy_resolution_service_provider_unittest.cc
index a44b973..3de36e03 100644
--- a/chromeos/dbus/services/proxy_resolution_service_provider_unittest.cc
+++ b/chromeos/dbus/services/proxy_resolution_service_provider_unittest.cc
@@ -61,7 +61,7 @@
// net::ProxyResolver:
int GetProxyForURL(const GURL& url,
net::ProxyInfo* results,
- const net::CompletionCallback& callback,
+ net::CompletionOnceCallback callback,
std::unique_ptr<Request>* request,
const net::NetLogWithSource& net_log) override {
CHECK(network_task_runner_->BelongsToCurrentThread());
@@ -70,7 +70,7 @@
return result_;
base::ThreadTaskRunnerHandle::Get()->PostTask(
- FROM_HERE, base::BindOnce(callback, result_));
+ FROM_HERE, base::BindOnce(std::move(callback), result_));
return net::ERR_IO_PENDING;
}
@@ -103,7 +103,7 @@
// net::ProxyResolverFactory:
int CreateProxyResolver(const scoped_refptr<net::PacFileData>& pac_script,
std::unique_ptr<net::ProxyResolver>* resolver,
- const net::CompletionCallback& callback,
+ net::CompletionOnceCallback callback,
std::unique_ptr<Request>* request) override {
*resolver = std::make_unique<net::ForwardingProxyResolver>(resolver_);
return net::OK;
diff --git a/chromeos/network/dhcp_pac_file_fetcher_chromeos.cc b/chromeos/network/dhcp_pac_file_fetcher_chromeos.cc
index 4605b22..1830c3d 100644
--- a/chromeos/network/dhcp_pac_file_fetcher_chromeos.cc
+++ b/chromeos/network/dhcp_pac_file_fetcher_chromeos.cc
@@ -4,6 +4,7 @@
#include "chromeos/network/dhcp_pac_file_fetcher_chromeos.h"
+#include "base/callback_helpers.h"
#include "base/location.h"
#include "base/task_runner_util.h"
#include "chromeos/network/network_event_log.h"
@@ -44,7 +45,7 @@
int DhcpPacFileFetcherChromeos::Fetch(
base::string16* utf16_text,
- const net::CompletionCallback& callback,
+ net::CompletionOnceCallback callback,
const net::NetLogWithSource& net_log,
const net::NetworkTrafficAnnotationTag traffic_annotation) {
if (!network_handler_task_runner_.get())
@@ -52,10 +53,10 @@
CHECK(!callback.is_null());
base::PostTaskAndReplyWithResult(
network_handler_task_runner_.get(), FROM_HERE,
- base::Bind(&GetPacUrlFromDefaultNetwork),
- base::Bind(&DhcpPacFileFetcherChromeos::ContinueFetch,
- weak_ptr_factory_.GetWeakPtr(), utf16_text, callback,
- traffic_annotation));
+ base::BindOnce(&GetPacUrlFromDefaultNetwork),
+ base::BindOnce(&DhcpPacFileFetcherChromeos::ContinueFetch,
+ weak_ptr_factory_.GetWeakPtr(), utf16_text,
+ std::move(callback), traffic_annotation));
return net::ERR_IO_PENDING;
}
@@ -79,19 +80,22 @@
void DhcpPacFileFetcherChromeos::ContinueFetch(
base::string16* utf16_text,
- net::CompletionCallback callback,
+ net::CompletionOnceCallback callback,
const net::NetworkTrafficAnnotationTag traffic_annotation,
std::string pac_url) {
NET_LOG_EVENT("DhcpPacFileFetcher", pac_url);
pac_url_ = GURL(pac_url);
if (pac_url_.is_empty()) {
- callback.Run(net::ERR_PAC_NOT_IN_DHCP);
+ std::move(callback).Run(net::ERR_PAC_NOT_IN_DHCP);
return;
}
- int res = pac_file_fetcher_->Fetch(pac_url_, utf16_text, callback,
+
+ auto repeating_callback =
+ base::AdaptCallbackForRepeating(std::move(callback));
+ int res = pac_file_fetcher_->Fetch(pac_url_, utf16_text, repeating_callback,
traffic_annotation);
if (res != net::ERR_IO_PENDING)
- callback.Run(res);
+ repeating_callback.Run(res);
}
} // namespace chromeos
diff --git a/chromeos/network/dhcp_pac_file_fetcher_chromeos.h b/chromeos/network/dhcp_pac_file_fetcher_chromeos.h
index 8cac872..cf98c4bb 100644
--- a/chromeos/network/dhcp_pac_file_fetcher_chromeos.h
+++ b/chromeos/network/dhcp_pac_file_fetcher_chromeos.h
@@ -11,6 +11,7 @@
#include "base/memory/ref_counted.h"
#include "base/memory/weak_ptr.h"
#include "chromeos/chromeos_export.h"
+#include "net/base/completion_once_callback.h"
#include "net/proxy_resolution/dhcp_pac_file_fetcher.h"
#include "net/traffic_annotation/network_traffic_annotation.h"
#include "url/gurl.h"
@@ -39,7 +40,7 @@
// net::DhcpPacFileFetcher
int Fetch(base::string16* utf16_text,
- const net::CompletionCallback& callback,
+ net::CompletionOnceCallback callback,
const net::NetLogWithSource& net_log,
const net::NetworkTrafficAnnotationTag traffic_annotation) override;
void Cancel() override;
@@ -49,7 +50,7 @@
private:
void ContinueFetch(base::string16* utf16_text,
- net::CompletionCallback callback,
+ net::CompletionOnceCallback callback,
const net::NetworkTrafficAnnotationTag traffic_annotation,
std::string pac_url);
diff --git a/net/http/http_network_transaction_unittest.cc b/net/http/http_network_transaction_unittest.cc
index 973e3d9..6d0f47ee 100644
--- a/net/http/http_network_transaction_unittest.cc
+++ b/net/http/http_network_transaction_unittest.cc
@@ -265,7 +265,7 @@
// ProxyResolverFactory override.
int CreateProxyResolver(const scoped_refptr<PacFileData>& script_data,
std::unique_ptr<ProxyResolver>* result,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request) override {
return ERR_PAC_SCRIPT_FAILED;
}
@@ -4514,7 +4514,7 @@
// ProxyResolver implementation.
int GetProxyForURL(const GURL& url,
ProxyInfo* results,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request,
const NetLogWithSource& /*net_log*/) override {
*results = ProxyInfo();
@@ -4552,7 +4552,7 @@
int CreateProxyResolver(const scoped_refptr<PacFileData>& pac_script,
std::unique_ptr<ProxyResolver>* resolver,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request) override {
*resolver = std::make_unique<SameProxyWithDifferentSchemesProxyResolver>();
return OK;
@@ -12128,7 +12128,7 @@
int GetProxyForURL(const GURL& url,
ProxyInfo* results,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request,
const NetLogWithSource& net_log) override {
ProxyServer proxy_server(ProxyServer::SCHEME_HTTP,
@@ -12153,7 +12153,7 @@
int CreateProxyResolver(const scoped_refptr<PacFileData>& pac_script,
std::unique_ptr<ProxyResolver>* resolver,
- const net::CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request) override {
*resolver = std::make_unique<ForwardingProxyResolver>(resolver_);
return OK;
diff --git a/net/http/http_stream_factory_job_controller_unittest.cc b/net/http/http_stream_factory_job_controller_unittest.cc
index b499032..d19d41c 100644
--- a/net/http/http_stream_factory_job_controller_unittest.cc
+++ b/net/http/http_stream_factory_job_controller_unittest.cc
@@ -19,6 +19,7 @@
#include "base/test/scoped_task_environment.h"
#include "base/test/test_mock_time_task_runner.h"
#include "base/threading/platform_thread.h"
+#include "net/base/completion_once_callback.h"
#include "net/base/test_proxy_delegate.h"
#include "net/dns/mock_host_resolver.h"
#include "net/http/http_basic_stream.h"
@@ -87,7 +88,7 @@
// ProxyResolverFactory override.
int CreateProxyResolver(const scoped_refptr<PacFileData>& script_data,
std::unique_ptr<ProxyResolver>* result,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request) override {
return ERR_PAC_SCRIPT_FAILED;
}
diff --git a/net/proxy_resolution/dhcp_pac_file_adapter_fetcher_win.cc b/net/proxy_resolution/dhcp_pac_file_adapter_fetcher_win.cc
index d6515969..b035f26 100644
--- a/net/proxy_resolution/dhcp_pac_file_adapter_fetcher_win.cc
+++ b/net/proxy_resolution/dhcp_pac_file_adapter_fetcher_win.cc
@@ -49,14 +49,14 @@
void DhcpPacFileAdapterFetcher::Fetch(
const std::string& adapter_name,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
const NetworkTrafficAnnotationTag traffic_annotation) {
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
DCHECK_EQ(state_, STATE_START);
result_ = ERR_IO_PENDING;
pac_script_ = base::string16();
state_ = STATE_WAIT_DHCP;
- callback_ = callback;
+ callback_ = std::move(callback);
wait_timer_.Start(FROM_HERE, ImplGetTimeout(), this,
&DhcpPacFileAdapterFetcher::OnTimeout);
@@ -182,12 +182,10 @@
void DhcpPacFileAdapterFetcher::TransitionToFinish() {
DCHECK(state_ == STATE_WAIT_DHCP || state_ == STATE_WAIT_URL);
state_ = STATE_FINISH;
- CompletionCallback callback = callback_;
- callback_.Reset();
// Be careful not to touch any member state after this, as the client
// may delete us during this callback.
- callback.Run(result_);
+ std::move(callback_).Run(result_);
}
DhcpPacFileAdapterFetcher::State DhcpPacFileAdapterFetcher::state() const {
diff --git a/net/proxy_resolution/dhcp_pac_file_adapter_fetcher_win.h b/net/proxy_resolution/dhcp_pac_file_adapter_fetcher_win.h
index 4d84aef..512f532 100644
--- a/net/proxy_resolution/dhcp_pac_file_adapter_fetcher_win.h
+++ b/net/proxy_resolution/dhcp_pac_file_adapter_fetcher_win.h
@@ -16,7 +16,7 @@
#include "base/strings/string16.h"
#include "base/threading/thread_checker.h"
#include "base/timer/timer.h"
-#include "net/base/completion_callback.h"
+#include "net/base/completion_once_callback.h"
#include "net/base/net_export.h"
#include "net/traffic_annotation/network_traffic_annotation.h"
#include "url/gurl.h"
@@ -50,7 +50,7 @@
// You may only call Fetch() once on a given instance of
// DhcpPacFileAdapterFetcher.
virtual void Fetch(const std::string& adapter_name,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
const NetworkTrafficAnnotationTag traffic_annotation);
// Cancels the fetch on this adapter.
@@ -177,7 +177,7 @@
// Callback to let our client know we're done. Invalid in states
// START, FINISH and CANCEL.
- CompletionCallback callback_;
+ CompletionOnceCallback callback_;
// Fetcher to retrieve PAC files once URL is known.
std::unique_ptr<PacFileFetcher> script_fetcher_;
diff --git a/net/proxy_resolution/dhcp_pac_file_fetcher.cc b/net/proxy_resolution/dhcp_pac_file_fetcher.cc
index 0814f961..0e2ccf3 100644
--- a/net/proxy_resolution/dhcp_pac_file_fetcher.cc
+++ b/net/proxy_resolution/dhcp_pac_file_fetcher.cc
@@ -22,7 +22,7 @@
int DoNothingDhcpPacFileFetcher::Fetch(
base::string16* utf16_text,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
const NetLogWithSource& net_log,
const NetworkTrafficAnnotationTag traffic_annotation) {
return ERR_NOT_IMPLEMENTED;
diff --git a/net/proxy_resolution/dhcp_pac_file_fetcher.h b/net/proxy_resolution/dhcp_pac_file_fetcher.h
index f5f9330..ee49706 100644
--- a/net/proxy_resolution/dhcp_pac_file_fetcher.h
+++ b/net/proxy_resolution/dhcp_pac_file_fetcher.h
@@ -8,7 +8,7 @@
#include "base/compiler_specific.h"
#include "base/macros.h"
#include "base/strings/string16.h"
-#include "net/base/completion_callback.h"
+#include "net/base/completion_once_callback.h"
#include "net/base/net_export.h"
#include "net/proxy_resolution/pac_file_fetcher.h"
#include "net/traffic_annotation/network_traffic_annotation.h"
@@ -60,7 +60,7 @@
//
// Only one fetch is allowed to be outstanding at a time.
virtual int Fetch(base::string16* utf16_text,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
const NetLogWithSource& net_log,
const NetworkTrafficAnnotationTag traffic_annotation) = 0;
@@ -96,7 +96,7 @@
~DoNothingDhcpPacFileFetcher() override;
int Fetch(base::string16* utf16_text,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
const NetLogWithSource& net_log,
const NetworkTrafficAnnotationTag traffic_annotation) override;
void Cancel() override;
diff --git a/net/proxy_resolution/dhcp_pac_file_fetcher_factory.h b/net/proxy_resolution/dhcp_pac_file_fetcher_factory.h
index cf520a9..832cea8 100644
--- a/net/proxy_resolution/dhcp_pac_file_fetcher_factory.h
+++ b/net/proxy_resolution/dhcp_pac_file_fetcher_factory.h
@@ -9,7 +9,6 @@
#include "base/macros.h"
#include "base/memory/singleton.h"
-#include "net/base/completion_callback.h"
#include "net/base/net_export.h"
#include "net/proxy_resolution/dhcp_pac_file_fetcher.h"
diff --git a/net/proxy_resolution/dhcp_pac_file_fetcher_win.cc b/net/proxy_resolution/dhcp_pac_file_fetcher_win.cc
index d8440ca..82b3e2a 100644
--- a/net/proxy_resolution/dhcp_pac_file_fetcher_win.cc
+++ b/net/proxy_resolution/dhcp_pac_file_fetcher_win.cc
@@ -289,7 +289,7 @@
int DhcpPacFileFetcherWin::Fetch(
base::string16* utf16_text,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
const NetLogWithSource& net_log,
const NetworkTrafficAnnotationTag traffic_annotation) {
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
@@ -304,7 +304,7 @@
return ERR_CONTEXT_SHUT_DOWN;
state_ = STATE_WAIT_ADAPTERS;
- callback_ = callback;
+ callback_ = std::move(callback);
destination_string_ = utf16_text;
net_log.BeginEvent(NetLogEventType::WPAD_DHCP_WIN_FETCH);
@@ -336,7 +336,7 @@
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
// Back up callback, if there is one, as CancelImpl() will destroy it.
- net::CompletionCallback callback = std::move(callback_);
+ net::CompletionOnceCallback callback = std::move(callback_);
// Cancel current request, if there is one.
CancelImpl();
@@ -346,7 +346,7 @@
// Invoke callback with error, if present.
if (callback)
- callback.Run(ERR_CONTEXT_SHUT_DOWN);
+ std::move(callback).Run(ERR_CONTEXT_SHUT_DOWN);
}
void DhcpPacFileFetcherWin::CancelImpl() {
@@ -509,18 +509,17 @@
}
}
- CompletionCallback callback = callback_;
+ CompletionOnceCallback callback = std::move(callback_);
CancelImpl();
DCHECK_EQ(state_, STATE_DONE);
DCHECK(fetchers_.empty());
- DCHECK(callback_.is_null()); // Invariant of data.
net_log_.EndEvent(
NetLogEventType::WPAD_DHCP_WIN_FETCH,
base::Bind(&NetLogFetcherDoneCallback, used_fetcher_index, result));
// We may be deleted re-entrantly within this outcall.
- callback.Run(result);
+ std::move(callback).Run(result);
}
int DhcpPacFileFetcherWin::num_pending_fetchers() const {
diff --git a/net/proxy_resolution/dhcp_pac_file_fetcher_win.h b/net/proxy_resolution/dhcp_pac_file_fetcher_win.h
index 078b2dd..f72fc6f 100644
--- a/net/proxy_resolution/dhcp_pac_file_fetcher_win.h
+++ b/net/proxy_resolution/dhcp_pac_file_fetcher_win.h
@@ -15,6 +15,7 @@
#include "base/threading/thread_checker.h"
#include "base/time/time.h"
#include "base/timer/timer.h"
+#include "net/base/completion_once_callback.h"
#include "net/base/net_export.h"
#include "net/log/net_log_with_source.h"
#include "net/proxy_resolution/dhcp_pac_file_fetcher.h"
@@ -43,7 +44,7 @@
// DhcpPacFileFetcher implementation.
int Fetch(base::string16* utf16_text,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
const NetLogWithSource& net_log,
const NetworkTrafficAnnotationTag traffic_annotation) override;
void Cancel() override;
@@ -167,7 +168,7 @@
int num_pending_fetchers_;
// Lets our client know we're done. Not valid in states START or DONE.
- CompletionCallback callback_;
+ CompletionOnceCallback callback_;
// The NetLog to use for the current Fetch().
NetLogWithSource net_log_;
diff --git a/net/proxy_resolution/dhcp_pac_file_fetcher_win_unittest.cc b/net/proxy_resolution/dhcp_pac_file_fetcher_win_unittest.cc
index cad7689..f8e3278 100644
--- a/net/proxy_resolution/dhcp_pac_file_fetcher_win_unittest.cc
+++ b/net/proxy_resolution/dhcp_pac_file_fetcher_win_unittest.cc
@@ -14,7 +14,6 @@
#include "base/test/test_timeouts.h"
#include "base/threading/platform_thread.h"
#include "base/timer/elapsed_timer.h"
-#include "net/base/completion_callback.h"
#include "net/proxy_resolution/dhcp_pac_file_adapter_fetcher_win.h"
#include "net/test/gtest_util.h"
#include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
@@ -221,9 +220,9 @@
fetch_delay_ms_(1) {}
void Fetch(const std::string& adapter_name,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
const NetworkTrafficAnnotationTag traffic_annotation) override {
- callback_ = callback;
+ callback_ = std::move(callback);
timer_.Start(FROM_HERE, base::TimeDelta::FromMilliseconds(fetch_delay_ms_),
this, &DummyDhcpPacFileAdapterFetcher::OnTimer);
}
@@ -244,9 +243,7 @@
return pac_script_;
}
- void OnTimer() {
- callback_.Run(result_);
- }
+ void OnTimer() { std::move(callback_).Run(result_); }
void Configure(bool did_finish,
int result,
@@ -263,7 +260,7 @@
int result_;
base::string16 pac_script_;
int fetch_delay_ms_;
- CompletionCallback callback_;
+ CompletionOnceCallback callback_;
base::OneShotTimer timer_;
};
diff --git a/net/proxy_resolution/mock_pac_file_fetcher.cc b/net/proxy_resolution/mock_pac_file_fetcher.cc
index a4d10a4..d939a246 100644
--- a/net/proxy_resolution/mock_pac_file_fetcher.cc
+++ b/net/proxy_resolution/mock_pac_file_fetcher.cc
@@ -24,7 +24,7 @@
int MockPacFileFetcher::Fetch(
const GURL& url,
base::string16* text,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
const NetworkTrafficAnnotationTag traffic_annotation) {
DCHECK(!has_pending_request());
@@ -36,7 +36,7 @@
// Save the caller's information, and have them wait.
pending_request_url_ = url;
- pending_request_callback_ = callback;
+ pending_request_callback_ = std::move(callback);
pending_request_text_ = text;
return ERR_IO_PENDING;
diff --git a/net/proxy_resolution/mock_pac_file_fetcher.h b/net/proxy_resolution/mock_pac_file_fetcher.h
index d59e3d1c..e1f1051 100644
--- a/net/proxy_resolution/mock_pac_file_fetcher.h
+++ b/net/proxy_resolution/mock_pac_file_fetcher.h
@@ -6,6 +6,7 @@
#define NET_PROXY_MOCK_PAC_FILE_FETCHER_H_
#include "base/compiler_specific.h"
+#include "net/base/completion_once_callback.h"
#include "net/proxy_resolution/pac_file_fetcher.h"
#include "net/traffic_annotation/network_traffic_annotation.h"
#include "url/gurl.h"
@@ -26,7 +27,7 @@
// PacFileFetcher implementation.
int Fetch(const GURL& url,
base::string16* text,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
const NetworkTrafficAnnotationTag traffic_annotation) override;
void Cancel() override;
void OnShutdown() override;
@@ -41,7 +42,7 @@
private:
GURL pending_request_url_;
- CompletionCallback pending_request_callback_;
+ CompletionOnceCallback pending_request_callback_;
base::string16* pending_request_text_;
bool waiting_for_fetch_;
bool is_shutdown_;
diff --git a/net/proxy_resolution/mock_proxy_resolver.cc b/net/proxy_resolution/mock_proxy_resolver.cc
index b7076ead..2067d7e5 100644
--- a/net/proxy_resolution/mock_proxy_resolver.cc
+++ b/net/proxy_resolution/mock_proxy_resolver.cc
@@ -28,17 +28,20 @@
MockAsyncProxyResolver::Job::Job(MockAsyncProxyResolver* resolver,
const GURL& url,
ProxyInfo* results,
- const CompletionCallback& callback)
- : resolver_(resolver), url_(url), results_(results), callback_(callback) {}
+ CompletionOnceCallback callback)
+ : resolver_(resolver),
+ url_(url),
+ results_(results),
+ callback_(std::move(callback)) {}
MockAsyncProxyResolver::Job::~Job() = default;
void MockAsyncProxyResolver::Job::CompleteNow(int rv) {
- CompletionCallback callback = callback_;
+ CompletionOnceCallback callback = std::move(callback_);
resolver_->RemovePendingJob(this);
- callback.Run(rv);
+ std::move(callback).Run(rv);
}
MockAsyncProxyResolver::~MockAsyncProxyResolver() = default;
@@ -46,10 +49,10 @@
int MockAsyncProxyResolver::GetProxyForURL(
const GURL& url,
ProxyInfo* results,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request,
const NetLogWithSource& /*net_log*/) {
- std::unique_ptr<Job> job(new Job(this, url, results, callback));
+ std::unique_ptr<Job> job(new Job(this, url, results, std::move(callback)));
pending_jobs_.push_back(job.get());
request->reset(new RequestImpl(std::move(job)));
@@ -83,11 +86,11 @@
MockAsyncProxyResolverFactory* factory,
const scoped_refptr<PacFileData>& script_data,
std::unique_ptr<ProxyResolver>* resolver,
- const CompletionCallback& callback)
+ CompletionOnceCallback callback)
: factory_(factory),
script_data_(script_data),
resolver_(resolver),
- callback_(callback) {}
+ callback_(std::move(callback)) {}
MockAsyncProxyResolverFactory::Request::~Request() = default;
@@ -100,7 +103,7 @@
scoped_refptr<MockAsyncProxyResolverFactory::Request> keep_alive(this);
factory_->RemovePendingRequest(this);
factory_ = nullptr;
- callback_.Run(rv);
+ std::move(callback_).Run(rv);
}
void MockAsyncProxyResolverFactory::Request::CompleteNowWithForwarder(
@@ -139,10 +142,10 @@
int MockAsyncProxyResolverFactory::CreateProxyResolver(
const scoped_refptr<PacFileData>& pac_script,
std::unique_ptr<ProxyResolver>* resolver,
- const net::CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<ProxyResolverFactory::Request>* request_handle) {
scoped_refptr<Request> request =
- new Request(this, pac_script, resolver, callback);
+ new Request(this, pac_script, resolver, std::move(callback));
pending_requests_.push_back(request);
request_handle->reset(new Job(request));
@@ -170,10 +173,11 @@
int ForwardingProxyResolver::GetProxyForURL(const GURL& query_url,
ProxyInfo* results,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request,
const NetLogWithSource& net_log) {
- return impl_->GetProxyForURL(query_url, results, callback, request, net_log);
+ return impl_->GetProxyForURL(query_url, results, std::move(callback), request,
+ net_log);
}
} // namespace net
diff --git a/net/proxy_resolution/mock_proxy_resolver.h b/net/proxy_resolution/mock_proxy_resolver.h
index 9270a5f..7a4cc6b 100644
--- a/net/proxy_resolution/mock_proxy_resolver.h
+++ b/net/proxy_resolution/mock_proxy_resolver.h
@@ -9,6 +9,7 @@
#include <vector>
#include "base/macros.h"
+#include "net/base/completion_once_callback.h"
#include "net/base/net_errors.h"
#include "net/proxy_resolution/proxy_resolver.h"
#include "net/proxy_resolution/proxy_resolver_factory.h"
@@ -25,11 +26,10 @@
Job(MockAsyncProxyResolver* resolver,
const GURL& url,
ProxyInfo* results,
- const CompletionCallback& callback);
+ CompletionOnceCallback callback);
const GURL& url() const { return url_; }
ProxyInfo* results() const { return results_; }
- const CompletionCallback& callback() const { return callback_; }
MockAsyncProxyResolver* Resolver() const { return resolver_; };
void CompleteNow(int rv);
@@ -40,7 +40,7 @@
MockAsyncProxyResolver* resolver_;
const GURL url_;
ProxyInfo* results_;
- CompletionCallback callback_;
+ CompletionOnceCallback callback_;
};
class RequestImpl : public ProxyResolver::Request {
@@ -61,7 +61,7 @@
// ProxyResolver implementation.
int GetProxyForURL(const GURL& url,
ProxyInfo* results,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request,
const NetLogWithSource& /*net_log*/) override;
const std::vector<Job*>& pending_jobs() const { return pending_jobs_; }
@@ -92,7 +92,7 @@
int CreateProxyResolver(
const scoped_refptr<PacFileData>& pac_script,
std::unique_ptr<ProxyResolver>* resolver,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<ProxyResolverFactory::Request>* request) override;
const RequestsList& pending_requests() const { return pending_requests_; }
@@ -113,7 +113,7 @@
Request(MockAsyncProxyResolverFactory* factory,
const scoped_refptr<PacFileData>& script_data,
std::unique_ptr<ProxyResolver>* resolver,
- const CompletionCallback& callback);
+ CompletionOnceCallback callback);
const scoped_refptr<PacFileData>& script_data() const { return script_data_; }
@@ -137,7 +137,7 @@
MockAsyncProxyResolverFactory* factory_;
const scoped_refptr<PacFileData> script_data_;
std::unique_ptr<ProxyResolver>* resolver_;
- CompletionCallback callback_;
+ CompletionOnceCallback callback_;
};
// ForwardingProxyResolver forwards all requests to |impl|. |impl| must remain
@@ -149,7 +149,7 @@
// ProxyResolver overrides.
int GetProxyForURL(const GURL& query_url,
ProxyInfo* results,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request,
const NetLogWithSource& net_log) override;
diff --git a/net/proxy_resolution/multi_threaded_proxy_resolver.cc b/net/proxy_resolution/multi_threaded_proxy_resolver.cc
index d8c8e83..9431ff9 100644
--- a/net/proxy_resolution/multi_threaded_proxy_resolver.cc
+++ b/net/proxy_resolution/multi_threaded_proxy_resolver.cc
@@ -118,7 +118,7 @@
// ProxyResolver implementation:
int GetProxyForURL(const GURL& url,
ProxyInfo* results,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request,
const NetLogWithSource& net_log) override;
@@ -159,12 +159,11 @@
TYPE_CREATE_RESOLVER,
};
- Job(Type type, const CompletionCallback& callback)
+ Job(Type type, CompletionOnceCallback callback)
: type_(type),
- callback_(callback),
+ callback_(std::move(callback)),
executor_(NULL),
- was_cancelled_(false) {
- }
+ was_cancelled_(false) {}
void set_executor(Executor* executor) {
executor_ = executor;
@@ -218,7 +217,7 @@
void RunUserCallback(int result) {
DCHECK(has_user_callback());
// Reset the callback so has_user_callback() will now return false.
- base::ResetAndReturn(&callback_).Run(result);
+ std::move(callback_).Run(result);
}
friend class base::RefCountedThreadSafe<Job>;
@@ -227,7 +226,7 @@
private:
const Type type_;
- CompletionCallback callback_;
+ CompletionOnceCallback callback_;
Executor* executor_;
bool was_cancelled_;
};
@@ -253,7 +252,7 @@
public:
CreateResolverJob(const scoped_refptr<PacFileData>& script_data,
ProxyResolverFactory* factory)
- : Job(TYPE_CREATE_RESOLVER, CompletionCallback()),
+ : Job(TYPE_CREATE_RESOLVER, CompletionOnceCallback()),
script_data_(script_data),
factory_(factory) {}
@@ -261,7 +260,7 @@
void Run(scoped_refptr<base::SingleThreadTaskRunner> origin_runner) override {
std::unique_ptr<ProxyResolverFactory::Request> request;
int rv = factory_->CreateProxyResolver(script_data_, &resolver_,
- CompletionCallback(), &request);
+ CompletionOnceCallback(), &request);
DCHECK_NE(rv, ERR_IO_PENDING);
origin_runner->PostTask(
@@ -295,15 +294,13 @@
// |results| -- the structure to fill with proxy resolve results.
GetProxyForURLJob(const GURL& url,
ProxyInfo* results,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
const NetLogWithSource& net_log)
- : Job(TYPE_GET_PROXY_FOR_URL, callback),
+ : Job(TYPE_GET_PROXY_FOR_URL, std::move(callback)),
results_(results),
net_log_(net_log),
url_(url),
- was_waiting_for_thread_(false) {
- DCHECK(!callback.is_null());
- }
+ was_waiting_for_thread_(false) {}
NetLogWithSource* net_log() { return &net_log_; }
@@ -328,8 +325,8 @@
void Run(scoped_refptr<base::SingleThreadTaskRunner> origin_runner) override {
ProxyResolver* resolver = executor()->resolver();
DCHECK(resolver);
- int rv = resolver->GetProxyForURL(
- url_, &results_buf_, CompletionCallback(), NULL, net_log_);
+ int rv = resolver->GetProxyForURL(url_, &results_buf_,
+ CompletionOnceCallback(), NULL, net_log_);
DCHECK_NE(rv, ERR_IO_PENDING);
origin_runner->PostTask(
@@ -459,14 +456,14 @@
int MultiThreadedProxyResolver::GetProxyForURL(
const GURL& url,
ProxyInfo* results,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request,
const NetLogWithSource& net_log) {
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
DCHECK(!callback.is_null());
scoped_refptr<GetProxyForURLJob> job(
- new GetProxyForURLJob(url, results, callback, net_log));
+ new GetProxyForURLJob(url, results, std::move(callback), net_log));
// Completion will be notified through |callback|, unless the caller cancels
// the request using |request|.
@@ -539,14 +536,14 @@
std::unique_ptr<ProxyResolver>* resolver,
std::unique_ptr<ProxyResolverFactory> resolver_factory,
size_t max_num_threads,
- const CompletionCallback& callback)
+ CompletionOnceCallback callback)
: factory_(factory),
resolver_out_(resolver),
resolver_factory_(std::move(resolver_factory)),
max_num_threads_(max_num_threads),
script_data_(script_data),
executor_(new Executor(this, 0)),
- callback_(callback) {
+ callback_(std::move(callback)) {
executor_->StartJob(
new CreateResolverJob(script_data_, resolver_factory_.get()));
}
@@ -577,7 +574,7 @@
}
factory_->RemoveJob(this);
factory_ = nullptr;
- callback_.Run(error);
+ std::move(callback_).Run(error);
}
MultiThreadedProxyResolverFactory* factory_;
@@ -586,7 +583,7 @@
const size_t max_num_threads_;
scoped_refptr<PacFileData> script_data_;
scoped_refptr<Executor> executor_;
- const CompletionCallback callback_;
+ CompletionOnceCallback callback_;
};
MultiThreadedProxyResolverFactory::MultiThreadedProxyResolverFactory(
@@ -606,11 +603,11 @@
int MultiThreadedProxyResolverFactory::CreateProxyResolver(
const scoped_refptr<PacFileData>& pac_script,
std::unique_ptr<ProxyResolver>* resolver,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request) {
std::unique_ptr<Job> job(new Job(this, pac_script, resolver,
CreateProxyResolverFactory(),
- max_num_threads_, callback));
+ max_num_threads_, std::move(callback)));
jobs_.insert(job.get());
*request = std::move(job);
return ERR_IO_PENDING;
diff --git a/net/proxy_resolution/multi_threaded_proxy_resolver.h b/net/proxy_resolution/multi_threaded_proxy_resolver.h
index 8daa17ef..afaa419 100644
--- a/net/proxy_resolution/multi_threaded_proxy_resolver.h
+++ b/net/proxy_resolution/multi_threaded_proxy_resolver.h
@@ -11,6 +11,7 @@
#include <set>
#include "base/memory/ref_counted.h"
+#include "net/base/completion_once_callback.h"
#include "net/base/net_export.h"
#include "net/proxy_resolution/proxy_resolver_factory.h"
@@ -57,7 +58,7 @@
int CreateProxyResolver(const scoped_refptr<PacFileData>& pac_script,
std::unique_ptr<ProxyResolver>* resolver,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request) override;
private:
diff --git a/net/proxy_resolution/multi_threaded_proxy_resolver_unittest.cc b/net/proxy_resolution/multi_threaded_proxy_resolver_unittest.cc
index d057283e..fc0ed9b 100644
--- a/net/proxy_resolution/multi_threaded_proxy_resolver_unittest.cc
+++ b/net/proxy_resolution/multi_threaded_proxy_resolver_unittest.cc
@@ -51,7 +51,7 @@
// ProxyResolver implementation.
int GetProxyForURL(const GURL& query_url,
ProxyInfo* results,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request,
const NetLogWithSource& net_log) override {
if (!resolve_latency_.is_zero())
@@ -128,7 +128,7 @@
int GetProxyForURL(const GURL& query_url,
ProxyInfo* results,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request,
const NetLogWithSource& net_log) override {
{
@@ -146,7 +146,7 @@
}
return MockProxyResolver::GetProxyForURL(
- query_url, results, callback, request, net_log);
+ query_url, results, std::move(callback), request, net_log);
}
private:
@@ -166,7 +166,7 @@
int CreateProxyResolver(const scoped_refptr<PacFileData>& script_data,
std::unique_ptr<ProxyResolver>* result,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request) override {
BlockableProxyResolver* resolver = new BlockableProxyResolver;
result->reset(resolver);
@@ -703,7 +703,7 @@
// ProxyResolverFactory override.
int CreateProxyResolver(const scoped_refptr<PacFileData>& script_data,
std::unique_ptr<ProxyResolver>* result,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request) override {
return ERR_PAC_SCRIPT_FAILED;
}
@@ -751,10 +751,10 @@
base::RunLoop().RunUntilIdle();
}
-void DeleteRequest(const CompletionCallback& callback,
+void DeleteRequest(CompletionOnceCallback callback,
std::unique_ptr<ProxyResolverFactory::Request>* request,
int result) {
- callback.Run(result);
+ std::move(callback).Run(result);
request->reset();
}
@@ -769,8 +769,8 @@
EXPECT_EQ(ERR_IO_PENDING,
resolver_factory.CreateProxyResolver(
PacFileData::FromUTF8("pac script bytes"), &resolver,
- base::Bind(&DeleteRequest, callback.callback(),
- base::Unretained(&request)),
+ base::BindOnce(&DeleteRequest, callback.callback(),
+ base::Unretained(&request)),
&request));
EXPECT_TRUE(request);
EXPECT_THAT(callback.WaitForResult(), IsOk());
diff --git a/net/proxy_resolution/network_delegate_error_observer_unittest.cc b/net/proxy_resolution/network_delegate_error_observer_unittest.cc
index 86c730a..3bfe9ec 100644
--- a/net/proxy_resolution/network_delegate_error_observer_unittest.cc
+++ b/net/proxy_resolution/network_delegate_error_observer_unittest.cc
@@ -12,6 +12,7 @@
#include "base/test/scoped_task_environment.h"
#include "base/threading/thread.h"
#include "base/threading/thread_task_runner_handle.h"
+#include "net/base/completion_callback.h"
#include "net/base/net_errors.h"
#include "net/base/network_delegate_impl.h"
#include "testing/gtest/include/gtest/gtest.h"
diff --git a/net/proxy_resolution/pac_file_decider.cc b/net/proxy_resolution/pac_file_decider.cc
index db7efcfd..9eb3640 100644
--- a/net/proxy_resolution/pac_file_decider.cc
+++ b/net/proxy_resolution/pac_file_decider.cc
@@ -15,6 +15,7 @@
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
+#include "net/base/completion_repeating_callback.h"
#include "net/base/net_errors.h"
#include "net/log/net_log_capture_mode.h"
#include "net/log/net_log_event_type.h"
@@ -101,7 +102,7 @@
int PacFileDecider::Start(const ProxyConfigWithAnnotation& config,
const base::TimeDelta wait_delay,
bool fetch_pac_bytes,
- const CompletionCallback& callback) {
+ CompletionOnceCallback callback) {
DCHECK_EQ(STATE_NONE, next_state_);
DCHECK(!callback.is_null());
DCHECK(config.value().HasAutomaticSettings());
@@ -127,7 +128,7 @@
int rv = DoLoop(OK);
if (rv == ERR_IO_PENDING)
- callback_ = callback;
+ callback_ = std::move(callback);
else
DidComplete();
@@ -139,13 +140,13 @@
if (next_state_ == STATE_NONE)
return;
- CompletionCallback callback = std::move(callback_);
+ CompletionOnceCallback callback = std::move(callback_);
// Just cancel any pending work.
Cancel();
if (callback)
- callback.Run(ERR_CONTEXT_SHUT_DOWN);
+ std::move(callback).Run(ERR_CONTEXT_SHUT_DOWN);
}
const ProxyConfigWithAnnotation& PacFileDecider::effective_config() const {
@@ -179,7 +180,7 @@
int rv = DoLoop(result);
if (rv != ERR_IO_PENDING) {
DidComplete();
- DoCallback(rv);
+ std::move(callback_).Run(rv);
}
}
@@ -227,12 +228,6 @@
return rv;
}
-void PacFileDecider::DoCallback(int result) {
- DCHECK_NE(ERR_IO_PENDING, result);
- DCHECK(!callback_.is_null());
- callback_.Run(result);
-}
-
int PacFileDecider::DoWait() {
next_state_ = STATE_WAIT_COMPLETE;
@@ -273,13 +268,13 @@
std::string host = current_pac_source().url.host();
HostResolver::RequestInfo reqinfo(HostPortPair(host, 80));
reqinfo.set_host_resolver_flags(HOST_RESOLVER_SYSTEM_ONLY);
- CompletionCallback callback =
- base::Bind(&PacFileDecider::OnIOCompletion, base::Unretained(this));
+ CompletionRepeatingCallback callback = base::BindRepeating(
+ &PacFileDecider::OnIOCompletion, base::Unretained(this));
next_state_ = STATE_QUICK_CHECK_COMPLETE;
quick_check_timer_.Start(
FROM_HERE, base::TimeDelta::FromMilliseconds(kQuickCheckDelayMs),
- base::Bind(callback, ERR_NAME_NOT_RESOLVED));
+ base::BindRepeating(callback, ERR_NAME_NOT_RESOLVED));
HostResolver* host_resolver =
pac_file_fetcher_->GetRequestContext()->host_resolver();
diff --git a/net/proxy_resolution/pac_file_decider.h b/net/proxy_resolution/pac_file_decider.h
index 90d5ed9..aaa0c252 100644
--- a/net/proxy_resolution/pac_file_decider.h
+++ b/net/proxy_resolution/pac_file_decider.h
@@ -16,7 +16,7 @@
#include "base/time/time.h"
#include "base/timer/timer.h"
#include "net/base/address_list.h"
-#include "net/base/completion_callback.h"
+#include "net/base/completion_once_callback.h"
#include "net/base/net_export.h"
#include "net/dns/host_resolver.h"
#include "net/log/net_log_with_source.h"
@@ -79,7 +79,7 @@
int Start(const ProxyConfigWithAnnotation& config,
const base::TimeDelta wait_delay,
bool fetch_pac_bytes,
- const CompletionCallback& callback);
+ CompletionOnceCallback callback);
// Shuts down any in-progress DNS requests, and cancels any ScriptFetcher
// requests. Does not call OnShutdown on the [Dhcp]PacFileFetcher.
@@ -131,7 +131,6 @@
void OnIOCompletion(int result);
int DoLoop(int result);
- void DoCallback(int result);
int DoWait();
int DoWaitComplete(int result);
@@ -167,7 +166,7 @@
PacFileFetcher* pac_file_fetcher_;
DhcpPacFileFetcher* dhcp_pac_file_fetcher_;
- CompletionCallback callback_;
+ CompletionOnceCallback callback_;
size_t current_pac_source_index_;
diff --git a/net/proxy_resolution/pac_file_decider_unittest.cc b/net/proxy_resolution/pac_file_decider_unittest.cc
index e9d7e3c..917617f 100644
--- a/net/proxy_resolution/pac_file_decider_unittest.cc
+++ b/net/proxy_resolution/pac_file_decider_unittest.cc
@@ -119,7 +119,7 @@
// PacFileFetcher implementation.
int Fetch(const GURL& url,
base::string16* text,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
const NetworkTrafficAnnotationTag traffic_annotation) override {
const Rules::Rule& rule = rules_->GetRuleByUrl(url);
int rv = rule.fetch_error;
@@ -149,7 +149,7 @@
~MockDhcpPacFileFetcher() override;
int Fetch(base::string16* utf16_text,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
const NetLogWithSource& net_log,
const NetworkTrafficAnnotationTag traffic_annotation) override;
void Cancel() override;
@@ -161,7 +161,7 @@
virtual void CompleteRequests(int result, const base::string16& script);
private:
- CompletionCallback callback_;
+ CompletionOnceCallback callback_;
base::string16* utf16_text_;
GURL gurl_;
DISALLOW_COPY_AND_ASSIGN(MockDhcpPacFileFetcher);
@@ -173,11 +173,11 @@
int MockDhcpPacFileFetcher::Fetch(
base::string16* utf16_text,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
const NetLogWithSource& net_log,
const NetworkTrafficAnnotationTag traffic_annotation) {
utf16_text_ = utf16_text;
- callback_ = callback;
+ callback_ = std::move(callback);
return ERR_IO_PENDING;
}
@@ -196,7 +196,7 @@
void MockDhcpPacFileFetcher::CompleteRequests(int result,
const base::string16& script) {
*utf16_text_ = script;
- callback_.Run(result);
+ std::move(callback_).Run(result);
}
// Succeed using custom PAC script.
@@ -701,7 +701,7 @@
: gurl_("http://dhcppac/"), expected_text_(expected_text) {}
int Fetch(base::string16* utf16_text,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
const NetLogWithSource& net_log,
const NetworkTrafficAnnotationTag traffic_annotation) override {
*utf16_text = expected_text_;
@@ -785,10 +785,10 @@
~AsyncFailDhcpFetcher() override = default;
int Fetch(base::string16* utf16_text,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
const NetLogWithSource& net_log,
const NetworkTrafficAnnotationTag traffic_annotation) override {
- callback_ = callback;
+ callback_ = std::move(callback);
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE,
base::Bind(&AsyncFailDhcpFetcher::CallbackWithFailure, AsWeakPtr()));
@@ -803,12 +803,12 @@
void CallbackWithFailure() {
if (!callback_.is_null())
- callback_.Run(ERR_PAC_NOT_IN_DHCP);
+ std::move(callback_).Run(ERR_PAC_NOT_IN_DHCP);
}
private:
GURL dummy_gurl_;
- CompletionCallback callback_;
+ CompletionOnceCallback callback_;
};
TEST(PacFileDeciderTest, DhcpCancelledByDestructor) {
diff --git a/net/proxy_resolution/pac_file_fetcher.h b/net/proxy_resolution/pac_file_fetcher.h
index 8555563..bd0ca211 100644
--- a/net/proxy_resolution/pac_file_fetcher.h
+++ b/net/proxy_resolution/pac_file_fetcher.h
@@ -10,7 +10,7 @@
#define NET_PROXY_PAC_FILE_FETCHER_H_
#include "base/strings/string16.h"
-#include "net/base/completion_callback.h"
+#include "net/base/completion_once_callback.h"
#include "net/base/net_export.h"
#include "net/traffic_annotation/network_traffic_annotation.h"
@@ -47,7 +47,7 @@
// Only one fetch is allowed to be outstanding at a time.
virtual int Fetch(const GURL& url,
base::string16* utf16_text,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
const NetworkTrafficAnnotationTag traffic_annotation) = 0;
// Aborts the in-progress fetch (if any).
diff --git a/net/proxy_resolution/pac_file_fetcher_impl.cc b/net/proxy_resolution/pac_file_fetcher_impl.cc
index 688f32f..0201c27 100644
--- a/net/proxy_resolution/pac_file_fetcher_impl.cc
+++ b/net/proxy_resolution/pac_file_fetcher_impl.cc
@@ -126,7 +126,7 @@
int PacFileFetcherImpl::Fetch(
const GURL& url,
base::string16* text,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
const NetworkTrafficAnnotationTag traffic_annotation) {
// It is invalid to call Fetch() while a request is already in progress.
DCHECK(!cur_request_.get());
@@ -175,7 +175,7 @@
LOAD_IGNORE_LIMITS);
// Save the caller's info for notification on completion.
- callback_ = callback;
+ callback_ = std::move(callback);
result_text_ = text;
bytes_read_so_far_.clear();
@@ -392,11 +392,11 @@
}
int result_code = result_code_;
- CompletionCallback callback = callback_;
+ CompletionOnceCallback callback = std::move(callback_);
ResetCurRequestState();
- callback.Run(result_code);
+ std::move(callback).Run(result_code);
}
void PacFileFetcherImpl::ResetCurRequestState() {
diff --git a/net/proxy_resolution/pac_file_fetcher_impl.h b/net/proxy_resolution/pac_file_fetcher_impl.h
index 92d95993..448b009 100644
--- a/net/proxy_resolution/pac_file_fetcher_impl.h
+++ b/net/proxy_resolution/pac_file_fetcher_impl.h
@@ -16,6 +16,7 @@
#include "base/memory/weak_ptr.h"
#include "base/strings/string16.h"
#include "base/time/time.h"
+#include "net/base/completion_once_callback.h"
#include "net/base/net_export.h"
#include "net/proxy_resolution/pac_file_fetcher.h"
#include "net/traffic_annotation/network_traffic_annotation.h"
@@ -67,7 +68,7 @@
// PacFileFetcher methods:
int Fetch(const GURL& url,
base::string16* text,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
const NetworkTrafficAnnotationTag traffic_annotation) override;
void Cancel() override;
URLRequestContext* GetRequestContext() const override;
@@ -131,7 +132,7 @@
int cur_request_id_;
// Callback to invoke on completion of the fetch.
- CompletionCallback callback_;
+ CompletionOnceCallback callback_;
// Holds the error condition that was hit on the current request, or OK.
int result_code_;
diff --git a/net/proxy_resolution/pac_file_fetcher_impl_unittest.cc b/net/proxy_resolution/pac_file_fetcher_impl_unittest.cc
index 600a9321..2b0b05a 100644
--- a/net/proxy_resolution/pac_file_fetcher_impl_unittest.cc
+++ b/net/proxy_resolution/pac_file_fetcher_impl_unittest.cc
@@ -19,6 +19,7 @@
#include "base/strings/utf_string_conversions.h"
#include "base/test/scoped_task_environment.h"
#include "base/threading/thread_task_runner_handle.h"
+#include "net/base/completion_callback.h"
#include "net/base/filename_util.h"
#include "net/base/load_flags.h"
#include "net/base/network_delegate_impl.h"
diff --git a/net/proxy_resolution/proxy_resolution_service.cc b/net/proxy_resolution/proxy_resolution_service.cc
index 10a2d92..ea417271 100644
--- a/net/proxy_resolution/proxy_resolution_service.cc
+++ b/net/proxy_resolution/proxy_resolution_service.cc
@@ -21,7 +21,6 @@
#include "base/threading/thread_task_runner_handle.h"
#include "base/time/time.h"
#include "base/values.h"
-#include "net/base/completion_callback.h"
#include "net/base/net_errors.h"
#include "net/base/proxy_delegate.h"
#include "net/base/url_util.h"
@@ -218,7 +217,7 @@
// ProxyResolver implementation.
int GetProxyForURL(const GURL& url,
ProxyInfo* results,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request,
const NetLogWithSource& net_log) override {
return ERR_NOT_IMPLEMENTED;
@@ -235,7 +234,7 @@
int GetProxyForURL(const GURL& url,
ProxyInfo* results,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request,
const NetLogWithSource& net_log) override {
results->UsePacString(pac_string_);
@@ -283,7 +282,7 @@
// ProxyResolverFactory overrides.
int CreateProxyResolver(const scoped_refptr<PacFileData>& pac_script,
std::unique_ptr<ProxyResolver>* resolver,
- const net::CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request) override {
resolver->reset(new ProxyResolverNull());
return OK;
@@ -301,7 +300,7 @@
// ProxyResolverFactory override.
int CreateProxyResolver(const scoped_refptr<PacFileData>& pac_script,
std::unique_ptr<ProxyResolver>* resolver,
- const net::CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request) override {
resolver->reset(new ProxyResolverFromPacString(pac_string_));
return OK;
@@ -451,7 +450,7 @@
NetLog* net_log,
const ProxyConfigWithAnnotation& config,
TimeDelta wait_delay,
- const CompletionCallback& callback) {
+ CompletionOnceCallback callback) {
DCHECK_EQ(STATE_NONE, next_state_);
proxy_resolver_ = proxy_resolver;
proxy_resolver_factory_ = proxy_resolver_factory;
@@ -461,7 +460,7 @@
decider_->set_quick_check_enabled(quick_check_enabled_);
config_ = config;
wait_delay_ = wait_delay;
- callback_ = callback;
+ callback_ = std::move(callback);
next_state_ = STATE_DECIDE_PAC_FILE;
return DoLoop(OK);
@@ -477,14 +476,14 @@
const ProxyConfigWithAnnotation& effective_config,
int decider_result,
PacFileData* script_data,
- const CompletionCallback& callback) {
+ CompletionOnceCallback callback) {
DCHECK_EQ(STATE_NONE, next_state_);
proxy_resolver_ = proxy_resolver;
proxy_resolver_factory_ = proxy_resolver_factory;
effective_config_ = effective_config;
script_data_ = script_data;
- callback_ = callback;
+ callback_ = std::move(callback);
if (decider_result != OK)
return decider_result;
@@ -603,12 +602,7 @@
DCHECK_NE(STATE_NONE, next_state_);
int rv = DoLoop(result);
if (rv != ERR_IO_PENDING)
- DoCallback(rv);
- }
-
- void DoCallback(int result) {
- DCHECK_NE(ERR_IO_PENDING, result);
- callback_.Run(result);
+ std::move(callback_).Run(result);
}
ProxyConfigWithAnnotation config_;
@@ -619,7 +613,7 @@
ProxyResolverFactory* proxy_resolver_factory_;
std::unique_ptr<ProxyResolverFactory::Request> create_resolver_request_;
std::unique_ptr<ProxyResolver>* proxy_resolver_;
- CompletionCallback callback_;
+ CompletionOnceCallback callback_;
State next_state_;
bool quick_check_enabled_;
@@ -845,10 +839,10 @@
const std::string& method,
ProxyDelegate* proxy_delegate,
ProxyInfo* results,
- const CompletionCallback& user_callback,
+ CompletionOnceCallback user_callback,
const NetLogWithSource& net_log)
: service_(service),
- user_callback_(user_callback),
+ user_callback_(std::move(user_callback)),
results_(results),
url_(url),
method_(method),
@@ -856,7 +850,7 @@
resolve_job_(nullptr),
net_log_(net_log),
creation_time_(TimeTicks::Now()) {
- DCHECK(!user_callback.is_null());
+ DCHECK(!user_callback_.is_null());
}
// Starts the resolve proxy request.
@@ -968,9 +962,9 @@
// Remove this completed Request from the service's pending list.
/// (which will probably cause deletion of |this|).
if (!user_callback_.is_null()) {
- CompletionCallback callback = user_callback_;
+ CompletionOnceCallback callback = std::move(user_callback_);
service_->RemovePendingRequest(this);
- callback.Run(result_code);
+ std::move(callback).Run(result_code);
}
}
@@ -980,7 +974,7 @@
// Outstanding requests are cancelled during ~ProxyResolutionService, so this
// is guaranteed to be valid throughout our lifetime.
ProxyResolutionService* service_;
- CompletionCallback user_callback_;
+ CompletionOnceCallback user_callback_;
ProxyInfo* results_;
GURL url_;
std::string method_;
@@ -1090,20 +1084,20 @@
int ProxyResolutionService::ResolveProxy(const GURL& raw_url,
const std::string& method,
ProxyInfo* result,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
Request** pac_request,
ProxyDelegate* proxy_delegate,
const NetLogWithSource& net_log) {
DCHECK(!callback.is_null());
- return ResolveProxyHelper(raw_url, method, result, callback, pac_request,
- proxy_delegate, net_log);
+ return ResolveProxyHelper(raw_url, method, result, std::move(callback),
+ pac_request, proxy_delegate, net_log);
}
int ProxyResolutionService::ResolveProxyHelper(
const GURL& raw_url,
const std::string& method,
ProxyInfo* result,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
Request** pac_request,
ProxyDelegate* proxy_delegate,
const NetLogWithSource& net_log) {
@@ -1139,7 +1133,7 @@
return ERR_IO_PENDING;
scoped_refptr<Request> req(new Request(this, url, method, proxy_delegate,
- result, callback, net_log));
+ result, std::move(callback), net_log));
if (current_state_ == STATE_READY) {
// Start the resolve request.
@@ -1168,8 +1162,7 @@
ProxyInfo* result,
ProxyDelegate* proxy_delegate,
const NetLogWithSource& net_log) {
- CompletionCallback null_callback;
- return ResolveProxyHelper(raw_url, method, result, null_callback,
+ return ResolveProxyHelper(raw_url, method, result, CompletionOnceCallback(),
nullptr /* pac_request*/, proxy_delegate,
net_log) == OK;
}
diff --git a/net/proxy_resolution/proxy_resolution_service.h b/net/proxy_resolution/proxy_resolution_service.h
index 61b748a..27485a2 100644
--- a/net/proxy_resolution/proxy_resolution_service.h
+++ b/net/proxy_resolution/proxy_resolution_service.h
@@ -18,7 +18,7 @@
#include "base/optional.h"
#include "base/synchronization/waitable_event.h"
#include "base/threading/thread_checker.h"
-#include "net/base/completion_callback.h"
+#include "net/base/completion_once_callback.h"
#include "net/base/load_states.h"
#include "net/base/net_export.h"
#include "net/base/network_change_notifier.h"
@@ -151,7 +151,7 @@
int ResolveProxy(const GURL& url,
const std::string& method,
ProxyInfo* results,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
Request** request,
ProxyDelegate* proxy_delegate,
const NetLogWithSource& net_log);
@@ -354,7 +354,7 @@
int ResolveProxyHelper(const GURL& url,
const std::string& method,
ProxyInfo* results,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
Request** request,
ProxyDelegate* proxy_delegate,
const NetLogWithSource& net_log);
diff --git a/net/proxy_resolution/proxy_resolver.h b/net/proxy_resolution/proxy_resolver.h
index f89d3477..ea01efa5 100644
--- a/net/proxy_resolution/proxy_resolver.h
+++ b/net/proxy_resolution/proxy_resolver.h
@@ -10,7 +10,7 @@
#include "base/macros.h"
#include "base/memory/ref_counted.h"
#include "base/strings/string16.h"
-#include "net/base/completion_callback.h"
+#include "net/base/completion_once_callback.h"
#include "net/base/load_states.h"
#include "net/base/net_export.h"
#include "net/proxy_resolution/pac_file_data.h"
@@ -45,7 +45,7 @@
// |*request| is written to. Call request_.reset() to cancel the request
virtual int GetProxyForURL(const GURL& url,
ProxyInfo* results,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request,
const NetLogWithSource& net_log) = 0;
diff --git a/net/proxy_resolution/proxy_resolver_factory.h b/net/proxy_resolution/proxy_resolver_factory.h
index ea229ae..25ae651 100644
--- a/net/proxy_resolution/proxy_resolver_factory.h
+++ b/net/proxy_resolution/proxy_resolver_factory.h
@@ -10,7 +10,7 @@
#include "base/macros.h"
#include "base/memory/ref_counted.h"
-#include "net/base/completion_callback.h"
+#include "net/base/completion_once_callback.h"
#include "net/base/net_export.h"
#include "net/proxy_resolution/pac_file_data.h"
@@ -40,7 +40,7 @@
// the ProxyResolverFactory is deleted.
virtual int CreateProxyResolver(const scoped_refptr<PacFileData>& pac_script,
std::unique_ptr<ProxyResolver>* resolver,
- const net::CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request) = 0;
// The PAC script backend can be specified to the ProxyResolverFactory either
diff --git a/net/proxy_resolution/proxy_resolver_mac.cc b/net/proxy_resolution/proxy_resolver_mac.cc
index 8570f98..66aaf2a 100644
--- a/net/proxy_resolution/proxy_resolver_mac.cc
+++ b/net/proxy_resolution/proxy_resolver_mac.cc
@@ -189,7 +189,7 @@
// ProxyResolver methods:
int GetProxyForURL(const GURL& url,
ProxyInfo* results,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request,
const NetLogWithSource& net_log) override;
@@ -207,7 +207,7 @@
// inspired by http://developer.apple.com/samplecode/CFProxySupportTool/
int ProxyResolverMac::GetProxyForURL(const GURL& query_url,
ProxyInfo* results,
- const CompletionCallback& /*callback*/,
+ CompletionOnceCallback /*callback*/,
std::unique_ptr<Request>* /*request*/,
const NetLogWithSource& net_log) {
base::ScopedCFTypeRef<CFStringRef> query_ref(
@@ -345,7 +345,7 @@
int ProxyResolverFactoryMac::CreateProxyResolver(
const scoped_refptr<PacFileData>& pac_script,
std::unique_ptr<ProxyResolver>* resolver,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request) {
resolver->reset(new ProxyResolverMac(pac_script));
return OK;
diff --git a/net/proxy_resolution/proxy_resolver_mac.h b/net/proxy_resolution/proxy_resolver_mac.h
index 3577dc2..5cc49f8 100644
--- a/net/proxy_resolution/proxy_resolver_mac.h
+++ b/net/proxy_resolution/proxy_resolver_mac.h
@@ -7,6 +7,7 @@
#include "base/compiler_specific.h"
#include "base/macros.h"
+#include "net/base/completion_once_callback.h"
#include "net/base/net_export.h"
#include "net/proxy_resolution/proxy_resolver_factory.h"
#include "url/gurl.h"
@@ -23,7 +24,7 @@
int CreateProxyResolver(const scoped_refptr<PacFileData>& pac_script,
std::unique_ptr<ProxyResolver>* resolver,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request) override;
private:
diff --git a/net/proxy_resolution/proxy_resolver_v8_tracing.cc b/net/proxy_resolution/proxy_resolver_v8_tracing.cc
index 8b96c07..cdea928 100644
--- a/net/proxy_resolution/proxy_resolver_v8_tracing.cc
+++ b/net/proxy_resolution/proxy_resolver_v8_tracing.cc
@@ -101,12 +101,12 @@
// Called from origin thread.
void StartCreateV8Resolver(const scoped_refptr<PacFileData>& script_data,
std::unique_ptr<ProxyResolverV8>* resolver,
- const CompletionCallback& callback);
+ CompletionOnceCallback callback);
// Called from origin thread.
void StartGetProxyForURL(const GURL& url,
ProxyInfo* results,
- const CompletionCallback& callback);
+ CompletionOnceCallback callback);
// Called from origin thread.
void Cancel();
@@ -134,7 +134,7 @@
void CheckIsOnWorkerThread() const;
void CheckIsOnOriginThread() const;
- void SetCallback(const CompletionCallback& callback);
+ void SetCallback(CompletionOnceCallback callback);
void ReleaseCallback();
ProxyResolverV8* v8_resolver();
@@ -145,8 +145,7 @@
void NotifyCaller(int result);
void NotifyCallerOnOriginLoop(int result);
- void Start(Operation op, bool blocking_dns,
- const CompletionCallback& callback);
+ void Start(Operation op, bool blocking_dns, CompletionOnceCallback callback);
void ExecuteBlocking();
void ExecuteNonBlocking();
@@ -215,7 +214,7 @@
// The callback to run (on the origin thread) when the Job finishes.
// Should only be accessed from origin thread.
- CompletionCallback callback_;
+ CompletionOnceCallback callback_;
// Flag to indicate whether the request has been cancelled.
base::CancellationFlag cancelled_;
@@ -312,7 +311,7 @@
// ProxyResolverV8Tracing overrides.
void GetProxyForURL(const GURL& url,
ProxyInfo* results,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<ProxyResolver::Request>* request,
std::unique_ptr<Bindings> bindings) override;
@@ -354,7 +353,7 @@
void Job::StartCreateV8Resolver(const scoped_refptr<PacFileData>& script_data,
std::unique_ptr<ProxyResolverV8>* resolver,
- const CompletionCallback& callback) {
+ CompletionOnceCallback callback) {
CheckIsOnOriginThread();
resolver_out_ = resolver;
@@ -364,18 +363,18 @@
// advantage to using non-blocking mode here. That is because the
// parent ProxyResolutionService can't submit any ProxyResolve requests until
// initialization has completed successfully!
- Start(CREATE_V8_RESOLVER, true /*blocking*/, callback);
+ Start(CREATE_V8_RESOLVER, true /*blocking*/, std::move(callback));
}
void Job::StartGetProxyForURL(const GURL& url,
ProxyInfo* results,
- const CompletionCallback& callback) {
+ CompletionOnceCallback callback) {
CheckIsOnOriginThread();
url_ = url;
user_results_ = results;
- Start(GET_PROXY_FOR_URL, false /*non-blocking*/, callback);
+ Start(GET_PROXY_FOR_URL, false /*non-blocking*/, std::move(callback));
}
void Job::Cancel() {
@@ -440,16 +439,15 @@
DCHECK(origin_runner_->BelongsToCurrentThread());
}
-void Job::SetCallback(const CompletionCallback& callback) {
+void Job::SetCallback(CompletionOnceCallback callback) {
CheckIsOnOriginThread();
DCHECK(callback_.is_null());
(*params_->num_outstanding_callbacks)++;
- callback_ = callback;
+ callback_ = std::move(callback);
}
void Job::ReleaseCallback() {
CheckIsOnOriginThread();
- DCHECK(!callback_.is_null());
CHECK_GT(*params_->num_outstanding_callbacks, 0);
(*params_->num_outstanding_callbacks)--;
callback_.Reset();
@@ -497,9 +495,9 @@
*user_results_ = results_;
}
- CompletionCallback callback = callback_;
+ CompletionOnceCallback callback = std::move(callback_);
ReleaseCallback();
- callback.Run(result);
+ std::move(callback).Run(result);
bindings_.reset();
owned_self_reference_ = NULL;
@@ -507,12 +505,12 @@
void Job::Start(Operation op,
bool blocking_dns,
- const CompletionCallback& callback) {
+ CompletionOnceCallback callback) {
CheckIsOnOriginThread();
operation_ = op;
blocking_dns_ = blocking_dns;
- SetCallback(callback);
+ SetCallback(std::move(callback));
owned_self_reference_ = this;
@@ -964,7 +962,7 @@
void ProxyResolverV8TracingImpl::GetProxyForURL(
const GURL& url,
ProxyInfo* results,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<ProxyResolver::Request>* request,
std::unique_ptr<Bindings> bindings) {
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
@@ -974,7 +972,7 @@
request->reset(new RequestImpl(job));
- job->StartGetProxyForURL(url, results, callback);
+ job->StartGetProxyForURL(url, results, std::move(callback));
}
@@ -987,7 +985,7 @@
const scoped_refptr<PacFileData>& pac_script,
std::unique_ptr<ProxyResolverV8Tracing::Bindings> bindings,
std::unique_ptr<ProxyResolverV8Tracing>* resolver,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<ProxyResolverFactory::Request>* request) override;
private:
@@ -1007,11 +1005,11 @@
std::unique_ptr<ProxyResolverV8Tracing::Bindings> bindings,
const scoped_refptr<PacFileData>& pac_script,
std::unique_ptr<ProxyResolverV8Tracing>* resolver_out,
- const CompletionCallback& callback)
+ CompletionOnceCallback callback)
: factory_(factory),
thread_(new base::Thread("Proxy Resolver")),
resolver_out_(resolver_out),
- callback_(callback),
+ callback_(std::move(callback)),
num_outstanding_callbacks_(0) {
// Start up the thread.
base::Thread::Options options;
@@ -1058,7 +1056,7 @@
factory_->RemoveJob(this);
factory_ = nullptr;
create_resolver_job_ = nullptr;
- callback_.Run(error);
+ std::move(callback_).Run(error);
}
void StopWorkerThread() {
@@ -1073,7 +1071,7 @@
scoped_refptr<Job> create_resolver_job_;
std::unique_ptr<ProxyResolverV8> v8_resolver_;
std::unique_ptr<ProxyResolverV8Tracing>* resolver_out_;
- const CompletionCallback callback_;
+ CompletionOnceCallback callback_;
int num_outstanding_callbacks_;
DISALLOW_COPY_AND_ASSIGN(CreateJob);
@@ -1092,10 +1090,10 @@
const scoped_refptr<PacFileData>& pac_script,
std::unique_ptr<ProxyResolverV8Tracing::Bindings> bindings,
std::unique_ptr<ProxyResolverV8Tracing>* resolver,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<ProxyResolverFactory::Request>* request) {
- std::unique_ptr<CreateJob> job(
- new CreateJob(this, std::move(bindings), pac_script, resolver, callback));
+ std::unique_ptr<CreateJob> job(new CreateJob(
+ this, std::move(bindings), pac_script, resolver, std::move(callback)));
jobs_.insert(job.get());
*request = std::move(job);
}
diff --git a/net/proxy_resolution/proxy_resolver_v8_tracing.h b/net/proxy_resolution/proxy_resolver_v8_tracing.h
index 7decd2c..242a6c6d 100644
--- a/net/proxy_resolution/proxy_resolver_v8_tracing.h
+++ b/net/proxy_resolution/proxy_resolver_v8_tracing.h
@@ -9,6 +9,7 @@
#include "base/macros.h"
#include "base/memory/ref_counted.h"
+#include "net/base/completion_once_callback.h"
#include "net/base/net_export.h"
#include "net/proxy_resolution/proxy_resolver.h"
#include "net/proxy_resolution/proxy_resolver_factory.h"
@@ -56,7 +57,7 @@
// |*request|.
virtual void GetProxyForURL(const GURL& url,
ProxyInfo* results,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<ProxyResolver::Request>* request,
std::unique_ptr<Bindings> bindings) = 0;
};
@@ -75,7 +76,7 @@
const scoped_refptr<PacFileData>& pac_script,
std::unique_ptr<ProxyResolverV8Tracing::Bindings> bindings,
std::unique_ptr<ProxyResolverV8Tracing>* resolver,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<ProxyResolverFactory::Request>* request) = 0;
static std::unique_ptr<ProxyResolverV8TracingFactory> Create();
diff --git a/net/proxy_resolution/proxy_resolver_v8_tracing_unittest.cc b/net/proxy_resolution/proxy_resolver_v8_tracing_unittest.cc
index d6e21f8..b49f577 100644
--- a/net/proxy_resolution/proxy_resolver_v8_tracing_unittest.cc
+++ b/net/proxy_resolution/proxy_resolver_v8_tracing_unittest.cc
@@ -15,6 +15,7 @@
#include "base/threading/platform_thread.h"
#include "base/threading/thread_checker.h"
#include "base/values.h"
+#include "net/base/completion_callback.h"
#include "net/base/net_errors.h"
#include "net/base/test_completion_callback.h"
#include "net/dns/host_cache.h"
diff --git a/net/proxy_resolution/proxy_resolver_v8_tracing_wrapper.cc b/net/proxy_resolution/proxy_resolver_v8_tracing_wrapper.cc
index cef1b8a..3dc5634 100644
--- a/net/proxy_resolution/proxy_resolver_v8_tracing_wrapper.cc
+++ b/net/proxy_resolution/proxy_resolver_v8_tracing_wrapper.cc
@@ -94,7 +94,7 @@
int GetProxyForURL(const GURL& url,
ProxyInfo* results,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request,
const NetLogWithSource& net_log) override;
@@ -120,11 +120,11 @@
int ProxyResolverV8TracingWrapper::GetProxyForURL(
const GURL& url,
ProxyInfo* results,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request,
const NetLogWithSource& net_log) {
resolver_impl_->GetProxyForURL(
- url, results, callback, request,
+ url, results, std::move(callback), request,
std::make_unique<BindingsImpl>(error_observer_.get(), host_resolver_,
net_log_, net_log));
return ERR_IO_PENDING;
@@ -149,7 +149,7 @@
int ProxyResolverFactoryV8TracingWrapper::CreateProxyResolver(
const scoped_refptr<PacFileData>& pac_script,
std::unique_ptr<ProxyResolver>* resolver,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request) {
std::unique_ptr<std::unique_ptr<ProxyResolverV8Tracing>> v8_resolver(
new std::unique_ptr<ProxyResolverV8Tracing>);
@@ -165,9 +165,10 @@
std::make_unique<BindingsImpl>(error_observer_local, host_resolver_,
net_log_, NetLogWithSource()),
v8_resolver_local,
- base::Bind(&ProxyResolverFactoryV8TracingWrapper::OnProxyResolverCreated,
- base::Unretained(this), base::Passed(&v8_resolver), resolver,
- callback, base::Passed(&error_observer)),
+ base::BindOnce(
+ &ProxyResolverFactoryV8TracingWrapper::OnProxyResolverCreated,
+ base::Unretained(this), base::Passed(&v8_resolver), resolver,
+ std::move(callback), base::Passed(&error_observer)),
request);
return ERR_IO_PENDING;
}
@@ -175,7 +176,7 @@
void ProxyResolverFactoryV8TracingWrapper::OnProxyResolverCreated(
std::unique_ptr<std::unique_ptr<ProxyResolverV8Tracing>> v8_resolver,
std::unique_ptr<ProxyResolver>* resolver,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<ProxyResolverErrorObserver> error_observer,
int error) {
if (error == OK) {
@@ -183,7 +184,7 @@
std::move(*v8_resolver), net_log_, host_resolver_,
std::move(error_observer)));
}
- callback.Run(error);
+ std::move(callback).Run(error);
}
} // namespace net
diff --git a/net/proxy_resolution/proxy_resolver_v8_tracing_wrapper.h b/net/proxy_resolution/proxy_resolver_v8_tracing_wrapper.h
index b7423063..53f29b6 100644
--- a/net/proxy_resolution/proxy_resolver_v8_tracing_wrapper.h
+++ b/net/proxy_resolution/proxy_resolver_v8_tracing_wrapper.h
@@ -9,6 +9,7 @@
#include "base/macros.h"
#include "base/memory/ref_counted.h"
+#include "net/base/completion_once_callback.h"
#include "net/base/net_export.h"
#include "net/proxy_resolution/proxy_resolver.h"
#include "net/proxy_resolution/proxy_resolver_factory.h"
@@ -40,14 +41,14 @@
// ProxyResolverFactory override.
int CreateProxyResolver(const scoped_refptr<PacFileData>& pac_script,
std::unique_ptr<ProxyResolver>* resolver,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request) override;
private:
void OnProxyResolverCreated(
std::unique_ptr<std::unique_ptr<ProxyResolverV8Tracing>> v8_resolver,
std::unique_ptr<ProxyResolver>* resolver,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<ProxyResolverErrorObserver> error_observer,
int error);
diff --git a/net/proxy_resolution/proxy_resolver_v8_tracing_wrapper_unittest.cc b/net/proxy_resolution/proxy_resolver_v8_tracing_wrapper_unittest.cc
index d15bd41..d3a61e6 100644
--- a/net/proxy_resolution/proxy_resolver_v8_tracing_wrapper_unittest.cc
+++ b/net/proxy_resolution/proxy_resolver_v8_tracing_wrapper_unittest.cc
@@ -17,6 +17,7 @@
#include "base/synchronization/waitable_event.h"
#include "base/threading/platform_thread.h"
#include "base/values.h"
+#include "net/base/completion_callback.h"
#include "net/base/net_errors.h"
#include "net/base/test_completion_callback.h"
#include "net/dns/host_cache.h"
diff --git a/net/proxy_resolution/proxy_resolver_v8_unittest.cc b/net/proxy_resolution/proxy_resolver_v8_unittest.cc
index 56977d41..cbb1a80 100644
--- a/net/proxy_resolution/proxy_resolver_v8_unittest.cc
+++ b/net/proxy_resolution/proxy_resolver_v8_unittest.cc
@@ -9,7 +9,6 @@
#include "base/strings/string_util.h"
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
-#include "net/base/completion_callback.h"
#include "net/base/net_errors.h"
#include "net/proxy_resolution/pac_file_data.h"
#include "net/proxy_resolution/proxy_info.h"
diff --git a/net/proxy_resolution/proxy_resolver_winhttp.cc b/net/proxy_resolution/proxy_resolver_winhttp.cc
index 40d46f9..82ccdb18 100644
--- a/net/proxy_resolution/proxy_resolver_winhttp.cc
+++ b/net/proxy_resolution/proxy_resolver_winhttp.cc
@@ -58,7 +58,7 @@
// ProxyResolver implementation:
int GetProxyForURL(const GURL& url,
ProxyInfo* results,
- const CompletionCallback& /*callback*/,
+ CompletionOnceCallback /*callback*/,
std::unique_ptr<Request>* /*request*/,
const NetLogWithSource& /*net_log*/) override;
@@ -87,7 +87,7 @@
int ProxyResolverWinHttp::GetProxyForURL(const GURL& query_url,
ProxyInfo* results,
- const CompletionCallback& /*callback*/,
+ CompletionOnceCallback /*callback*/,
std::unique_ptr<Request>* /*request*/,
const NetLogWithSource& /*net_log*/) {
// If we don't have a WinHTTP session, then create a new one.
@@ -204,7 +204,7 @@
int ProxyResolverFactoryWinHttp::CreateProxyResolver(
const scoped_refptr<PacFileData>& pac_script,
std::unique_ptr<ProxyResolver>* resolver,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request) {
resolver->reset(new ProxyResolverWinHttp(pac_script));
return OK;
diff --git a/net/proxy_resolution/proxy_resolver_winhttp.h b/net/proxy_resolution/proxy_resolver_winhttp.h
index f76576a4..b28f61c 100644
--- a/net/proxy_resolution/proxy_resolver_winhttp.h
+++ b/net/proxy_resolution/proxy_resolver_winhttp.h
@@ -7,6 +7,7 @@
#include "base/compiler_specific.h"
#include "base/macros.h"
+#include "net/base/completion_once_callback.h"
#include "net/base/net_export.h"
#include "net/proxy_resolution/proxy_resolver_factory.h"
#include "url/gurl.h"
@@ -22,7 +23,7 @@
int CreateProxyResolver(const scoped_refptr<PacFileData>& pac_script,
std::unique_ptr<ProxyResolver>* resolver,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request) override;
private:
diff --git a/net/url_request/url_request_ftp_job_unittest.cc b/net/url_request/url_request_ftp_job_unittest.cc
index c57aa53..41c4cc3 100644
--- a/net/url_request/url_request_ftp_job_unittest.cc
+++ b/net/url_request/url_request_ftp_job_unittest.cc
@@ -9,6 +9,7 @@
#include "base/memory/ref_counted.h"
#include "base/run_loop.h"
+#include "net/base/completion_once_callback.h"
#include "net/base/host_port_pair.h"
#include "net/base/load_states.h"
#include "net/base/proxy_server.h"
@@ -47,7 +48,7 @@
int CreateProxyResolver(const scoped_refptr<PacFileData>& pac_script,
std::unique_ptr<ProxyResolver>* resolver,
- const CompletionCallback& callback,
+ CompletionOnceCallback callback,
std::unique_ptr<Request>* request) override {
EXPECT_FALSE(resolver_);
std::unique_ptr<MockAsyncProxyResolver> owned_resolver(
diff --git a/services/network/proxy_resolver_factory_mojo.cc b/services/network/proxy_resolver_factory_mojo.cc
index 3636ed6..02331a5 100644
--- a/services/network/proxy_resolver_factory_mojo.cc
+++ b/services/network/proxy_resolver_factory_mojo.cc
@@ -123,7 +123,7 @@
// ProxyResolver implementation:
int GetProxyForURL(const GURL& url,
net::ProxyInfo* results,
- const net::CompletionCallback& callback,
+ net::CompletionOnceCallback callback,
std::unique_ptr<Request>* request,
const net::NetLogWithSource& net_log) override;
@@ -154,7 +154,7 @@
Job(ProxyResolverMojo* resolver,
const GURL& url,
net::ProxyInfo* results,
- const net::CompletionCallback& callback,
+ net::CompletionOnceCallback callback,
const net::NetLogWithSource& net_log);
~Job() override;
@@ -173,7 +173,7 @@
const GURL url_;
net::ProxyInfo* results_;
- net::CompletionCallback callback_;
+ net::CompletionOnceCallback callback_;
SEQUENCE_CHECKER(sequence_checker_);
mojo::Binding<proxy_resolver::mojom::ProxyResolverRequestClient> binding_;
@@ -184,7 +184,7 @@
ProxyResolverMojo::Job::Job(ProxyResolverMojo* resolver,
const GURL& url,
net::ProxyInfo* results,
- const net::CompletionCallback& callback,
+ net::CompletionOnceCallback callback,
const net::NetLogWithSource& net_log)
: ClientMixin<proxy_resolver::mojom::ProxyResolverRequestClient>(
resolver->host_resolver_,
@@ -193,7 +193,7 @@
net_log),
url_(url),
results_(results),
- callback_(callback),
+ callback_(std::move(callback)),
binding_(this) {
proxy_resolver::mojom::ProxyResolverRequestClientPtr client;
binding_.Bind(mojo::MakeRequest(&client));
@@ -217,9 +217,9 @@
void ProxyResolverMojo::Job::CompleteRequest(int result) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
- net::CompletionCallback callback = base::ResetAndReturn(&callback_);
+ net::CompletionOnceCallback callback = std::move(callback_);
binding_.Close();
- callback.Run(result);
+ std::move(callback).Run(result);
}
void ProxyResolverMojo::Job::ReportResult(int32_t error,
@@ -262,7 +262,7 @@
int ProxyResolverMojo::GetProxyForURL(const GURL& url,
net::ProxyInfo* results,
- const net::CompletionCallback& callback,
+ net::CompletionOnceCallback callback,
std::unique_ptr<Request>* request,
const net::NetLogWithSource& net_log) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
@@ -270,7 +270,8 @@
if (!mojo_proxy_resolver_ptr_)
return net::ERR_PAC_SCRIPT_TERMINATED;
- *request = std::make_unique<Job>(this, url, results, callback, net_log);
+ *request =
+ std::make_unique<Job>(this, url, results, std::move(callback), net_log);
return net::ERR_IO_PENDING;
}
@@ -290,7 +291,7 @@
Job(ProxyResolverFactoryMojo* factory,
const scoped_refptr<net::PacFileData>& pac_script,
std::unique_ptr<net::ProxyResolver>* resolver,
- const net::CompletionCallback& callback,
+ net::CompletionOnceCallback callback,
std::unique_ptr<net::ProxyResolverErrorObserver> error_observer)
: ClientMixin<proxy_resolver::mojom::ProxyResolverFactoryRequestClient>(
factory->host_resolver_,
@@ -299,7 +300,7 @@
net::NetLogWithSource()),
factory_(factory),
resolver_(resolver),
- callback_(callback),
+ callback_(std::move(callback)),
binding_(this),
error_observer_(std::move(error_observer)) {
proxy_resolver::mojom::ProxyResolverFactoryRequestClientPtr client;
@@ -326,12 +327,12 @@
std::move(resolver_ptr_), factory_->host_resolver_,
std::move(error_observer_), factory_->net_log_));
}
- callback_.Run(error);
+ std::move(callback_).Run(error);
}
ProxyResolverFactoryMojo* const factory_;
std::unique_ptr<net::ProxyResolver>* resolver_;
- const net::CompletionCallback callback_;
+ net::CompletionOnceCallback callback_;
proxy_resolver::mojom::ProxyResolverPtr resolver_ptr_;
mojo::Binding<proxy_resolver::mojom::ProxyResolverFactoryRequestClient>
binding_;
@@ -356,7 +357,7 @@
int ProxyResolverFactoryMojo::CreateProxyResolver(
const scoped_refptr<net::PacFileData>& pac_script,
std::unique_ptr<net::ProxyResolver>* resolver,
- const net::CompletionCallback& callback,
+ net::CompletionOnceCallback callback,
std::unique_ptr<net::ProxyResolverFactory::Request>* request) {
DCHECK(resolver);
DCHECK(request);
@@ -364,7 +365,7 @@
pac_script->utf16().empty()) {
return net::ERR_PAC_SCRIPT_FAILED;
}
- request->reset(new Job(this, pac_script, resolver, callback,
+ request->reset(new Job(this, pac_script, resolver, std::move(callback),
error_observer_factory_.is_null()
? nullptr
: error_observer_factory_.Run()));
diff --git a/services/network/proxy_resolver_factory_mojo.h b/services/network/proxy_resolver_factory_mojo.h
index d924158..1f6747c2 100644
--- a/services/network/proxy_resolver_factory_mojo.h
+++ b/services/network/proxy_resolver_factory_mojo.h
@@ -12,7 +12,7 @@
#include "base/memory/ref_counted.h"
#include "base/memory/weak_ptr.h"
#include "mojo/public/cpp/bindings/binding.h"
-#include "net/base/completion_callback.h"
+#include "net/base/completion_once_callback.h"
#include "net/proxy_resolution/proxy_resolver_factory.h"
#include "services/proxy_resolver/public/mojom/proxy_resolver.mojom.h"
@@ -41,7 +41,7 @@
// ProxyResolverFactory override.
int CreateProxyResolver(const scoped_refptr<net::PacFileData>& pac_script,
std::unique_ptr<net::ProxyResolver>* resolver,
- const net::CompletionCallback& callback,
+ net::CompletionOnceCallback callback,
std::unique_ptr<Request>* request) override;
private:
diff --git a/services/proxy_resolver/proxy_resolver_factory_impl_unittest.cc b/services/proxy_resolver/proxy_resolver_factory_impl_unittest.cc
index b6f4025..e3cbcce2 100644
--- a/services/proxy_resolver/proxy_resolver_factory_impl_unittest.cc
+++ b/services/proxy_resolver/proxy_resolver_factory_impl_unittest.cc
@@ -11,6 +11,7 @@
#include "base/test/scoped_task_environment.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "mojo/public/cpp/bindings/strong_binding.h"
+#include "net/base/completion_once_callback.h"
#include "net/base/test_completion_callback.h"
#include "net/proxy_resolution/mock_proxy_resolver.h"
#include "net/proxy_resolution/proxy_resolver_v8_tracing.h"
@@ -39,7 +40,7 @@
// net::ProxyResolverV8Tracing overrides.
void GetProxyForURL(const GURL& url,
net::ProxyInfo* results,
- const net::CompletionCallback& callback,
+ net::CompletionOnceCallback callback,
std::unique_ptr<net::ProxyResolver::Request>* request,
std::unique_ptr<Bindings> bindings) override {}
@@ -57,7 +58,7 @@
public:
struct PendingRequest {
std::unique_ptr<net::ProxyResolverV8Tracing>* resolver;
- net::CompletionCallback callback;
+ net::CompletionOnceCallback callback;
};
explicit TestProxyResolverFactory(net::EventWaiter<Event>* waiter)
@@ -69,7 +70,7 @@
const scoped_refptr<net::PacFileData>& pac_script,
std::unique_ptr<net::ProxyResolverV8Tracing::Bindings> bindings,
std::unique_ptr<net::ProxyResolverV8Tracing>* resolver,
- const net::CompletionCallback& callback,
+ net::CompletionOnceCallback callback,
std::unique_ptr<net::ProxyResolverFactory::Request>* request) override {
requests_handled_++;
waiter_->NotifyEvent(RESOLVER_CREATED);
@@ -77,7 +78,7 @@
EXPECT_TRUE(resolver);
pending_request_.reset(new PendingRequest);
pending_request_->resolver = resolver;
- pending_request_->callback = callback;
+ pending_request_->callback = std::move(callback);
ASSERT_TRUE(bindings);
@@ -87,7 +88,7 @@
}
size_t requests_handled() { return requests_handled_; }
- const PendingRequest* pending_request() { return pending_request_.get(); }
+ PendingRequest* pending_request() { return pending_request_.get(); }
private:
net::EventWaiter<Event>* waiter_;
@@ -131,7 +132,9 @@
waiter_.NotifyEvent(RESOLVER_DESTROYED);
}
- void ReportResult(int32_t error) override { create_callback_.Run(error); }
+ void ReportResult(int32_t error) override {
+ std::move(create_callback_).Run(error);
+ }
void Alert(const std::string& message) override {}
@@ -169,7 +172,7 @@
std::unique_ptr<base::RunLoop> service_ref_run_loop_;
int instances_destroyed_ = 0;
- net::CompletionCallback create_callback_;
+ net::CompletionOnceCallback create_callback_;
net::EventWaiter<Event> waiter_;
};
@@ -193,7 +196,7 @@
mock_factory_->pending_request()->resolver->reset(new FakeProxyResolver(
base::Bind(&ProxyResolverFactoryImplTest::OnFakeProxyInstanceDestroyed,
base::Unretained(this))));
- mock_factory_->pending_request()->callback.Run(net::OK);
+ std::move(mock_factory_->pending_request()->callback).Run(net::OK);
EXPECT_THAT(create_callback.WaitForResult(), IsOk());
EXPECT_FALSE(service_ref_factory_.HasNoRefs());
@@ -231,7 +234,7 @@
mock_factory_->pending_request()->resolver->reset(new FakeProxyResolver(
base::Bind(&ProxyResolverFactoryImplTest::OnFakeProxyInstanceDestroyed,
base::Unretained(this))));
- mock_factory_->pending_request()->callback.Run(net::OK);
+ std::move(mock_factory_->pending_request()->callback).Run(net::OK);
EXPECT_THAT(create_callback.WaitForResult(), IsOk());
EXPECT_FALSE(service_ref_factory_.HasNoRefs());
@@ -261,7 +264,8 @@
net::TestCompletionCallback create_callback;
create_callback_ = create_callback.callback();
ASSERT_TRUE(mock_factory_->pending_request());
- mock_factory_->pending_request()->callback.Run(net::ERR_PAC_SCRIPT_FAILED);
+ std::move(mock_factory_->pending_request()->callback)
+ .Run(net::ERR_PAC_SCRIPT_FAILED);
EXPECT_THAT(create_callback.WaitForResult(),
IsError(net::ERR_PAC_SCRIPT_FAILED));
}
diff --git a/services/proxy_resolver/proxy_resolver_impl_unittest.cc b/services/proxy_resolver/proxy_resolver_impl_unittest.cc
index 129e9a39..2aa9fd99 100644
--- a/services/proxy_resolver/proxy_resolver_impl_unittest.cc
+++ b/services/proxy_resolver/proxy_resolver_impl_unittest.cc
@@ -12,6 +12,7 @@
#include "base/run_loop.h"
#include "base/test/scoped_task_environment.h"
#include "mojo/public/cpp/bindings/binding.h"
+#include "net/base/completion_once_callback.h"
#include "net/base/net_errors.h"
#include "net/base/proxy_server.h"
#include "net/proxy_resolution/mock_proxy_resolver.h"
@@ -111,16 +112,17 @@
bool cancelled = false;
void Complete(int result) {
DCHECK(!callback_.is_null());
- callback_.Run(result);
- callback_.Reset();
+ std::move(callback_).Run(result);
}
bool WasCompleted() { return callback_.is_null(); }
- void SetCallback(net::CompletionCallback callback) { callback_ = callback; }
+ void SetCallback(net::CompletionOnceCallback callback) {
+ callback_ = std::move(callback);
+ }
private:
- net::CompletionCallback callback_;
+ net::CompletionOnceCallback callback_;
};
class RequestImpl : public net::ProxyResolver::Request {
@@ -152,7 +154,7 @@
// ProxyResolverV8Tracing overrides.
void GetProxyForURL(const GURL& url,
net::ProxyInfo* results,
- const net::CompletionCallback& callback,
+ net::CompletionOnceCallback callback,
std::unique_ptr<net::ProxyResolver::Request>* request,
std::unique_ptr<Bindings> bindings) override;
@@ -170,14 +172,14 @@
void MockProxyResolverV8Tracing::GetProxyForURL(
const GURL& url,
net::ProxyInfo* results,
- const net::CompletionCallback& callback,
+ net::CompletionOnceCallback callback,
std::unique_ptr<net::ProxyResolver::Request>* request,
std::unique_ptr<Bindings> bindings) {
pending_jobs_.push_back(base::WrapUnique(new Job()));
auto* pending_job = pending_jobs_.back().get();
pending_job->url = url;
pending_job->results = results;
- pending_job->SetCallback(callback);
+ pending_job->SetCallback(std::move(callback));
request->reset(new RequestImpl(pending_job, this));
}