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 "base/stl_util.h" | 7 #include "base/stl_util.h" |
8 #include "mojo/common/url_type_converters.h" | 8 #include "mojo/common/url_type_converters.h" |
9 #include "net/base/net_errors.h" | 9 #include "net/base/net_errors.h" |
10 #include "net/log/net_log.h" | 10 #include "net/log/net_log.h" |
(...skipping 19 matching lines...) Expand all Loading... |
30 // disconnecting, indicating cancellation. | 30 // disconnecting, indicating cancellation. |
31 void OnConnectionError(); | 31 void OnConnectionError(); |
32 | 32 |
33 void GetProxyDone(int error); | 33 void GetProxyDone(int error); |
34 | 34 |
35 MojoProxyResolverImpl* resolver_; | 35 MojoProxyResolverImpl* resolver_; |
36 | 36 |
37 interfaces::ProxyResolverRequestClientPtr client_; | 37 interfaces::ProxyResolverRequestClientPtr client_; |
38 ProxyInfo result_; | 38 ProxyInfo result_; |
39 GURL url_; | 39 GURL url_; |
40 net::ProxyResolver::RequestHandle request_handle_; | 40 scoped_ptr<net::ProxyResolver::Request> request_; |
41 bool done_; | 41 bool done_; |
42 | 42 |
43 DISALLOW_COPY_AND_ASSIGN(Job); | 43 DISALLOW_COPY_AND_ASSIGN(Job); |
44 }; | 44 }; |
45 | 45 |
46 MojoProxyResolverImpl::MojoProxyResolverImpl( | 46 MojoProxyResolverImpl::MojoProxyResolverImpl( |
47 scoped_ptr<ProxyResolverV8Tracing> resolver) | 47 scoped_ptr<ProxyResolverV8Tracing> resolver) |
48 : resolver_(resolver.Pass()) { | 48 : resolver_(resolver.Pass()) { |
49 } | 49 } |
50 | 50 |
(...skipping 17 matching lines...) Expand all Loading... |
68 delete job; | 68 delete job; |
69 } | 69 } |
70 | 70 |
71 MojoProxyResolverImpl::Job::Job( | 71 MojoProxyResolverImpl::Job::Job( |
72 interfaces::ProxyResolverRequestClientPtr client, | 72 interfaces::ProxyResolverRequestClientPtr client, |
73 MojoProxyResolverImpl* resolver, | 73 MojoProxyResolverImpl* resolver, |
74 const GURL& url) | 74 const GURL& url) |
75 : resolver_(resolver), | 75 : resolver_(resolver), |
76 client_(client.Pass()), | 76 client_(client.Pass()), |
77 url_(url), | 77 url_(url), |
78 request_handle_(nullptr), | |
79 done_(false) {} | 78 done_(false) {} |
80 | 79 |
81 MojoProxyResolverImpl::Job::~Job() { | 80 MojoProxyResolverImpl::Job::~Job() {} |
82 if (request_handle_ && !done_) | |
83 resolver_->resolver_->CancelRequest(request_handle_); | |
84 } | |
85 | 81 |
86 void MojoProxyResolverImpl::Job::Start() { | 82 void MojoProxyResolverImpl::Job::Start() { |
87 resolver_->resolver_->GetProxyForURL( | 83 resolver_->resolver_->GetProxyForURL( |
88 url_, &result_, base::Bind(&Job::GetProxyDone, base::Unretained(this)), | 84 url_, &result_, base::Bind(&Job::GetProxyDone, base::Unretained(this)), |
89 &request_handle_, | 85 &request_, |
90 make_scoped_ptr(new MojoProxyResolverV8TracingBindings< | 86 make_scoped_ptr(new MojoProxyResolverV8TracingBindings< |
91 interfaces::ProxyResolverRequestClient>(client_.get()))); | 87 interfaces::ProxyResolverRequestClient>(client_.get()))); |
92 client_.set_connection_error_handler(base::Bind( | 88 client_.set_connection_error_handler(base::Bind( |
93 &MojoProxyResolverImpl::Job::OnConnectionError, base::Unretained(this))); | 89 &MojoProxyResolverImpl::Job::OnConnectionError, base::Unretained(this))); |
94 } | 90 } |
95 | 91 |
96 void MojoProxyResolverImpl::Job::GetProxyDone(int error) { | 92 void MojoProxyResolverImpl::Job::GetProxyDone(int error) { |
97 done_ = true; | 93 done_ = true; |
98 DVLOG(1) << "GetProxyForUrl(" << url_ << ") finished with error " << error | 94 DVLOG(1) << "GetProxyForUrl(" << url_ << ") finished with error " << error |
99 << ". " << result_.proxy_list().size() << " Proxies returned:"; | 95 << ". " << result_.proxy_list().size() << " Proxies returned:"; |
100 for (const auto& proxy : result_.proxy_list().GetAll()) { | 96 for (const auto& proxy : result_.proxy_list().GetAll()) { |
101 DVLOG(1) << proxy.ToURI(); | 97 DVLOG(1) << proxy.ToURI(); |
102 } | 98 } |
103 mojo::Array<interfaces::ProxyServerPtr> result; | 99 mojo::Array<interfaces::ProxyServerPtr> result; |
104 if (error == OK) { | 100 if (error == OK) { |
105 result = mojo::Array<interfaces::ProxyServerPtr>::From( | 101 result = mojo::Array<interfaces::ProxyServerPtr>::From( |
106 result_.proxy_list().GetAll()); | 102 result_.proxy_list().GetAll()); |
107 } | 103 } |
108 client_->ReportResult(error, result.Pass()); | 104 client_->ReportResult(error, result.Pass()); |
109 resolver_->DeleteJob(this); | 105 resolver_->DeleteJob(this); |
110 } | 106 } |
111 | 107 |
112 void MojoProxyResolverImpl::Job::OnConnectionError() { | 108 void MojoProxyResolverImpl::Job::OnConnectionError() { |
113 resolver_->DeleteJob(this); | 109 resolver_->DeleteJob(this); |
114 } | 110 } |
115 | 111 |
116 } // namespace net | 112 } // namespace net |
OLD | NEW |