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 <string> | 7 #include <string> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/files/file_util.h" | 10 #include "base/files/file_util.h" |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 | 158 |
159 TEST_F(ProxyResolverV8TracingTest, Simple) { | 159 TEST_F(ProxyResolverV8TracingTest, Simple) { |
160 MockCachingHostResolver host_resolver; | 160 MockCachingHostResolver host_resolver; |
161 MockBindings mock_bindings(&host_resolver); | 161 MockBindings mock_bindings(&host_resolver); |
162 | 162 |
163 std::unique_ptr<ProxyResolverV8Tracing> resolver = | 163 std::unique_ptr<ProxyResolverV8Tracing> resolver = |
164 CreateResolver(mock_bindings.CreateBindings(), "simple.js"); | 164 CreateResolver(mock_bindings.CreateBindings(), "simple.js"); |
165 | 165 |
166 TestCompletionCallback callback; | 166 TestCompletionCallback callback; |
167 ProxyInfo proxy_info; | 167 ProxyInfo proxy_info; |
| 168 std::unique_ptr<ProxyResolver::Request> req; |
168 | 169 |
169 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, | 170 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, |
170 callback.callback(), NULL, | 171 callback.callback(), &req, |
171 mock_bindings.CreateBindings()); | 172 mock_bindings.CreateBindings()); |
172 | 173 |
173 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 174 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
174 | 175 |
175 EXPECT_EQ("foo:99", proxy_info.proxy_server().ToURI()); | 176 EXPECT_EQ("foo:99", proxy_info.proxy_server().ToURI()); |
176 | 177 |
177 EXPECT_EQ(0u, host_resolver.num_resolve()); | 178 EXPECT_EQ(0u, host_resolver.num_resolve()); |
178 | 179 |
179 // There were no alerts or errors. | 180 // There were no alerts or errors. |
180 EXPECT_TRUE(mock_bindings.GetAlerts().empty()); | 181 EXPECT_TRUE(mock_bindings.GetAlerts().empty()); |
181 EXPECT_TRUE(mock_bindings.GetErrors().empty()); | 182 EXPECT_TRUE(mock_bindings.GetErrors().empty()); |
182 } | 183 } |
183 | 184 |
184 TEST_F(ProxyResolverV8TracingTest, JavascriptError) { | 185 TEST_F(ProxyResolverV8TracingTest, JavascriptError) { |
185 MockCachingHostResolver host_resolver; | 186 MockCachingHostResolver host_resolver; |
186 MockBindings mock_bindings(&host_resolver); | 187 MockBindings mock_bindings(&host_resolver); |
187 | 188 |
188 std::unique_ptr<ProxyResolverV8Tracing> resolver = | 189 std::unique_ptr<ProxyResolverV8Tracing> resolver = |
189 CreateResolver(mock_bindings.CreateBindings(), "error.js"); | 190 CreateResolver(mock_bindings.CreateBindings(), "error.js"); |
190 | 191 |
191 TestCompletionCallback callback; | 192 TestCompletionCallback callback; |
192 ProxyInfo proxy_info; | 193 ProxyInfo proxy_info; |
193 | 194 |
| 195 std::unique_ptr<ProxyResolver::Request> req; |
194 resolver->GetProxyForURL(GURL("http://throw-an-error/"), &proxy_info, | 196 resolver->GetProxyForURL(GURL("http://throw-an-error/"), &proxy_info, |
195 callback.callback(), NULL, | 197 callback.callback(), &req, |
196 mock_bindings.CreateBindings()); | 198 mock_bindings.CreateBindings()); |
197 | 199 |
198 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_PAC_SCRIPT_FAILED)); | 200 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_PAC_SCRIPT_FAILED)); |
199 | 201 |
200 EXPECT_EQ(0u, host_resolver.num_resolve()); | 202 EXPECT_EQ(0u, host_resolver.num_resolve()); |
201 | 203 |
202 // Check the output -- there was 1 alert and 1 javascript error. | 204 // Check the output -- there was 1 alert and 1 javascript error. |
203 ASSERT_EQ(1u, mock_bindings.GetAlerts().size()); | 205 ASSERT_EQ(1u, mock_bindings.GetAlerts().size()); |
204 EXPECT_EQ("Prepare to DIE!", mock_bindings.GetAlerts()[0]); | 206 EXPECT_EQ("Prepare to DIE!", mock_bindings.GetAlerts()[0]); |
205 ASSERT_EQ(1u, mock_bindings.GetErrors().size()); | 207 ASSERT_EQ(1u, mock_bindings.GetErrors().size()); |
206 EXPECT_EQ(5, mock_bindings.GetErrors()[0].first); | 208 EXPECT_EQ(5, mock_bindings.GetErrors()[0].first); |
207 EXPECT_EQ("Uncaught TypeError: Cannot read property 'split' of null", | 209 EXPECT_EQ("Uncaught TypeError: Cannot read property 'split' of null", |
208 mock_bindings.GetErrors()[0].second); | 210 mock_bindings.GetErrors()[0].second); |
209 } | 211 } |
210 | 212 |
211 TEST_F(ProxyResolverV8TracingTest, TooManyAlerts) { | 213 TEST_F(ProxyResolverV8TracingTest, TooManyAlerts) { |
212 MockCachingHostResolver host_resolver; | 214 MockCachingHostResolver host_resolver; |
213 MockBindings mock_bindings(&host_resolver); | 215 MockBindings mock_bindings(&host_resolver); |
214 | 216 |
215 std::unique_ptr<ProxyResolverV8Tracing> resolver = | 217 std::unique_ptr<ProxyResolverV8Tracing> resolver = |
216 CreateResolver(mock_bindings.CreateBindings(), "too_many_alerts.js"); | 218 CreateResolver(mock_bindings.CreateBindings(), "too_many_alerts.js"); |
217 | 219 |
218 TestCompletionCallback callback; | 220 TestCompletionCallback callback; |
219 ProxyInfo proxy_info; | 221 ProxyInfo proxy_info; |
220 | 222 |
| 223 std::unique_ptr<ProxyResolver::Request> req; |
221 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, | 224 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, |
222 callback.callback(), NULL, | 225 callback.callback(), &req, |
223 mock_bindings.CreateBindings()); | 226 mock_bindings.CreateBindings()); |
224 | 227 |
225 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 228 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
226 | 229 |
227 // Iteration1 does a DNS resolve | 230 // Iteration1 does a DNS resolve |
228 // Iteration2 exceeds the alert buffer | 231 // Iteration2 exceeds the alert buffer |
229 // Iteration3 runs in blocking mode and completes | 232 // Iteration3 runs in blocking mode and completes |
230 EXPECT_EQ("foo:3", proxy_info.proxy_server().ToURI()); | 233 EXPECT_EQ("foo:3", proxy_info.proxy_server().ToURI()); |
231 | 234 |
232 EXPECT_EQ(1u, host_resolver.num_resolve()); | 235 EXPECT_EQ(1u, host_resolver.num_resolve()); |
(...skipping 14 matching lines...) Expand all Loading... |
247 TEST_F(ProxyResolverV8TracingTest, TooManyEmptyAlerts) { | 250 TEST_F(ProxyResolverV8TracingTest, TooManyEmptyAlerts) { |
248 MockCachingHostResolver host_resolver; | 251 MockCachingHostResolver host_resolver; |
249 MockBindings mock_bindings(&host_resolver); | 252 MockBindings mock_bindings(&host_resolver); |
250 | 253 |
251 std::unique_ptr<ProxyResolverV8Tracing> resolver = CreateResolver( | 254 std::unique_ptr<ProxyResolverV8Tracing> resolver = CreateResolver( |
252 mock_bindings.CreateBindings(), "too_many_empty_alerts.js"); | 255 mock_bindings.CreateBindings(), "too_many_empty_alerts.js"); |
253 | 256 |
254 TestCompletionCallback callback; | 257 TestCompletionCallback callback; |
255 ProxyInfo proxy_info; | 258 ProxyInfo proxy_info; |
256 | 259 |
| 260 std::unique_ptr<ProxyResolver::Request> req; |
257 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, | 261 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, |
258 callback.callback(), NULL, | 262 callback.callback(), &req, |
259 mock_bindings.CreateBindings()); | 263 mock_bindings.CreateBindings()); |
260 | 264 |
261 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 265 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
262 | 266 |
263 EXPECT_EQ("foo:3", proxy_info.proxy_server().ToURI()); | 267 EXPECT_EQ("foo:3", proxy_info.proxy_server().ToURI()); |
264 | 268 |
265 EXPECT_EQ(1u, host_resolver.num_resolve()); | 269 EXPECT_EQ(1u, host_resolver.num_resolve()); |
266 | 270 |
267 // No errors. | 271 // No errors. |
268 EXPECT_TRUE(mock_bindings.GetErrors().empty()); | 272 EXPECT_TRUE(mock_bindings.GetErrors().empty()); |
(...skipping 24 matching lines...) Expand all Loading... |
293 host_resolver.rules()->AddRuleForAddressFamily( | 297 host_resolver.rules()->AddRuleForAddressFamily( |
294 "*", ADDRESS_FAMILY_IPV4, "122.133.144.155"); | 298 "*", ADDRESS_FAMILY_IPV4, "122.133.144.155"); |
295 host_resolver.rules()->AddRule("*", "133.122.100.200"); | 299 host_resolver.rules()->AddRule("*", "133.122.100.200"); |
296 | 300 |
297 std::unique_ptr<ProxyResolverV8Tracing> resolver = | 301 std::unique_ptr<ProxyResolverV8Tracing> resolver = |
298 CreateResolver(mock_bindings.CreateBindings(), "dns.js"); | 302 CreateResolver(mock_bindings.CreateBindings(), "dns.js"); |
299 | 303 |
300 TestCompletionCallback callback; | 304 TestCompletionCallback callback; |
301 ProxyInfo proxy_info; | 305 ProxyInfo proxy_info; |
302 | 306 |
| 307 std::unique_ptr<ProxyResolver::Request> req; |
303 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, | 308 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, |
304 callback.callback(), NULL, | 309 callback.callback(), &req, |
305 mock_bindings.CreateBindings()); | 310 mock_bindings.CreateBindings()); |
306 | 311 |
307 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 312 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
308 | 313 |
309 // The test does 13 DNS resolution, however only 7 of them are unique. | 314 // The test does 13 DNS resolution, however only 7 of them are unique. |
310 EXPECT_EQ(7u, host_resolver.num_resolve()); | 315 EXPECT_EQ(7u, host_resolver.num_resolve()); |
311 | 316 |
312 const char* kExpectedResult = | 317 const char* kExpectedResult = |
313 "122.133.144.155-" // myIpAddress() | 318 "122.133.144.155-" // myIpAddress() |
314 "null-" // dnsResolve('') | 319 "null-" // dnsResolve('') |
(...skipping 30 matching lines...) Expand all Loading... |
345 host_resolver.rules()->AddRule("foopy", "166.155.144.11"); | 350 host_resolver.rules()->AddRule("foopy", "166.155.144.11"); |
346 host_resolver.rules()->AddRule("*", "122.133.144.155"); | 351 host_resolver.rules()->AddRule("*", "122.133.144.155"); |
347 | 352 |
348 std::unique_ptr<ProxyResolverV8Tracing> resolver = | 353 std::unique_ptr<ProxyResolverV8Tracing> resolver = |
349 CreateResolver(mock_bindings.CreateBindings(), "simple_dns.js"); | 354 CreateResolver(mock_bindings.CreateBindings(), "simple_dns.js"); |
350 | 355 |
351 TestCompletionCallback callback1; | 356 TestCompletionCallback callback1; |
352 TestCompletionCallback callback2; | 357 TestCompletionCallback callback2; |
353 ProxyInfo proxy_info; | 358 ProxyInfo proxy_info; |
354 | 359 |
| 360 std::unique_ptr<ProxyResolver::Request> req; |
355 resolver->GetProxyForURL(GURL("http://foopy/req1"), &proxy_info, | 361 resolver->GetProxyForURL(GURL("http://foopy/req1"), &proxy_info, |
356 callback1.callback(), NULL, | 362 callback1.callback(), &req, |
357 mock_bindings.CreateBindings()); | 363 mock_bindings.CreateBindings()); |
358 | 364 |
359 EXPECT_THAT(callback1.WaitForResult(), IsOk()); | 365 EXPECT_THAT(callback1.WaitForResult(), IsOk()); |
360 | 366 |
361 // The test does 2 DNS resolutions. | 367 // The test does 2 DNS resolutions. |
362 EXPECT_EQ(2u, host_resolver.num_resolve()); | 368 EXPECT_EQ(2u, host_resolver.num_resolve()); |
363 | 369 |
364 // The first request took 2 restarts, hence on g_iteration=3. | 370 // The first request took 2 restarts, hence on g_iteration=3. |
365 EXPECT_EQ("166.155.144.11:3", proxy_info.proxy_server().ToURI()); | 371 EXPECT_EQ("166.155.144.11:3", proxy_info.proxy_server().ToURI()); |
366 | 372 |
| 373 std::unique_ptr<ProxyResolver::Request> req2; |
367 resolver->GetProxyForURL(GURL("http://foopy/req2"), &proxy_info, | 374 resolver->GetProxyForURL(GURL("http://foopy/req2"), &proxy_info, |
368 callback2.callback(), NULL, | 375 callback2.callback(), &req2, |
369 mock_bindings.CreateBindings()); | 376 mock_bindings.CreateBindings()); |
370 | 377 |
371 EXPECT_THAT(callback2.WaitForResult(), IsOk()); | 378 EXPECT_THAT(callback2.WaitForResult(), IsOk()); |
372 | 379 |
373 EXPECT_EQ(4u, host_resolver.num_resolve()); | 380 EXPECT_EQ(4u, host_resolver.num_resolve()); |
374 | 381 |
375 // This time no restarts were required, so g_iteration incremented by 1. | 382 // This time no restarts were required, so g_iteration incremented by 1. |
376 EXPECT_EQ("166.155.144.11:4", proxy_info.proxy_server().ToURI()); | 383 EXPECT_EQ("166.155.144.11:4", proxy_info.proxy_server().ToURI()); |
377 | 384 |
378 // There were no alerts or errors. | 385 // There were no alerts or errors. |
(...skipping 11 matching lines...) Expand all Loading... |
390 host_resolver.rules()->AddRule("host1", "166.155.144.11"); | 397 host_resolver.rules()->AddRule("host1", "166.155.144.11"); |
391 host_resolver.rules()->AddRule("crazy4", "133.199.111.4"); | 398 host_resolver.rules()->AddRule("crazy4", "133.199.111.4"); |
392 host_resolver.rules()->AddRule("*", "122.133.144.155"); | 399 host_resolver.rules()->AddRule("*", "122.133.144.155"); |
393 | 400 |
394 std::unique_ptr<ProxyResolverV8Tracing> resolver = | 401 std::unique_ptr<ProxyResolverV8Tracing> resolver = |
395 CreateResolver(mock_bindings.CreateBindings(), "global_sideffects1.js"); | 402 CreateResolver(mock_bindings.CreateBindings(), "global_sideffects1.js"); |
396 | 403 |
397 TestCompletionCallback callback; | 404 TestCompletionCallback callback; |
398 ProxyInfo proxy_info; | 405 ProxyInfo proxy_info; |
399 | 406 |
| 407 std::unique_ptr<ProxyResolver::Request> req; |
400 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, | 408 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, |
401 callback.callback(), NULL, | 409 callback.callback(), &req, |
402 mock_bindings.CreateBindings()); | 410 mock_bindings.CreateBindings()); |
403 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 411 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
404 | 412 |
405 // The script itself only does 2 DNS resolves per execution, however it | 413 // The script itself only does 2 DNS resolves per execution, however it |
406 // constructs the hostname using a global counter which changes on each | 414 // constructs the hostname using a global counter which changes on each |
407 // invocation. | 415 // invocation. |
408 EXPECT_EQ(3u, host_resolver.num_resolve()); | 416 EXPECT_EQ(3u, host_resolver.num_resolve()); |
409 | 417 |
410 EXPECT_EQ("166.155.144.11-133.199.111.4:100", | 418 EXPECT_EQ("166.155.144.11-133.199.111.4:100", |
411 proxy_info.proxy_server().ToURI()); | 419 proxy_info.proxy_server().ToURI()); |
(...skipping 17 matching lines...) Expand all Loading... |
429 host_resolver.rules()->AddRule("host3", "166.155.144.33"); | 437 host_resolver.rules()->AddRule("host3", "166.155.144.33"); |
430 host_resolver.rules()->AddRule("host4", "166.155.144.44"); | 438 host_resolver.rules()->AddRule("host4", "166.155.144.44"); |
431 host_resolver.rules()->AddRule("*", "122.133.144.155"); | 439 host_resolver.rules()->AddRule("*", "122.133.144.155"); |
432 | 440 |
433 std::unique_ptr<ProxyResolverV8Tracing> resolver = | 441 std::unique_ptr<ProxyResolverV8Tracing> resolver = |
434 CreateResolver(mock_bindings.CreateBindings(), "global_sideffects2.js"); | 442 CreateResolver(mock_bindings.CreateBindings(), "global_sideffects2.js"); |
435 | 443 |
436 TestCompletionCallback callback; | 444 TestCompletionCallback callback; |
437 ProxyInfo proxy_info; | 445 ProxyInfo proxy_info; |
438 | 446 |
| 447 std::unique_ptr<ProxyResolver::Request> req; |
439 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, | 448 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, |
440 callback.callback(), NULL, | 449 callback.callback(), &req, |
441 mock_bindings.CreateBindings()); | 450 mock_bindings.CreateBindings()); |
442 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 451 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
443 | 452 |
444 EXPECT_EQ(3u, host_resolver.num_resolve()); | 453 EXPECT_EQ(3u, host_resolver.num_resolve()); |
445 | 454 |
446 EXPECT_EQ("166.155.144.44:100", proxy_info.proxy_server().ToURI()); | 455 EXPECT_EQ("166.155.144.44:100", proxy_info.proxy_server().ToURI()); |
447 | 456 |
448 // There were no alerts or errors. | 457 // There were no alerts or errors. |
449 EXPECT_TRUE(mock_bindings.GetAlerts().empty()); | 458 EXPECT_TRUE(mock_bindings.GetAlerts().empty()); |
450 EXPECT_TRUE(mock_bindings.GetErrors().empty()); | 459 EXPECT_TRUE(mock_bindings.GetErrors().empty()); |
451 } | 460 } |
452 | 461 |
453 // This test runs a weird PAC script that yields a never ending sequence | 462 // This test runs a weird PAC script that yields a never ending sequence |
454 // of DNS resolves when restarting. Running it will hit the maximum | 463 // of DNS resolves when restarting. Running it will hit the maximum |
455 // DNS resolves per request limit (20) after which every DNS resolve will | 464 // DNS resolves per request limit (20) after which every DNS resolve will |
456 // fail. | 465 // fail. |
457 TEST_F(ProxyResolverV8TracingTest, InfiniteDNSSequence) { | 466 TEST_F(ProxyResolverV8TracingTest, InfiniteDNSSequence) { |
458 MockCachingHostResolver host_resolver; | 467 MockCachingHostResolver host_resolver; |
459 MockBindings mock_bindings(&host_resolver); | 468 MockBindings mock_bindings(&host_resolver); |
460 | 469 |
461 host_resolver.rules()->AddRule("host*", "166.155.144.11"); | 470 host_resolver.rules()->AddRule("host*", "166.155.144.11"); |
462 host_resolver.rules()->AddRule("*", "122.133.144.155"); | 471 host_resolver.rules()->AddRule("*", "122.133.144.155"); |
463 | 472 |
464 std::unique_ptr<ProxyResolverV8Tracing> resolver = | 473 std::unique_ptr<ProxyResolverV8Tracing> resolver = |
465 CreateResolver(mock_bindings.CreateBindings(), "global_sideffects3.js"); | 474 CreateResolver(mock_bindings.CreateBindings(), "global_sideffects3.js"); |
466 | 475 |
467 TestCompletionCallback callback; | 476 TestCompletionCallback callback; |
468 ProxyInfo proxy_info; | 477 ProxyInfo proxy_info; |
469 | 478 |
| 479 std::unique_ptr<ProxyResolver::Request> req; |
470 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, | 480 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, |
471 callback.callback(), NULL, | 481 callback.callback(), &req, |
472 mock_bindings.CreateBindings()); | 482 mock_bindings.CreateBindings()); |
473 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 483 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
474 | 484 |
475 EXPECT_EQ(20u, host_resolver.num_resolve()); | 485 EXPECT_EQ(20u, host_resolver.num_resolve()); |
476 | 486 |
477 EXPECT_EQ( | 487 EXPECT_EQ( |
478 "166.155.144.11-166.155.144.11-166.155.144.11-166.155.144.11-" | 488 "166.155.144.11-166.155.144.11-166.155.144.11-166.155.144.11-" |
479 "166.155.144.11-166.155.144.11-166.155.144.11-166.155.144.11-" | 489 "166.155.144.11-166.155.144.11-166.155.144.11-166.155.144.11-" |
480 "166.155.144.11-166.155.144.11-166.155.144.11-166.155.144.11-" | 490 "166.155.144.11-166.155.144.11-166.155.144.11-166.155.144.11-" |
481 "166.155.144.11-166.155.144.11-166.155.144.11-166.155.144.11-" | 491 "166.155.144.11-166.155.144.11-166.155.144.11-166.155.144.11-" |
(...skipping 18 matching lines...) Expand all Loading... |
500 | 510 |
501 host_resolver.rules()->AddRule("host*", "166.155.144.11"); | 511 host_resolver.rules()->AddRule("host*", "166.155.144.11"); |
502 host_resolver.rules()->AddRule("*", "122.133.144.155"); | 512 host_resolver.rules()->AddRule("*", "122.133.144.155"); |
503 | 513 |
504 std::unique_ptr<ProxyResolverV8Tracing> resolver = | 514 std::unique_ptr<ProxyResolverV8Tracing> resolver = |
505 CreateResolver(mock_bindings.CreateBindings(), "global_sideffects4.js"); | 515 CreateResolver(mock_bindings.CreateBindings(), "global_sideffects4.js"); |
506 | 516 |
507 TestCompletionCallback callback; | 517 TestCompletionCallback callback; |
508 ProxyInfo proxy_info; | 518 ProxyInfo proxy_info; |
509 | 519 |
| 520 std::unique_ptr<ProxyResolver::Request> req; |
510 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, | 521 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, |
511 callback.callback(), NULL, | 522 callback.callback(), &req, |
512 mock_bindings.CreateBindings()); | 523 mock_bindings.CreateBindings()); |
513 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 524 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
514 | 525 |
515 EXPECT_EQ(20u, host_resolver.num_resolve()); | 526 EXPECT_EQ(20u, host_resolver.num_resolve()); |
516 | 527 |
517 EXPECT_EQ("null21:34", proxy_info.proxy_server().ToURI()); | 528 EXPECT_EQ("null21:34", proxy_info.proxy_server().ToURI()); |
518 | 529 |
519 // No errors. | 530 // No errors. |
520 EXPECT_TRUE(mock_bindings.GetErrors().empty()); | 531 EXPECT_TRUE(mock_bindings.GetErrors().empty()); |
521 | 532 |
(...skipping 18 matching lines...) Expand all Loading... |
540 | 551 |
541 host_resolver.rules()->ClearRules(); | 552 host_resolver.rules()->ClearRules(); |
542 host_resolver.GetHostCache()->clear(); | 553 host_resolver.GetHostCache()->clear(); |
543 | 554 |
544 host_resolver.rules()->AddRule("host1", "145.88.13.3"); | 555 host_resolver.rules()->AddRule("host1", "145.88.13.3"); |
545 host_resolver.rules()->AddRule("host2", "137.89.8.45"); | 556 host_resolver.rules()->AddRule("host2", "137.89.8.45"); |
546 | 557 |
547 TestCompletionCallback callback; | 558 TestCompletionCallback callback; |
548 ProxyInfo proxy_info; | 559 ProxyInfo proxy_info; |
549 | 560 |
| 561 std::unique_ptr<ProxyResolver::Request> req; |
550 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, | 562 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, |
551 callback.callback(), NULL, | 563 callback.callback(), &req, |
552 mock_bindings.CreateBindings()); | 564 mock_bindings.CreateBindings()); |
553 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 565 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
554 | 566 |
555 // Fetched host1 and host2 again, since the ones done during initialization | 567 // Fetched host1 and host2 again, since the ones done during initialization |
556 // should not have been cached. | 568 // should not have been cached. |
557 EXPECT_EQ(4u, host_resolver.num_resolve()); | 569 EXPECT_EQ(4u, host_resolver.num_resolve()); |
558 | 570 |
559 EXPECT_EQ("91.13.12.1-91.13.12.2-145.88.13.3-137.89.8.45:99", | 571 EXPECT_EQ("91.13.12.1-91.13.12.2-145.88.13.3-137.89.8.45:99", |
560 proxy_info.proxy_server().ToURI()); | 572 proxy_info.proxy_server().ToURI()); |
561 | 573 |
(...skipping 24 matching lines...) Expand all Loading... |
586 MockCachingHostResolver host_resolver; | 598 MockCachingHostResolver host_resolver; |
587 MockBindings mock_bindings(&host_resolver); | 599 MockBindings mock_bindings(&host_resolver); |
588 | 600 |
589 host_resolver.rules()->AddSimulatedFailure("*"); | 601 host_resolver.rules()->AddSimulatedFailure("*"); |
590 | 602 |
591 std::unique_ptr<ProxyResolverV8Tracing> resolver = | 603 std::unique_ptr<ProxyResolverV8Tracing> resolver = |
592 CreateResolver(mock_bindings.CreateBindings(), "dns.js"); | 604 CreateResolver(mock_bindings.CreateBindings(), "dns.js"); |
593 | 605 |
594 const size_t kNumRequests = 5; | 606 const size_t kNumRequests = 5; |
595 ProxyInfo proxy_info[kNumRequests]; | 607 ProxyInfo proxy_info[kNumRequests]; |
596 ProxyResolver::RequestHandle request[kNumRequests]; | 608 std::unique_ptr<ProxyResolver::Request> request[kNumRequests]; |
597 | 609 |
598 for (size_t i = 0; i < kNumRequests; ++i) { | 610 for (size_t i = 0; i < kNumRequests; ++i) { |
599 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info[i], | 611 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info[i], |
600 base::Bind(&CrashCallback), &request[i], | 612 base::Bind(&CrashCallback), &request[i], |
601 mock_bindings.CreateBindings()); | 613 mock_bindings.CreateBindings()); |
602 } | 614 } |
603 | 615 |
604 for (size_t i = 0; i < kNumRequests; ++i) { | 616 for (size_t i = 0; i < kNumRequests; ++i) { |
605 resolver->CancelRequest(request[i]); | 617 request[i].reset(); |
606 } | 618 } |
607 } | 619 } |
608 | 620 |
609 // Note the execution order for this test can vary. Since multiple | 621 // Note the execution order for this test can vary. Since multiple |
610 // threads are involved, the cancellation may be received a different | 622 // threads are involved, the cancellation may be received a different |
611 // times. | 623 // times. |
612 TEST_F(ProxyResolverV8TracingTest, CancelSome) { | 624 TEST_F(ProxyResolverV8TracingTest, CancelSome) { |
613 MockCachingHostResolver host_resolver; | 625 MockCachingHostResolver host_resolver; |
614 MockBindings mock_bindings(&host_resolver); | 626 MockBindings mock_bindings(&host_resolver); |
615 | 627 |
616 host_resolver.rules()->AddSimulatedFailure("*"); | 628 host_resolver.rules()->AddSimulatedFailure("*"); |
617 | 629 |
618 std::unique_ptr<ProxyResolverV8Tracing> resolver = | 630 std::unique_ptr<ProxyResolverV8Tracing> resolver = |
619 CreateResolver(mock_bindings.CreateBindings(), "dns.js"); | 631 CreateResolver(mock_bindings.CreateBindings(), "dns.js"); |
620 | 632 |
621 ProxyInfo proxy_info1; | 633 ProxyInfo proxy_info1; |
622 ProxyInfo proxy_info2; | 634 ProxyInfo proxy_info2; |
623 ProxyResolver::RequestHandle request1; | 635 std::unique_ptr<ProxyResolver::Request> request1; |
624 ProxyResolver::RequestHandle request2; | 636 std::unique_ptr<ProxyResolver::Request> request2; |
625 TestCompletionCallback callback; | 637 TestCompletionCallback callback; |
626 | 638 |
627 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info1, | 639 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info1, |
628 base::Bind(&CrashCallback), &request1, | 640 base::Bind(&CrashCallback), &request1, |
629 mock_bindings.CreateBindings()); | 641 mock_bindings.CreateBindings()); |
630 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info2, | 642 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info2, |
631 callback.callback(), &request2, | 643 callback.callback(), &request2, |
632 mock_bindings.CreateBindings()); | 644 mock_bindings.CreateBindings()); |
633 | 645 |
634 resolver->CancelRequest(request1); | 646 request1.reset(); |
635 | 647 |
636 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 648 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
637 } | 649 } |
638 | 650 |
639 // Cancel a request after it has finished running on the worker thread, and has | 651 // Cancel a request after it has finished running on the worker thread, and has |
640 // posted a task the completion task back to origin thread. | 652 // posted a task the completion task back to origin thread. |
641 TEST_F(ProxyResolverV8TracingTest, CancelWhilePendingCompletionTask) { | 653 TEST_F(ProxyResolverV8TracingTest, CancelWhilePendingCompletionTask) { |
642 MockCachingHostResolver host_resolver; | 654 MockCachingHostResolver host_resolver; |
643 MockBindings mock_bindings(&host_resolver); | 655 MockBindings mock_bindings(&host_resolver); |
644 | 656 |
645 host_resolver.rules()->AddSimulatedFailure("*"); | 657 host_resolver.rules()->AddSimulatedFailure("*"); |
646 | 658 |
647 std::unique_ptr<ProxyResolverV8Tracing> resolver = | 659 std::unique_ptr<ProxyResolverV8Tracing> resolver = |
648 CreateResolver(mock_bindings.CreateBindings(), "error.js"); | 660 CreateResolver(mock_bindings.CreateBindings(), "error.js"); |
649 | 661 |
650 ProxyInfo proxy_info1; | 662 ProxyInfo proxy_info1; |
651 ProxyInfo proxy_info2; | 663 ProxyInfo proxy_info2; |
652 ProxyResolver::RequestHandle request1; | 664 std::unique_ptr<ProxyResolver::Request> request1; |
653 ProxyResolver::RequestHandle request2; | 665 std::unique_ptr<ProxyResolver::Request> request2; |
654 TestCompletionCallback callback; | 666 TestCompletionCallback callback; |
655 | 667 |
656 resolver->GetProxyForURL(GURL("http://throw-an-error/"), &proxy_info1, | 668 resolver->GetProxyForURL(GURL("http://throw-an-error/"), &proxy_info1, |
657 base::Bind(&CrashCallback), &request1, | 669 base::Bind(&CrashCallback), &request1, |
658 mock_bindings.CreateBindings()); | 670 mock_bindings.CreateBindings()); |
659 | 671 |
660 // Wait until the first request has finished running on the worker thread. | 672 // Wait until the first request has finished running on the worker thread. |
661 // Cancel the first request, while it is running its completion task on | 673 // Cancel the first request, while it is running its completion task on |
662 // the origin thread. | 674 // the origin thread. Reset deletes Request opject which cancels the request. |
663 mock_bindings.RunOnError(base::Bind(&ProxyResolverV8Tracing::CancelRequest, | 675 mock_bindings.RunOnError( |
664 base::Unretained(resolver.get()), | 676 base::Bind(&std::unique_ptr<ProxyResolver::Request>::reset, |
665 request1)); | 677 base::Unretained(&request1), nullptr)); |
666 | 678 |
667 // Start another request, to make sure it is able to complete. | 679 // Start another request, to make sure it is able to complete. |
668 resolver->GetProxyForURL(GURL("http://i-have-no-idea-what-im-doing/"), | 680 resolver->GetProxyForURL(GURL("http://i-have-no-idea-what-im-doing/"), |
669 &proxy_info2, callback.callback(), &request2, | 681 &proxy_info2, callback.callback(), &request2, |
670 mock_bindings.CreateBindings()); | 682 mock_bindings.CreateBindings()); |
671 | 683 |
672 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 684 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
673 | 685 |
674 EXPECT_EQ("i-approve-this-message:42", proxy_info2.proxy_server().ToURI()); | 686 EXPECT_EQ("i-approve-this-message:42", proxy_info2.proxy_server().ToURI()); |
675 } | 687 } |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
759 // when the request has an outstanding DNS request in flight. | 771 // when the request has an outstanding DNS request in flight. |
760 TEST_F(ProxyResolverV8TracingTest, CancelWhileOutstandingNonBlockingDns) { | 772 TEST_F(ProxyResolverV8TracingTest, CancelWhileOutstandingNonBlockingDns) { |
761 BlockableHostResolver host_resolver; | 773 BlockableHostResolver host_resolver; |
762 MockBindings mock_bindings(&host_resolver); | 774 MockBindings mock_bindings(&host_resolver); |
763 | 775 |
764 std::unique_ptr<ProxyResolverV8Tracing> resolver = | 776 std::unique_ptr<ProxyResolverV8Tracing> resolver = |
765 CreateResolver(mock_bindings.CreateBindings(), "dns.js"); | 777 CreateResolver(mock_bindings.CreateBindings(), "dns.js"); |
766 | 778 |
767 ProxyInfo proxy_info1; | 779 ProxyInfo proxy_info1; |
768 ProxyInfo proxy_info2; | 780 ProxyInfo proxy_info2; |
769 ProxyResolver::RequestHandle request1; | 781 std::unique_ptr<ProxyResolver::Request> request1; |
770 ProxyResolver::RequestHandle request2; | 782 std::unique_ptr<ProxyResolver::Request> request2; |
771 | 783 |
772 resolver->GetProxyForURL(GURL("http://foo/req1"), &proxy_info1, | 784 resolver->GetProxyForURL(GURL("http://foo/req1"), &proxy_info1, |
773 base::Bind(&CrashCallback), &request1, | 785 base::Bind(&CrashCallback), &request1, |
774 mock_bindings.CreateBindings()); | 786 mock_bindings.CreateBindings()); |
775 | 787 |
776 host_resolver.WaitUntilRequestIsReceived(); | 788 host_resolver.WaitUntilRequestIsReceived(); |
777 | 789 |
778 resolver->GetProxyForURL(GURL("http://foo/req2"), &proxy_info2, | 790 resolver->GetProxyForURL(GURL("http://foo/req2"), &proxy_info2, |
779 base::Bind(&CrashCallback), &request2, | 791 base::Bind(&CrashCallback), &request2, |
780 mock_bindings.CreateBindings()); | 792 mock_bindings.CreateBindings()); |
781 | 793 |
782 host_resolver.WaitUntilRequestIsReceived(); | 794 host_resolver.WaitUntilRequestIsReceived(); |
783 | 795 |
784 resolver->CancelRequest(request1); | 796 request1.reset(); |
785 resolver->CancelRequest(request2); | 797 request2.reset(); |
786 | 798 |
787 EXPECT_EQ(2, host_resolver.num_cancelled_requests()); | 799 EXPECT_EQ(2, host_resolver.num_cancelled_requests()); |
788 | 800 |
789 // After leaving this scope, the ProxyResolver is destroyed. | 801 // After leaving this scope, the ProxyResolver is destroyed. |
790 // This should not cause any problems, as the outstanding work | 802 // This should not cause any problems, as the outstanding work |
791 // should have been cancelled. | 803 // should have been cancelled. |
792 } | 804 } |
793 | 805 |
794 void CancelRequestAndPause(ProxyResolverV8Tracing* resolver, | 806 void CancelRequestAndPause(std::unique_ptr<ProxyResolver::Request>* request) { |
795 ProxyResolver::RequestHandle request) { | 807 request->reset(); |
796 resolver->CancelRequest(request); | |
797 | 808 |
798 // Sleep for a little bit. This makes it more likely for the worker | 809 // Sleep for a little bit. This makes it more likely for the worker |
799 // thread to have returned from its call, and serves as a regression | 810 // thread to have returned from its call, and serves as a regression |
800 // test for http://crbug.com/173373. | 811 // test for http://crbug.com/173373. |
801 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(30)); | 812 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(30)); |
802 } | 813 } |
803 | 814 |
804 // In non-blocking mode, the worker thread actually does block for | 815 // In non-blocking mode, the worker thread actually does block for |
805 // a short time to see if the result is in the DNS cache. Test | 816 // a short time to see if the result is in the DNS cache. Test |
806 // cancellation while the worker thread is waiting on this event. | 817 // cancellation while the worker thread is waiting on this event. |
807 TEST_F(ProxyResolverV8TracingTest, CancelWhileBlockedInNonBlockingDns) { | 818 TEST_F(ProxyResolverV8TracingTest, CancelWhileBlockedInNonBlockingDns) { |
808 BlockableHostResolver host_resolver; | 819 BlockableHostResolver host_resolver; |
809 MockBindings mock_bindings(&host_resolver); | 820 MockBindings mock_bindings(&host_resolver); |
810 | 821 |
811 std::unique_ptr<ProxyResolverV8Tracing> resolver = | 822 std::unique_ptr<ProxyResolverV8Tracing> resolver = |
812 CreateResolver(mock_bindings.CreateBindings(), "dns.js"); | 823 CreateResolver(mock_bindings.CreateBindings(), "dns.js"); |
813 | 824 |
814 ProxyInfo proxy_info; | 825 ProxyInfo proxy_info; |
815 ProxyResolver::RequestHandle request; | 826 std::unique_ptr<ProxyResolver::Request> request; |
816 | 827 |
817 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, | 828 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, |
818 base::Bind(&CrashCallback), &request, | 829 base::Bind(&CrashCallback), &request, |
819 mock_bindings.CreateBindings()); | 830 mock_bindings.CreateBindings()); |
820 | 831 |
821 host_resolver.SetAction( | 832 host_resolver.SetAction(base::Bind(CancelRequestAndPause, &request)); |
822 base::Bind(CancelRequestAndPause, resolver.get(), request)); | |
823 | 833 |
824 host_resolver.WaitUntilRequestIsReceived(); | 834 host_resolver.WaitUntilRequestIsReceived(); |
825 } | 835 } |
826 | 836 |
827 // Cancel the request while there is a pending DNS request, however before | 837 // Cancel the request while there is a pending DNS request, however before |
828 // the request is sent to the host resolver. | 838 // the request is sent to the host resolver. |
829 TEST_F(ProxyResolverV8TracingTest, CancelWhileBlockedInNonBlockingDns2) { | 839 TEST_F(ProxyResolverV8TracingTest, CancelWhileBlockedInNonBlockingDns2) { |
830 MockCachingHostResolver host_resolver; | 840 MockCachingHostResolver host_resolver; |
831 MockBindings mock_bindings(&host_resolver); | 841 MockBindings mock_bindings(&host_resolver); |
832 | 842 |
833 std::unique_ptr<ProxyResolverV8Tracing> resolver = | 843 std::unique_ptr<ProxyResolverV8Tracing> resolver = |
834 CreateResolver(mock_bindings.CreateBindings(), "dns.js"); | 844 CreateResolver(mock_bindings.CreateBindings(), "dns.js"); |
835 | 845 |
836 ProxyInfo proxy_info; | 846 ProxyInfo proxy_info; |
837 ProxyResolver::RequestHandle request; | 847 std::unique_ptr<ProxyResolver::Request> request; |
838 | 848 |
839 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, | 849 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, |
840 base::Bind(&CrashCallback), &request, | 850 base::Bind(&CrashCallback), &request, |
841 mock_bindings.CreateBindings()); | 851 mock_bindings.CreateBindings()); |
842 | 852 |
843 // Wait a bit, so the DNS task has hopefully been posted. The test will | 853 // Wait a bit, so the DNS task has hopefully been posted. The test will |
844 // work whatever the delay is here, but it is most useful if the delay | 854 // work whatever the delay is here, but it is most useful if the delay |
845 // is large enough to allow a task to be posted back. | 855 // is large enough to allow a task to be posted back. |
846 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(10)); | 856 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(10)); |
847 resolver->CancelRequest(request); | 857 request.reset(); |
848 | 858 |
849 EXPECT_EQ(0u, host_resolver.num_resolve()); | 859 EXPECT_EQ(0u, host_resolver.num_resolve()); |
850 } | 860 } |
851 | 861 |
852 TEST_F(ProxyResolverV8TracingTest, | 862 TEST_F(ProxyResolverV8TracingTest, |
853 CancelCreateResolverWhileOutstandingBlockingDns) { | 863 CancelCreateResolverWhileOutstandingBlockingDns) { |
854 BlockableHostResolver host_resolver; | 864 BlockableHostResolver host_resolver; |
855 MockBindings mock_bindings(&host_resolver); | 865 MockBindings mock_bindings(&host_resolver); |
856 | 866 |
857 std::unique_ptr<ProxyResolverV8TracingFactory> factory( | 867 std::unique_ptr<ProxyResolverV8TracingFactory> factory( |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
911 | 921 |
912 host_resolver.rules()->AddRule("host1", "182.111.0.222"); | 922 host_resolver.rules()->AddRule("host1", "182.111.0.222"); |
913 host_resolver.rules()->AddRule("host2", "111.33.44.55"); | 923 host_resolver.rules()->AddRule("host2", "111.33.44.55"); |
914 | 924 |
915 std::unique_ptr<ProxyResolverV8Tracing> resolver = | 925 std::unique_ptr<ProxyResolverV8Tracing> resolver = |
916 CreateResolver(mock_bindings.CreateBindings(), "terminate.js"); | 926 CreateResolver(mock_bindings.CreateBindings(), "terminate.js"); |
917 | 927 |
918 TestCompletionCallback callback; | 928 TestCompletionCallback callback; |
919 ProxyInfo proxy_info; | 929 ProxyInfo proxy_info; |
920 | 930 |
| 931 std::unique_ptr<ProxyResolver::Request> req; |
921 resolver->GetProxyForURL(GURL("http://foopy/req1"), &proxy_info, | 932 resolver->GetProxyForURL(GURL("http://foopy/req1"), &proxy_info, |
922 callback.callback(), NULL, | 933 callback.callback(), &req, |
923 mock_bindings.CreateBindings()); | 934 mock_bindings.CreateBindings()); |
924 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 935 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
925 | 936 |
926 // The test does 2 DNS resolutions. | 937 // The test does 2 DNS resolutions. |
927 EXPECT_EQ(2u, host_resolver.num_resolve()); | 938 EXPECT_EQ(2u, host_resolver.num_resolve()); |
928 | 939 |
929 EXPECT_EQ("foopy:3", proxy_info.proxy_server().ToURI()); | 940 EXPECT_EQ("foopy:3", proxy_info.proxy_server().ToURI()); |
930 | 941 |
931 // No errors or alerts. | 942 // No errors or alerts. |
932 EXPECT_TRUE(mock_bindings.GetErrors().empty()); | 943 EXPECT_TRUE(mock_bindings.GetErrors().empty()); |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
984 | 995 |
985 ProxyResolverV8Tracing* resolver[] = { | 996 ProxyResolverV8Tracing* resolver[] = { |
986 resolver0.get(), resolver1.get(), resolver2.get(), resolver3.get(), | 997 resolver0.get(), resolver1.get(), resolver2.get(), resolver3.get(), |
987 }; | 998 }; |
988 | 999 |
989 const size_t kNumResolvers = arraysize(resolver); | 1000 const size_t kNumResolvers = arraysize(resolver); |
990 const size_t kNumIterations = 20; | 1001 const size_t kNumIterations = 20; |
991 const size_t kNumResults = kNumResolvers * kNumIterations; | 1002 const size_t kNumResults = kNumResolvers * kNumIterations; |
992 TestCompletionCallback callback[kNumResults]; | 1003 TestCompletionCallback callback[kNumResults]; |
993 ProxyInfo proxy_info[kNumResults]; | 1004 ProxyInfo proxy_info[kNumResults]; |
| 1005 std::unique_ptr<ProxyResolver::Request> request[kNumResults]; |
994 | 1006 |
995 for (size_t i = 0; i < kNumResults; ++i) { | 1007 for (size_t i = 0; i < kNumResults; ++i) { |
996 size_t resolver_i = i % kNumResolvers; | 1008 size_t resolver_i = i % kNumResolvers; |
997 resolver[resolver_i]->GetProxyForURL( | 1009 resolver[resolver_i]->GetProxyForURL( |
998 GURL("http://foo/"), &proxy_info[i], callback[i].callback(), NULL, | 1010 GURL("http://foo/"), &proxy_info[i], callback[i].callback(), |
999 resolver_i == 3 ? mock_bindings3.CreateBindings() | 1011 &request[i], resolver_i == 3 ? mock_bindings3.CreateBindings() |
1000 : mock_bindings0.CreateBindings()); | 1012 : mock_bindings0.CreateBindings()); |
1001 } | 1013 } |
1002 | 1014 |
1003 // ------------------------ | 1015 // ------------------------ |
1004 // Verify all of the results. | 1016 // Verify all of the results. |
1005 // ------------------------ | 1017 // ------------------------ |
1006 | 1018 |
1007 const char* kExpectedForDnsJs = | 1019 const char* kExpectedForDnsJs = |
1008 "122.133.144.155-" // myIpAddress() | 1020 "122.133.144.155-" // myIpAddress() |
1009 "null-" // dnsResolve('') | 1021 "null-" // dnsResolve('') |
1010 "__1_192.168.1.1-" // dnsResolveEx('host1') | 1022 "__1_192.168.1.1-" // dnsResolveEx('host1') |
(...skipping 24 matching lines...) Expand all Loading... |
1035 proxy_uri.substr(0, proxy_uri.find(':') + 1)); | 1047 proxy_uri.substr(0, proxy_uri.find(':') + 1)); |
1036 } else { | 1048 } else { |
1037 NOTREACHED(); | 1049 NOTREACHED(); |
1038 } | 1050 } |
1039 } | 1051 } |
1040 } | 1052 } |
1041 | 1053 |
1042 } // namespace | 1054 } // namespace |
1043 | 1055 |
1044 } // namespace net | 1056 } // namespace net |
OLD | NEW |