OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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/proxy_resolver_v8_tracing.h" | 5 #include "net/proxy/proxy_resolver_v8_tracing.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
302 ProxyResolverV8TracingImpl(scoped_ptr<base::Thread> thread, | 302 ProxyResolverV8TracingImpl(scoped_ptr<base::Thread> thread, |
303 scoped_ptr<ProxyResolverV8> resolver, | 303 scoped_ptr<ProxyResolverV8> resolver, |
304 scoped_ptr<Job::Params> job_params); | 304 scoped_ptr<Job::Params> job_params); |
305 | 305 |
306 ~ProxyResolverV8TracingImpl() override; | 306 ~ProxyResolverV8TracingImpl() override; |
307 | 307 |
308 // ProxyResolverV8Tracing overrides. | 308 // ProxyResolverV8Tracing overrides. |
309 void GetProxyForURL(const GURL& url, | 309 void GetProxyForURL(const GURL& url, |
310 ProxyInfo* results, | 310 ProxyInfo* results, |
311 const CompletionCallback& callback, | 311 const CompletionCallback& callback, |
312 ProxyResolver::RequestHandle* request, | 312 scoped_ptr<ProxyResolver::Request>* request, |
313 scoped_ptr<Bindings> bindings) override; | 313 scoped_ptr<Bindings> bindings) override; |
314 void CancelRequest(ProxyResolver::RequestHandle request) override; | 314 |
315 LoadState GetLoadState(ProxyResolver::RequestHandle request) const override; | 315 class RequestImpl : public ProxyResolverV8Tracing::Request { |
| 316 public: |
| 317 RequestImpl(Job* job); |
| 318 ~RequestImpl() override; |
| 319 LoadState GetLoadState() override; |
| 320 |
| 321 private: |
| 322 Job* job_; |
| 323 }; |
316 | 324 |
317 private: | 325 private: |
318 // The worker thread on which the ProxyResolverV8 will be run. | 326 // The worker thread on which the ProxyResolverV8 will be run. |
319 scoped_ptr<base::Thread> thread_; | 327 scoped_ptr<base::Thread> thread_; |
320 scoped_ptr<ProxyResolverV8> v8_resolver_; | 328 scoped_ptr<ProxyResolverV8> v8_resolver_; |
321 | 329 |
322 scoped_ptr<Job::Params> job_params_; | 330 scoped_ptr<Job::Params> job_params_; |
323 | 331 |
324 // The number of outstanding (non-cancelled) jobs. | 332 // The number of outstanding (non-cancelled) jobs. |
325 int num_outstanding_callbacks_; | 333 int num_outstanding_callbacks_; |
(...skipping 599 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
925 | 933 |
926 ProxyResolverV8TracingImpl::~ProxyResolverV8TracingImpl() { | 934 ProxyResolverV8TracingImpl::~ProxyResolverV8TracingImpl() { |
927 // Note, all requests should have been cancelled. | 935 // Note, all requests should have been cancelled. |
928 CHECK_EQ(0, num_outstanding_callbacks_); | 936 CHECK_EQ(0, num_outstanding_callbacks_); |
929 | 937 |
930 // Join the worker thread. See http://crbug.com/69710. | 938 // Join the worker thread. See http://crbug.com/69710. |
931 base::ThreadRestrictions::ScopedAllowIO allow_io; | 939 base::ThreadRestrictions::ScopedAllowIO allow_io; |
932 thread_.reset(); | 940 thread_.reset(); |
933 } | 941 } |
934 | 942 |
| 943 ProxyResolverV8TracingImpl::RequestImpl::RequestImpl(Job* job) : job_(job) {} |
| 944 |
| 945 ProxyResolverV8TracingImpl::RequestImpl::~RequestImpl() { |
| 946 job_->Cancel(); |
| 947 } |
| 948 |
| 949 LoadState ProxyResolverV8TracingImpl::RequestImpl::GetLoadState() { |
| 950 return job_->GetLoadState(); |
| 951 } |
| 952 |
935 void ProxyResolverV8TracingImpl::GetProxyForURL( | 953 void ProxyResolverV8TracingImpl::GetProxyForURL( |
936 const GURL& url, | 954 const GURL& url, |
937 ProxyInfo* results, | 955 ProxyInfo* results, |
938 const CompletionCallback& callback, | 956 const CompletionCallback& callback, |
939 ProxyResolver::RequestHandle* request, | 957 scoped_ptr<ProxyResolver::Request>* request, |
940 scoped_ptr<Bindings> bindings) { | 958 scoped_ptr<Bindings> bindings) { |
941 DCHECK(CalledOnValidThread()); | 959 DCHECK(CalledOnValidThread()); |
942 DCHECK(!callback.is_null()); | 960 DCHECK(!callback.is_null()); |
943 | 961 |
944 scoped_refptr<Job> job = new Job(job_params_.get(), bindings.Pass()); | 962 scoped_refptr<Job> job = new Job(job_params_.get(), bindings.Pass()); |
945 | 963 |
946 if (request) | 964 if (request) |
947 *request = job.get(); | 965 request->reset(new RequestImpl(job.get())); |
948 | 966 |
949 job->StartGetProxyForURL(url, results, callback); | 967 job->StartGetProxyForURL(url, results, callback); |
950 } | 968 } |
951 | 969 |
952 void ProxyResolverV8TracingImpl::CancelRequest( | |
953 ProxyResolver::RequestHandle request) { | |
954 Job* job = reinterpret_cast<Job*>(request); | |
955 job->Cancel(); | |
956 } | |
957 | |
958 LoadState ProxyResolverV8TracingImpl::GetLoadState( | |
959 ProxyResolver::RequestHandle request) const { | |
960 Job* job = reinterpret_cast<Job*>(request); | |
961 return job->GetLoadState(); | |
962 } | |
963 | 970 |
964 class ProxyResolverV8TracingFactoryImpl : public ProxyResolverV8TracingFactory { | 971 class ProxyResolverV8TracingFactoryImpl : public ProxyResolverV8TracingFactory { |
965 public: | 972 public: |
966 ProxyResolverV8TracingFactoryImpl(); | 973 ProxyResolverV8TracingFactoryImpl(); |
967 ~ProxyResolverV8TracingFactoryImpl() override; | 974 ~ProxyResolverV8TracingFactoryImpl() override; |
968 | 975 |
969 void CreateProxyResolverV8Tracing( | 976 void CreateProxyResolverV8Tracing( |
970 const scoped_refptr<ProxyResolverScriptData>& pac_script, | 977 const scoped_refptr<ProxyResolverScriptData>& pac_script, |
971 scoped_ptr<ProxyResolverV8Tracing::Bindings> bindings, | 978 scoped_ptr<ProxyResolverV8Tracing::Bindings> bindings, |
972 scoped_ptr<ProxyResolverV8Tracing>* resolver, | 979 scoped_ptr<ProxyResolverV8Tracing>* resolver, |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1091 | 1098 |
1092 } // namespace | 1099 } // namespace |
1093 | 1100 |
1094 // static | 1101 // static |
1095 scoped_ptr<ProxyResolverV8TracingFactory> | 1102 scoped_ptr<ProxyResolverV8TracingFactory> |
1096 ProxyResolverV8TracingFactory::Create() { | 1103 ProxyResolverV8TracingFactory::Create() { |
1097 return make_scoped_ptr(new ProxyResolverV8TracingFactoryImpl()); | 1104 return make_scoped_ptr(new ProxyResolverV8TracingFactoryImpl()); |
1098 } | 1105 } |
1099 | 1106 |
1100 } // namespace net | 1107 } // namespace net |
OLD | NEW |