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

Unified Diff: net/dns/mojo_host_resolver_impl.cc

Issue 2489113002: Remove stl_util's deletion functions from MojoHostResolverImpl. (Closed)
Patch Set: add missing include, rebase Created 4 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/dns/mojo_host_resolver_impl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/dns/mojo_host_resolver_impl.cc
diff --git a/net/dns/mojo_host_resolver_impl.cc b/net/dns/mojo_host_resolver_impl.cc
index f8f08d8b249da078cd7fc61fe3f73d665e67f24f..e61387ab7404e32e5ab2048adc4b573c848a4efd 100644
--- a/net/dns/mojo_host_resolver_impl.cc
+++ b/net/dns/mojo_host_resolver_impl.cc
@@ -6,7 +6,6 @@
#include <utility>
-#include "base/stl_util.h"
#include "net/base/address_list.h"
#include "net/base/net_errors.h"
#include "net/base/network_interfaces.h"
@@ -26,6 +25,8 @@ class MojoHostResolverImpl::Job {
interfaces::HostResolverRequestClientPtr client);
~Job();
+ void set_iter(std::list<Job>::iterator iter) { iter_ = iter; }
+
void Start();
private:
@@ -36,6 +37,9 @@ class MojoHostResolverImpl::Job {
void OnConnectionError();
MojoHostResolverImpl* resolver_service_;
+ // This Job's iterator in |resolver_service_|, so the Job may be removed on
+ // completion.
+ std::list<Job>::iterator iter_;
net::HostResolver* resolver_;
net::HostResolver::RequestInfo request_info_;
const NetLogWithSource net_log_;
@@ -51,7 +55,6 @@ MojoHostResolverImpl::MojoHostResolverImpl(net::HostResolver* resolver,
MojoHostResolverImpl::~MojoHostResolverImpl() {
DCHECK(thread_checker_.CalledOnValidThread());
- base::STLDeleteElements(&pending_jobs_);
}
void MojoHostResolverImpl::Resolve(
@@ -64,17 +67,17 @@ void MojoHostResolverImpl::Resolve(
// IP address.
request_info->set_host_port_pair(HostPortPair(GetHostName(), 80));
}
- Job* job =
- new Job(this, resolver_, *request_info, net_log_, std::move(client));
- pending_jobs_.insert(job);
+
+ pending_jobs_.emplace_front(this, resolver_, *request_info, net_log_,
+ std::move(client));
+ auto job = pending_jobs_.begin();
+ job->set_iter(job);
job->Start();
}
-void MojoHostResolverImpl::DeleteJob(Job* job) {
+void MojoHostResolverImpl::DeleteJob(std::list<Job>::iterator job) {
DCHECK(thread_checker_.CalledOnValidThread());
- size_t num_erased = pending_jobs_.erase(job);
- DCHECK(num_erased);
- delete job;
+ pending_jobs_.erase(job);
}
MojoHostResolverImpl::Job::Job(
@@ -93,6 +96,9 @@ MojoHostResolverImpl::Job::Job(
}
void MojoHostResolverImpl::Job::Start() {
+ // The caller is responsible for setting up |iter_|.
+ DCHECK_EQ(this, &*iter_);
+
DVLOG(1) << "Resolve " << request_info_.host_port_pair().ToString();
int result =
resolver_->Resolve(request_info_, DEFAULT_PRIORITY, &result_,
@@ -117,7 +123,7 @@ void MojoHostResolverImpl::Job::OnResolveDone(int result) {
DVLOG(1) << address.ToString();
}
client_->ReportResult(result, result_);
- resolver_service_->DeleteJob(this);
+ resolver_service_->DeleteJob(iter_);
}
void MojoHostResolverImpl::Job::OnConnectionError() {
@@ -126,7 +132,7 @@ void MojoHostResolverImpl::Job::OnConnectionError() {
DCHECK(resolver_service_);
DVLOG(1) << "Connection error on request for "
<< request_info_.host_port_pair().ToString();
- resolver_service_->DeleteJob(this);
+ resolver_service_->DeleteJob(iter_);
}
} // namespace net
« no previous file with comments | « net/dns/mojo_host_resolver_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698