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/proxy_service_mojo.h" | 5 #include "net/proxy/proxy_service_mojo.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <memory> | 8 #include <memory> |
9 #include <string> | 9 #include <string> |
10 #include <utility> | 10 #include <utility> |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
108 EXPECT_EQ(3, line_number); | 108 EXPECT_EQ(3, line_number); |
109 } | 109 } |
110 | 110 |
111 class LoggingMockHostResolver : public MockHostResolver { | 111 class LoggingMockHostResolver : public MockHostResolver { |
112 public: | 112 public: |
113 int Resolve(const RequestInfo& info, | 113 int Resolve(const RequestInfo& info, |
114 RequestPriority priority, | 114 RequestPriority priority, |
115 AddressList* addresses, | 115 AddressList* addresses, |
116 const CompletionCallback& callback, | 116 const CompletionCallback& callback, |
117 std::unique_ptr<Request>* out_req, | 117 std::unique_ptr<Request>* out_req, |
118 const BoundNetLog& net_log) override { | 118 const NetLogWithSource& net_log) override { |
119 net_log.AddEvent(NetLogEventType::HOST_RESOLVER_IMPL_JOB); | 119 net_log.AddEvent(NetLogEventType::HOST_RESOLVER_IMPL_JOB); |
120 return MockHostResolver::Resolve(info, priority, addresses, callback, | 120 return MockHostResolver::Resolve(info, priority, addresses, callback, |
121 out_req, net_log); | 121 out_req, net_log); |
122 } | 122 } |
123 }; | 123 }; |
124 | 124 |
125 } // namespace | 125 } // namespace |
126 | 126 |
127 class ProxyServiceMojoTest : public testing::Test, | 127 class ProxyServiceMojoTest : public testing::Test, |
128 public MojoProxyResolverFactory { | 128 public MojoProxyResolverFactory { |
(...skipping 26 matching lines...) Expand all Loading... |
155 TestClosure on_delete_closure_; | 155 TestClosure on_delete_closure_; |
156 std::unique_ptr<ProxyService> proxy_service_; | 156 std::unique_ptr<ProxyService> proxy_service_; |
157 }; | 157 }; |
158 | 158 |
159 TEST_F(ProxyServiceMojoTest, Basic) { | 159 TEST_F(ProxyServiceMojoTest, Basic) { |
160 ProxyInfo info; | 160 ProxyInfo info; |
161 TestCompletionCallback callback; | 161 TestCompletionCallback callback; |
162 EXPECT_EQ(ERR_IO_PENDING, | 162 EXPECT_EQ(ERR_IO_PENDING, |
163 proxy_service_->ResolveProxy(GURL("http://foo"), std::string(), | 163 proxy_service_->ResolveProxy(GURL("http://foo"), std::string(), |
164 &info, callback.callback(), nullptr, | 164 &info, callback.callback(), nullptr, |
165 nullptr, BoundNetLog())); | 165 nullptr, NetLogWithSource())); |
166 | 166 |
167 // Proxy script fetcher should have a fetch triggered by the first | 167 // Proxy script fetcher should have a fetch triggered by the first |
168 // |ResolveProxy()| request. | 168 // |ResolveProxy()| request. |
169 EXPECT_TRUE(fetcher_->has_pending_request()); | 169 EXPECT_TRUE(fetcher_->has_pending_request()); |
170 EXPECT_EQ(GURL(kPacUrl), fetcher_->pending_request_url()); | 170 EXPECT_EQ(GURL(kPacUrl), fetcher_->pending_request_url()); |
171 fetcher_->NotifyFetchCompletion(OK, kSimplePacScript); | 171 fetcher_->NotifyFetchCompletion(OK, kSimplePacScript); |
172 | 172 |
173 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 173 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
174 EXPECT_EQ("PROXY foo:1234", info.ToPacString()); | 174 EXPECT_EQ("PROXY foo:1234", info.ToPacString()); |
175 EXPECT_EQ(0u, mock_host_resolver_.num_resolve()); | 175 EXPECT_EQ(0u, mock_host_resolver_.num_resolve()); |
176 proxy_service_.reset(); | 176 proxy_service_.reset(); |
177 on_delete_closure_.WaitForResult(); | 177 on_delete_closure_.WaitForResult(); |
178 } | 178 } |
179 | 179 |
180 TEST_F(ProxyServiceMojoTest, DnsResolution) { | 180 TEST_F(ProxyServiceMojoTest, DnsResolution) { |
181 ProxyInfo info; | 181 ProxyInfo info; |
182 TestCompletionCallback callback; | 182 TestCompletionCallback callback; |
183 BoundTestNetLog bound_net_log; | 183 BoundTestNetLog test_net_log; |
184 EXPECT_EQ(ERR_IO_PENDING, | 184 EXPECT_EQ(ERR_IO_PENDING, |
185 proxy_service_->ResolveProxy(GURL("http://foo"), std::string(), | 185 proxy_service_->ResolveProxy(GURL("http://foo"), std::string(), |
186 &info, callback.callback(), nullptr, | 186 &info, callback.callback(), nullptr, |
187 nullptr, bound_net_log.bound())); | 187 nullptr, test_net_log.bound())); |
188 | 188 |
189 // Proxy script fetcher should have a fetch triggered by the first | 189 // Proxy script fetcher should have a fetch triggered by the first |
190 // |ResolveProxy()| request. | 190 // |ResolveProxy()| request. |
191 EXPECT_TRUE(fetcher_->has_pending_request()); | 191 EXPECT_TRUE(fetcher_->has_pending_request()); |
192 EXPECT_EQ(GURL(kPacUrl), fetcher_->pending_request_url()); | 192 EXPECT_EQ(GURL(kPacUrl), fetcher_->pending_request_url()); |
193 fetcher_->NotifyFetchCompletion(OK, kDnsResolvePacScript); | 193 fetcher_->NotifyFetchCompletion(OK, kDnsResolvePacScript); |
194 | 194 |
195 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 195 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
196 EXPECT_EQ("QUIC bar:4321", info.ToPacString()); | 196 EXPECT_EQ("QUIC bar:4321", info.ToPacString()); |
197 EXPECT_EQ(1u, mock_host_resolver_.num_resolve()); | 197 EXPECT_EQ(1u, mock_host_resolver_.num_resolve()); |
198 proxy_service_.reset(); | 198 proxy_service_.reset(); |
199 on_delete_closure_.WaitForResult(); | 199 on_delete_closure_.WaitForResult(); |
200 | 200 |
201 TestNetLogEntry::List entries; | 201 TestNetLogEntry::List entries; |
202 bound_net_log.GetEntries(&entries); | 202 test_net_log.GetEntries(&entries); |
203 // There should be one entry with type TYPE_HOST_RESOLVER_IMPL_JOB. | 203 // There should be one entry with type TYPE_HOST_RESOLVER_IMPL_JOB. |
204 EXPECT_EQ(1, std::count_if(entries.begin(), entries.end(), | 204 EXPECT_EQ(1, std::count_if(entries.begin(), entries.end(), |
205 [](const TestNetLogEntry& entry) { | 205 [](const TestNetLogEntry& entry) { |
206 return entry.type == | 206 return entry.type == |
207 NetLogEventType::HOST_RESOLVER_IMPL_JOB; | 207 NetLogEventType::HOST_RESOLVER_IMPL_JOB; |
208 })); | 208 })); |
209 } | 209 } |
210 | 210 |
211 TEST_F(ProxyServiceMojoTest, Error) { | 211 TEST_F(ProxyServiceMojoTest, Error) { |
212 ProxyInfo info; | 212 ProxyInfo info; |
213 TestCompletionCallback callback; | 213 TestCompletionCallback callback; |
214 BoundTestNetLog bound_net_log; | 214 BoundTestNetLog test_net_log; |
215 EXPECT_EQ(ERR_IO_PENDING, | 215 EXPECT_EQ(ERR_IO_PENDING, |
216 proxy_service_->ResolveProxy(GURL("http://foo"), std::string(), | 216 proxy_service_->ResolveProxy(GURL("http://foo"), std::string(), |
217 &info, callback.callback(), nullptr, | 217 &info, callback.callback(), nullptr, |
218 nullptr, bound_net_log.bound())); | 218 nullptr, test_net_log.bound())); |
219 | 219 |
220 // Proxy script fetcher should have a fetch triggered by the first | 220 // Proxy script fetcher should have a fetch triggered by the first |
221 // |ResolveProxy()| request. | 221 // |ResolveProxy()| request. |
222 EXPECT_TRUE(fetcher_->has_pending_request()); | 222 EXPECT_TRUE(fetcher_->has_pending_request()); |
223 EXPECT_EQ(GURL(kPacUrl), fetcher_->pending_request_url()); | 223 EXPECT_EQ(GURL(kPacUrl), fetcher_->pending_request_url()); |
224 fetcher_->NotifyFetchCompletion(OK, kThrowingPacScript); | 224 fetcher_->NotifyFetchCompletion(OK, kThrowingPacScript); |
225 | 225 |
226 network_delegate_.event_waiter().WaitForEvent( | 226 network_delegate_.event_waiter().WaitForEvent( |
227 TestNetworkDelegate::PAC_SCRIPT_ERROR); | 227 TestNetworkDelegate::PAC_SCRIPT_ERROR); |
228 | 228 |
229 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 229 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
230 EXPECT_EQ("DIRECT", info.ToPacString()); | 230 EXPECT_EQ("DIRECT", info.ToPacString()); |
231 EXPECT_EQ(0u, mock_host_resolver_.num_resolve()); | 231 EXPECT_EQ(0u, mock_host_resolver_.num_resolve()); |
232 | 232 |
233 TestNetLogEntry::List entries; | 233 TestNetLogEntry::List entries; |
234 bound_net_log.GetEntries(&entries); | 234 test_net_log.GetEntries(&entries); |
235 CheckCapturedNetLogEntries(entries); | 235 CheckCapturedNetLogEntries(entries); |
236 entries.clear(); | 236 entries.clear(); |
237 net_log_.GetEntries(&entries); | 237 net_log_.GetEntries(&entries); |
238 CheckCapturedNetLogEntries(entries); | 238 CheckCapturedNetLogEntries(entries); |
239 } | 239 } |
240 | 240 |
241 TEST_F(ProxyServiceMojoTest, ErrorOnInitialization) { | 241 TEST_F(ProxyServiceMojoTest, ErrorOnInitialization) { |
242 ProxyInfo info; | 242 ProxyInfo info; |
243 TestCompletionCallback callback; | 243 TestCompletionCallback callback; |
244 EXPECT_EQ(ERR_IO_PENDING, | 244 EXPECT_EQ(ERR_IO_PENDING, |
245 proxy_service_->ResolveProxy(GURL("http://foo"), std::string(), | 245 proxy_service_->ResolveProxy(GURL("http://foo"), std::string(), |
246 &info, callback.callback(), nullptr, | 246 &info, callback.callback(), nullptr, |
247 nullptr, BoundNetLog())); | 247 nullptr, NetLogWithSource())); |
248 | 248 |
249 // Proxy script fetcher should have a fetch triggered by the first | 249 // Proxy script fetcher should have a fetch triggered by the first |
250 // |ResolveProxy()| request. | 250 // |ResolveProxy()| request. |
251 EXPECT_TRUE(fetcher_->has_pending_request()); | 251 EXPECT_TRUE(fetcher_->has_pending_request()); |
252 EXPECT_EQ(GURL(kPacUrl), fetcher_->pending_request_url()); | 252 EXPECT_EQ(GURL(kPacUrl), fetcher_->pending_request_url()); |
253 fetcher_->NotifyFetchCompletion(OK, kThrowingOnLoadPacScript); | 253 fetcher_->NotifyFetchCompletion(OK, kThrowingOnLoadPacScript); |
254 | 254 |
255 network_delegate_.event_waiter().WaitForEvent( | 255 network_delegate_.event_waiter().WaitForEvent( |
256 TestNetworkDelegate::PAC_SCRIPT_ERROR); | 256 TestNetworkDelegate::PAC_SCRIPT_ERROR); |
257 | 257 |
258 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 258 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
259 EXPECT_EQ("DIRECT", info.ToPacString()); | 259 EXPECT_EQ("DIRECT", info.ToPacString()); |
260 EXPECT_EQ(0u, mock_host_resolver_.num_resolve()); | 260 EXPECT_EQ(0u, mock_host_resolver_.num_resolve()); |
261 | 261 |
262 TestNetLogEntry::List entries; | 262 TestNetLogEntry::List entries; |
263 net_log_.GetEntries(&entries); | 263 net_log_.GetEntries(&entries); |
264 CheckCapturedNetLogEntries(entries); | 264 CheckCapturedNetLogEntries(entries); |
265 } | 265 } |
266 | 266 |
267 } // namespace net | 267 } // namespace net |
OLD | NEW |