| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/proxy/mojo_proxy_resolver_impl.h" | 5 #include "net/proxy/mojo_proxy_resolver_impl.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/macros.h" | 9 #include "base/macros.h" |
| 10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
| 11 #include "base/stl_util.h" | |
| 12 #include "net/base/net_errors.h" | 11 #include "net/base/net_errors.h" |
| 13 #include "net/proxy/mojo_proxy_resolver_v8_tracing_bindings.h" | 12 #include "net/proxy/mojo_proxy_resolver_v8_tracing_bindings.h" |
| 14 #include "net/proxy/mojo_proxy_type_converters.h" | 13 #include "net/proxy/mojo_proxy_type_converters.h" |
| 15 #include "net/proxy/proxy_info.h" | 14 #include "net/proxy/proxy_info.h" |
| 16 #include "net/proxy/proxy_resolver_script_data.h" | 15 #include "net/proxy/proxy_resolver_script_data.h" |
| 17 #include "net/proxy/proxy_resolver_v8_tracing.h" | 16 #include "net/proxy/proxy_resolver_v8_tracing.h" |
| 18 | 17 |
| 19 namespace net { | 18 namespace net { |
| 20 | 19 |
| 21 class MojoProxyResolverImpl::Job { | 20 class MojoProxyResolverImpl::Job { |
| (...skipping 21 matching lines...) Expand all Loading... |
| 43 bool done_; | 42 bool done_; |
| 44 | 43 |
| 45 DISALLOW_COPY_AND_ASSIGN(Job); | 44 DISALLOW_COPY_AND_ASSIGN(Job); |
| 46 }; | 45 }; |
| 47 | 46 |
| 48 MojoProxyResolverImpl::MojoProxyResolverImpl( | 47 MojoProxyResolverImpl::MojoProxyResolverImpl( |
| 49 std::unique_ptr<ProxyResolverV8Tracing> resolver) | 48 std::unique_ptr<ProxyResolverV8Tracing> resolver) |
| 50 : resolver_(std::move(resolver)) {} | 49 : resolver_(std::move(resolver)) {} |
| 51 | 50 |
| 52 MojoProxyResolverImpl::~MojoProxyResolverImpl() { | 51 MojoProxyResolverImpl::~MojoProxyResolverImpl() { |
| 53 base::STLDeleteElements(&resolve_jobs_); | |
| 54 } | 52 } |
| 55 | 53 |
| 56 void MojoProxyResolverImpl::GetProxyForUrl( | 54 void MojoProxyResolverImpl::GetProxyForUrl( |
| 57 const GURL& url, | 55 const GURL& url, |
| 58 interfaces::ProxyResolverRequestClientPtr client) { | 56 interfaces::ProxyResolverRequestClientPtr client) { |
| 59 DVLOG(1) << "GetProxyForUrl(" << url << ")"; | 57 DVLOG(1) << "GetProxyForUrl(" << url << ")"; |
| 60 Job* job = new Job(std::move(client), this, url); | 58 std::unique_ptr<Job> job = |
| 61 bool inserted = resolve_jobs_.insert(job).second; | 59 base::MakeUnique<Job>(std::move(client), this, url); |
| 62 DCHECK(inserted); | 60 Job* job_ptr = job.get(); |
| 63 job->Start(); | 61 resolve_jobs_[job_ptr] = std::move(job); |
| 62 job_ptr->Start(); |
| 64 } | 63 } |
| 65 | 64 |
| 66 void MojoProxyResolverImpl::DeleteJob(Job* job) { | 65 void MojoProxyResolverImpl::DeleteJob(Job* job) { |
| 67 size_t num_erased = resolve_jobs_.erase(job); | 66 auto it = resolve_jobs_.find(job); |
| 68 DCHECK(num_erased); | 67 DCHECK(it != resolve_jobs_.end()); |
| 69 delete job; | 68 resolve_jobs_.erase(it); |
| 70 } | 69 } |
| 71 | 70 |
| 72 MojoProxyResolverImpl::Job::Job( | 71 MojoProxyResolverImpl::Job::Job( |
| 73 interfaces::ProxyResolverRequestClientPtr client, | 72 interfaces::ProxyResolverRequestClientPtr client, |
| 74 MojoProxyResolverImpl* resolver, | 73 MojoProxyResolverImpl* resolver, |
| 75 const GURL& url) | 74 const GURL& url) |
| 76 : resolver_(resolver), | 75 : resolver_(resolver), |
| 77 client_(std::move(client)), | 76 client_(std::move(client)), |
| 78 url_(url), | 77 url_(url), |
| 79 request_handle_(nullptr), | 78 request_handle_(nullptr), |
| (...skipping 28 matching lines...) Expand all Loading... |
| 108 } | 107 } |
| 109 client_->ReportResult(error, std::move(result)); | 108 client_->ReportResult(error, std::move(result)); |
| 110 resolver_->DeleteJob(this); | 109 resolver_->DeleteJob(this); |
| 111 } | 110 } |
| 112 | 111 |
| 113 void MojoProxyResolverImpl::Job::OnConnectionError() { | 112 void MojoProxyResolverImpl::Job::OnConnectionError() { |
| 114 resolver_->DeleteJob(this); | 113 resolver_->DeleteJob(this); |
| 115 } | 114 } |
| 116 | 115 |
| 117 } // namespace net | 116 } // namespace net |
| OLD | NEW |