OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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.h" | 5 #include "net/proxy/proxy_service.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/format_macros.h" | 9 #include "base/format_macros.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
205 resolver->pending_requests()[0]->results()->UseNamedProxy("foopy:8080"); | 205 resolver->pending_requests()[0]->results()->UseNamedProxy("foopy:8080"); |
206 resolver->pending_requests()[0]->CompleteNow(OK); | 206 resolver->pending_requests()[0]->CompleteNow(OK); |
207 | 207 |
208 EXPECT_EQ(OK, callback1.WaitForResult()); | 208 EXPECT_EQ(OK, callback1.WaitForResult()); |
209 EXPECT_FALSE(info.is_direct()); | 209 EXPECT_FALSE(info.is_direct()); |
210 EXPECT_EQ("foopy:8080", info.proxy_server().ToURI()); | 210 EXPECT_EQ("foopy:8080", info.proxy_server().ToURI()); |
211 | 211 |
212 // Now, imagine that connecting to foopy:8080 fails: there is nothing | 212 // Now, imagine that connecting to foopy:8080 fails: there is nothing |
213 // left to fallback to, since our proxy list was NOT terminated by | 213 // left to fallback to, since our proxy list was NOT terminated by |
214 // DIRECT. | 214 // DIRECT. |
215 TestOldCompletionCallback callback2; | 215 TestCompletionCallback callback2; |
216 rv = service.ReconsiderProxyAfterError(url, &info, &callback2, NULL, | 216 rv = service.ReconsiderProxyAfterError(url, &info, callback2.callback(), NULL, |
217 BoundNetLog()); | 217 BoundNetLog()); |
218 // ReconsiderProxyAfterError returns error indicating nothing left. | 218 // ReconsiderProxyAfterError returns error indicating nothing left. |
219 EXPECT_EQ(ERR_FAILED, rv); | 219 EXPECT_EQ(ERR_FAILED, rv); |
220 EXPECT_TRUE(info.is_empty()); | 220 EXPECT_TRUE(info.is_empty()); |
221 } | 221 } |
222 | 222 |
223 // The proxy list could potentially contain the DIRECT fallback choice | 223 // The proxy list could potentially contain the DIRECT fallback choice |
224 // in a location other than the very end of the list, and could even | 224 // in a location other than the very end of the list, and could even |
225 // specify it multiple times. | 225 // specify it multiple times. |
226 // | 226 // |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
260 | 260 |
261 // Set the result in proxy resolver. | 261 // Set the result in proxy resolver. |
262 resolver->pending_requests()[0]->results()->UsePacString( | 262 resolver->pending_requests()[0]->results()->UsePacString( |
263 "DIRECT ; PROXY foobar:10 ; DIRECT ; PROXY foobar:20"); | 263 "DIRECT ; PROXY foobar:10 ; DIRECT ; PROXY foobar:20"); |
264 resolver->pending_requests()[0]->CompleteNow(OK); | 264 resolver->pending_requests()[0]->CompleteNow(OK); |
265 | 265 |
266 EXPECT_EQ(OK, callback1.WaitForResult()); | 266 EXPECT_EQ(OK, callback1.WaitForResult()); |
267 EXPECT_TRUE(info.is_direct()); | 267 EXPECT_TRUE(info.is_direct()); |
268 | 268 |
269 // Fallback 1. | 269 // Fallback 1. |
270 TestOldCompletionCallback callback2; | 270 TestCompletionCallback callback2; |
271 rv = service.ReconsiderProxyAfterError(url, &info, &callback2, NULL, | 271 rv = service.ReconsiderProxyAfterError(url, &info, callback2.callback(), NULL, |
272 BoundNetLog()); | 272 BoundNetLog()); |
273 EXPECT_EQ(OK, rv); | 273 EXPECT_EQ(OK, rv); |
274 EXPECT_FALSE(info.is_direct()); | 274 EXPECT_FALSE(info.is_direct()); |
275 EXPECT_EQ("foobar:10", info.proxy_server().ToURI()); | 275 EXPECT_EQ("foobar:10", info.proxy_server().ToURI()); |
276 | 276 |
277 // Fallback 2. | 277 // Fallback 2. |
278 TestOldCompletionCallback callback3; | 278 TestCompletionCallback callback3; |
279 rv = service.ReconsiderProxyAfterError(url, &info, &callback3, NULL, | 279 rv = service.ReconsiderProxyAfterError(url, &info, callback3.callback(), NULL, |
280 BoundNetLog()); | 280 BoundNetLog()); |
281 EXPECT_EQ(OK, rv); | 281 EXPECT_EQ(OK, rv); |
282 EXPECT_TRUE(info.is_direct()); | 282 EXPECT_TRUE(info.is_direct()); |
283 | 283 |
284 // Fallback 3. | 284 // Fallback 3. |
285 TestOldCompletionCallback callback4; | 285 TestCompletionCallback callback4; |
286 rv = service.ReconsiderProxyAfterError(url, &info, &callback4, NULL, | 286 rv = service.ReconsiderProxyAfterError(url, &info, callback4.callback(), NULL, |
287 BoundNetLog()); | 287 BoundNetLog()); |
288 EXPECT_EQ(OK, rv); | 288 EXPECT_EQ(OK, rv); |
289 EXPECT_FALSE(info.is_direct()); | 289 EXPECT_FALSE(info.is_direct()); |
290 EXPECT_EQ("foobar:20", info.proxy_server().ToURI()); | 290 EXPECT_EQ("foobar:20", info.proxy_server().ToURI()); |
291 | 291 |
292 // Fallback 4 -- Nothing to fall back to! | 292 // Fallback 4 -- Nothing to fall back to! |
293 TestOldCompletionCallback callback5; | 293 TestCompletionCallback callback5; |
294 rv = service.ReconsiderProxyAfterError(url, &info, &callback5, NULL, | 294 rv = service.ReconsiderProxyAfterError(url, &info, callback5.callback(), NULL, |
295 BoundNetLog()); | 295 BoundNetLog()); |
296 EXPECT_EQ(ERR_FAILED, rv); | 296 EXPECT_EQ(ERR_FAILED, rv); |
297 EXPECT_TRUE(info.is_empty()); | 297 EXPECT_TRUE(info.is_empty()); |
298 } | 298 } |
299 | 299 |
300 TEST(ProxyServiceTest, ProxyResolverFails) { | 300 TEST(ProxyServiceTest, ProxyResolverFails) { |
301 // Test what happens when the ProxyResolver fails. The download and setting | 301 // Test what happens when the ProxyResolver fails. The download and setting |
302 // of the PAC script have already succeeded, so this corresponds with a | 302 // of the PAC script have already succeeded, so this corresponds with a |
303 // javascript runtime error while calling FindProxyForURL(). | 303 // javascript runtime error while calling FindProxyForURL(). |
304 | 304 |
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
525 resolver->pending_requests()[0]->results()->UseNamedProxy( | 525 resolver->pending_requests()[0]->results()->UseNamedProxy( |
526 "foopy1:8080;foopy2:9090"); | 526 "foopy1:8080;foopy2:9090"); |
527 resolver->pending_requests()[0]->CompleteNow(OK); | 527 resolver->pending_requests()[0]->CompleteNow(OK); |
528 | 528 |
529 // The first item is valid. | 529 // The first item is valid. |
530 EXPECT_EQ(OK, callback1.WaitForResult()); | 530 EXPECT_EQ(OK, callback1.WaitForResult()); |
531 EXPECT_FALSE(info.is_direct()); | 531 EXPECT_FALSE(info.is_direct()); |
532 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); | 532 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); |
533 | 533 |
534 // Fake an error on the proxy. | 534 // Fake an error on the proxy. |
535 TestOldCompletionCallback callback2; | 535 TestCompletionCallback callback2; |
536 rv = service.ReconsiderProxyAfterError(url, &info, &callback2, NULL, | 536 rv = service.ReconsiderProxyAfterError(url, &info, callback2.callback(), NULL, |
537 BoundNetLog()); | 537 BoundNetLog()); |
538 EXPECT_EQ(OK, rv); | 538 EXPECT_EQ(OK, rv); |
539 | 539 |
540 // The second proxy should be specified. | 540 // The second proxy should be specified. |
541 EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI()); | 541 EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI()); |
542 // Report back that the second proxy worked. This will globally mark the | 542 // Report back that the second proxy worked. This will globally mark the |
543 // first proxy as bad. | 543 // first proxy as bad. |
544 service.ReportSuccess(info); | 544 service.ReportSuccess(info); |
545 | 545 |
546 TestOldCompletionCallback callback3; | 546 TestOldCompletionCallback callback3; |
547 rv = service.ResolveProxy(url, &info, &callback3, NULL, BoundNetLog()); | 547 rv = service.ResolveProxy(url, &info, &callback3, NULL, BoundNetLog()); |
548 EXPECT_EQ(ERR_IO_PENDING, rv); | 548 EXPECT_EQ(ERR_IO_PENDING, rv); |
549 | 549 |
550 ASSERT_EQ(1u, resolver->pending_requests().size()); | 550 ASSERT_EQ(1u, resolver->pending_requests().size()); |
551 EXPECT_EQ(url, resolver->pending_requests()[0]->url()); | 551 EXPECT_EQ(url, resolver->pending_requests()[0]->url()); |
552 | 552 |
553 // Set the result in proxy resolver -- the second result is already known | 553 // Set the result in proxy resolver -- the second result is already known |
554 // to be bad, so we will not try to use it initially. | 554 // to be bad, so we will not try to use it initially. |
555 resolver->pending_requests()[0]->results()->UseNamedProxy( | 555 resolver->pending_requests()[0]->results()->UseNamedProxy( |
556 "foopy3:7070;foopy1:8080;foopy2:9090"); | 556 "foopy3:7070;foopy1:8080;foopy2:9090"); |
557 resolver->pending_requests()[0]->CompleteNow(OK); | 557 resolver->pending_requests()[0]->CompleteNow(OK); |
558 | 558 |
559 EXPECT_EQ(OK, callback3.WaitForResult()); | 559 EXPECT_EQ(OK, callback3.WaitForResult()); |
560 EXPECT_FALSE(info.is_direct()); | 560 EXPECT_FALSE(info.is_direct()); |
561 EXPECT_EQ("foopy3:7070", info.proxy_server().ToURI()); | 561 EXPECT_EQ("foopy3:7070", info.proxy_server().ToURI()); |
562 | 562 |
563 // We fake another error. It should now try the third one. | 563 // We fake another error. It should now try the third one. |
564 TestOldCompletionCallback callback4; | 564 TestCompletionCallback callback4; |
565 rv = service.ReconsiderProxyAfterError(url, &info, &callback4, NULL, | 565 rv = service.ReconsiderProxyAfterError(url, &info, callback4.callback(), NULL, |
566 BoundNetLog()); | 566 BoundNetLog()); |
567 EXPECT_EQ(OK, rv); | 567 EXPECT_EQ(OK, rv); |
568 EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI()); | 568 EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI()); |
569 | 569 |
570 // We fake another error. At this point we have tried all of the | 570 // We fake another error. At this point we have tried all of the |
571 // proxy servers we thought were valid; next we try the proxy server | 571 // proxy servers we thought were valid; next we try the proxy server |
572 // that was in our bad proxies map (foopy1:8080). | 572 // that was in our bad proxies map (foopy1:8080). |
573 TestOldCompletionCallback callback5; | 573 TestCompletionCallback callback5; |
574 rv = service.ReconsiderProxyAfterError(url, &info, &callback5, NULL, | 574 rv = service.ReconsiderProxyAfterError(url, &info, callback5.callback(), NULL, |
575 BoundNetLog()); | 575 BoundNetLog()); |
576 EXPECT_EQ(OK, rv); | 576 EXPECT_EQ(OK, rv); |
577 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); | 577 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); |
578 | 578 |
579 // Fake another error, the last proxy is gone, the list should now be empty, | 579 // Fake another error, the last proxy is gone, the list should now be empty, |
580 // so there is nothing left to try. | 580 // so there is nothing left to try. |
581 TestOldCompletionCallback callback6; | 581 TestCompletionCallback callback6; |
582 rv = service.ReconsiderProxyAfterError(url, &info, &callback6, NULL, | 582 rv = service.ReconsiderProxyAfterError(url, &info, callback6.callback(), NULL, |
583 BoundNetLog()); | 583 BoundNetLog()); |
584 EXPECT_EQ(ERR_FAILED, rv); | 584 EXPECT_EQ(ERR_FAILED, rv); |
585 EXPECT_FALSE(info.is_direct()); | 585 EXPECT_FALSE(info.is_direct()); |
586 EXPECT_TRUE(info.is_empty()); | 586 EXPECT_TRUE(info.is_empty()); |
587 | 587 |
588 // Look up proxies again | 588 // Look up proxies again |
589 TestOldCompletionCallback callback7; | 589 TestCompletionCallback callback7; |
590 rv = service.ResolveProxy(url, &info, &callback7, NULL, BoundNetLog()); | 590 rv = service.ResolveProxy(url, &info, callback7.callback(), NULL, |
| 591 BoundNetLog()); |
591 EXPECT_EQ(ERR_IO_PENDING, rv); | 592 EXPECT_EQ(ERR_IO_PENDING, rv); |
592 | 593 |
593 ASSERT_EQ(1u, resolver->pending_requests().size()); | 594 ASSERT_EQ(1u, resolver->pending_requests().size()); |
594 EXPECT_EQ(url, resolver->pending_requests()[0]->url()); | 595 EXPECT_EQ(url, resolver->pending_requests()[0]->url()); |
595 | 596 |
596 // This time, the first 3 results have been found to be bad, but only the | 597 // This time, the first 3 results have been found to be bad, but only the |
597 // first proxy has been confirmed ... | 598 // first proxy has been confirmed ... |
598 resolver->pending_requests()[0]->results()->UseNamedProxy( | 599 resolver->pending_requests()[0]->results()->UseNamedProxy( |
599 "foopy1:8080;foopy3:7070;foopy2:9090;foopy4:9091"); | 600 "foopy1:8080;foopy3:7070;foopy2:9090;foopy4:9091"); |
600 resolver->pending_requests()[0]->CompleteNow(OK); | 601 resolver->pending_requests()[0]->CompleteNow(OK); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
636 resolver->pending_requests()[0]->results()->UsePacString( | 637 resolver->pending_requests()[0]->results()->UsePacString( |
637 "PROXY foopy1:8080; PROXY foopy2:9090; DIRECT"); | 638 "PROXY foopy1:8080; PROXY foopy2:9090; DIRECT"); |
638 resolver->pending_requests()[0]->CompleteNow(OK); | 639 resolver->pending_requests()[0]->CompleteNow(OK); |
639 | 640 |
640 // Get the first result. | 641 // Get the first result. |
641 EXPECT_EQ(OK, callback1.WaitForResult()); | 642 EXPECT_EQ(OK, callback1.WaitForResult()); |
642 EXPECT_FALSE(info.is_direct()); | 643 EXPECT_FALSE(info.is_direct()); |
643 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); | 644 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); |
644 | 645 |
645 // Fake an error on the proxy. | 646 // Fake an error on the proxy. |
646 TestOldCompletionCallback callback2; | 647 TestCompletionCallback callback2; |
647 rv = service.ReconsiderProxyAfterError(url, &info, &callback2, NULL, | 648 rv = service.ReconsiderProxyAfterError(url, &info, callback2.callback(), NULL, |
648 BoundNetLog()); | 649 BoundNetLog()); |
649 EXPECT_EQ(OK, rv); | 650 EXPECT_EQ(OK, rv); |
650 | 651 |
651 // Now we get back the second proxy. | 652 // Now we get back the second proxy. |
652 EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI()); | 653 EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI()); |
653 | 654 |
654 // Fake an error on this proxy as well. | 655 // Fake an error on this proxy as well. |
655 TestOldCompletionCallback callback3; | 656 TestCompletionCallback callback3; |
656 rv = service.ReconsiderProxyAfterError(url, &info, &callback3, NULL, | 657 rv = service.ReconsiderProxyAfterError(url, &info, callback3.callback(), NULL, |
657 BoundNetLog()); | 658 BoundNetLog()); |
658 EXPECT_EQ(OK, rv); | 659 EXPECT_EQ(OK, rv); |
659 | 660 |
660 // Finally, we get back DIRECT. | 661 // Finally, we get back DIRECT. |
661 EXPECT_TRUE(info.is_direct()); | 662 EXPECT_TRUE(info.is_direct()); |
662 | 663 |
663 // Now we tell the proxy service that even DIRECT failed. | 664 // Now we tell the proxy service that even DIRECT failed. |
664 TestOldCompletionCallback callback4; | 665 TestCompletionCallback callback4; |
665 rv = service.ReconsiderProxyAfterError(url, &info, &callback4, NULL, | 666 rv = service.ReconsiderProxyAfterError(url, &info, callback4.callback(), NULL, |
666 BoundNetLog()); | 667 BoundNetLog()); |
667 // There was nothing left to try after DIRECT, so we are out of | 668 // There was nothing left to try after DIRECT, so we are out of |
668 // choices. | 669 // choices. |
669 EXPECT_EQ(ERR_FAILED, rv); | 670 EXPECT_EQ(ERR_FAILED, rv); |
670 } | 671 } |
671 | 672 |
672 TEST(ProxyServiceTest, ProxyFallback_NewSettings) { | 673 TEST(ProxyServiceTest, ProxyFallback_NewSettings) { |
673 // Test proxy failover when new settings are available. | 674 // Test proxy failover when new settings are available. |
674 | 675 |
675 MockProxyConfigService* config_service = | 676 MockProxyConfigService* config_service = |
(...skipping 25 matching lines...) Expand all Loading... |
701 | 702 |
702 // The first item is valid. | 703 // The first item is valid. |
703 EXPECT_EQ(OK, callback1.WaitForResult()); | 704 EXPECT_EQ(OK, callback1.WaitForResult()); |
704 EXPECT_FALSE(info.is_direct()); | 705 EXPECT_FALSE(info.is_direct()); |
705 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); | 706 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); |
706 | 707 |
707 // Fake an error on the proxy, and also a new configuration on the proxy. | 708 // Fake an error on the proxy, and also a new configuration on the proxy. |
708 config_service->SetConfig( | 709 config_service->SetConfig( |
709 ProxyConfig::CreateFromCustomPacURL(GURL("http://foopy-new/proxy.pac"))); | 710 ProxyConfig::CreateFromCustomPacURL(GURL("http://foopy-new/proxy.pac"))); |
710 | 711 |
711 TestOldCompletionCallback callback2; | 712 TestCompletionCallback callback2; |
712 rv = service.ReconsiderProxyAfterError(url, &info, &callback2, NULL, | 713 rv = service.ReconsiderProxyAfterError(url, &info, callback2.callback(), NULL, |
713 BoundNetLog()); | 714 BoundNetLog()); |
714 EXPECT_EQ(ERR_IO_PENDING, rv); | 715 EXPECT_EQ(ERR_IO_PENDING, rv); |
715 | 716 |
716 EXPECT_EQ(GURL("http://foopy-new/proxy.pac"), | 717 EXPECT_EQ(GURL("http://foopy-new/proxy.pac"), |
717 resolver->pending_set_pac_script_request()->script_data()->url()); | 718 resolver->pending_set_pac_script_request()->script_data()->url()); |
718 resolver->pending_set_pac_script_request()->CompleteNow(OK); | 719 resolver->pending_set_pac_script_request()->CompleteNow(OK); |
719 | 720 |
720 ASSERT_EQ(1u, resolver->pending_requests().size()); | 721 ASSERT_EQ(1u, resolver->pending_requests().size()); |
721 EXPECT_EQ(url, resolver->pending_requests()[0]->url()); | 722 EXPECT_EQ(url, resolver->pending_requests()[0]->url()); |
722 | 723 |
723 resolver->pending_requests()[0]->results()->UseNamedProxy( | 724 resolver->pending_requests()[0]->results()->UseNamedProxy( |
724 "foopy1:8080;foopy2:9090"); | 725 "foopy1:8080;foopy2:9090"); |
725 resolver->pending_requests()[0]->CompleteNow(OK); | 726 resolver->pending_requests()[0]->CompleteNow(OK); |
726 | 727 |
727 // The first proxy is still there since the configuration changed. | 728 // The first proxy is still there since the configuration changed. |
728 EXPECT_EQ(OK, callback2.WaitForResult()); | 729 EXPECT_EQ(OK, callback2.WaitForResult()); |
729 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); | 730 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); |
730 | 731 |
731 // We fake another error. It should now ignore the first one. | 732 // We fake another error. It should now ignore the first one. |
732 TestOldCompletionCallback callback3; | 733 TestCompletionCallback callback3; |
733 rv = service.ReconsiderProxyAfterError(url, &info, &callback3, NULL, | 734 rv = service.ReconsiderProxyAfterError(url, &info, callback3.callback(), NULL, |
734 BoundNetLog()); | 735 BoundNetLog()); |
735 EXPECT_EQ(OK, rv); | 736 EXPECT_EQ(OK, rv); |
736 EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI()); | 737 EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI()); |
737 | 738 |
738 // We simulate a new configuration. | 739 // We simulate a new configuration. |
739 config_service->SetConfig( | 740 config_service->SetConfig( |
740 ProxyConfig::CreateFromCustomPacURL( | 741 ProxyConfig::CreateFromCustomPacURL( |
741 GURL("http://foopy-new2/proxy.pac"))); | 742 GURL("http://foopy-new2/proxy.pac"))); |
742 | 743 |
743 // We fake another error. It should go back to the first proxy. | 744 // We fake another error. It should go back to the first proxy. |
744 TestOldCompletionCallback callback4; | 745 TestCompletionCallback callback4; |
745 rv = service.ReconsiderProxyAfterError(url, &info, &callback4, NULL, | 746 rv = service.ReconsiderProxyAfterError(url, &info, callback4.callback(), NULL, |
746 BoundNetLog()); | 747 BoundNetLog()); |
747 EXPECT_EQ(ERR_IO_PENDING, rv); | 748 EXPECT_EQ(ERR_IO_PENDING, rv); |
748 | 749 |
749 EXPECT_EQ(GURL("http://foopy-new2/proxy.pac"), | 750 EXPECT_EQ(GURL("http://foopy-new2/proxy.pac"), |
750 resolver->pending_set_pac_script_request()->script_data()->url()); | 751 resolver->pending_set_pac_script_request()->script_data()->url()); |
751 resolver->pending_set_pac_script_request()->CompleteNow(OK); | 752 resolver->pending_set_pac_script_request()->CompleteNow(OK); |
752 | 753 |
753 ASSERT_EQ(1u, resolver->pending_requests().size()); | 754 ASSERT_EQ(1u, resolver->pending_requests().size()); |
754 EXPECT_EQ(url, resolver->pending_requests()[0]->url()); | 755 EXPECT_EQ(url, resolver->pending_requests()[0]->url()); |
755 | 756 |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
788 resolver->pending_requests()[0]->results()->UseNamedProxy( | 789 resolver->pending_requests()[0]->results()->UseNamedProxy( |
789 "foopy1:8080;foopy2:9090"); | 790 "foopy1:8080;foopy2:9090"); |
790 resolver->pending_requests()[0]->CompleteNow(OK); | 791 resolver->pending_requests()[0]->CompleteNow(OK); |
791 | 792 |
792 // The first item is valid. | 793 // The first item is valid. |
793 EXPECT_EQ(OK, callback1.WaitForResult()); | 794 EXPECT_EQ(OK, callback1.WaitForResult()); |
794 EXPECT_FALSE(info.is_direct()); | 795 EXPECT_FALSE(info.is_direct()); |
795 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); | 796 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); |
796 | 797 |
797 // Fake a proxy error. | 798 // Fake a proxy error. |
798 TestOldCompletionCallback callback2; | 799 TestCompletionCallback callback2; |
799 rv = service.ReconsiderProxyAfterError(url, &info, &callback2, NULL, | 800 rv = service.ReconsiderProxyAfterError(url, &info, callback2.callback(), NULL, |
800 BoundNetLog()); | 801 BoundNetLog()); |
801 EXPECT_EQ(OK, rv); | 802 EXPECT_EQ(OK, rv); |
802 | 803 |
803 // The first proxy is ignored, and the second one is selected. | 804 // The first proxy is ignored, and the second one is selected. |
804 EXPECT_FALSE(info.is_direct()); | 805 EXPECT_FALSE(info.is_direct()); |
805 EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI()); | 806 EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI()); |
806 | 807 |
807 // Fake a PAC failure. | 808 // Fake a PAC failure. |
808 ProxyInfo info2; | 809 ProxyInfo info2; |
809 TestOldCompletionCallback callback3; | 810 TestOldCompletionCallback callback3; |
810 rv = service.ResolveProxy(url, &info2, &callback3, NULL, BoundNetLog()); | 811 rv = service.ResolveProxy(url, &info2, &callback3, NULL, BoundNetLog()); |
811 EXPECT_EQ(ERR_IO_PENDING, rv); | 812 EXPECT_EQ(ERR_IO_PENDING, rv); |
812 | 813 |
813 ASSERT_EQ(1u, resolver->pending_requests().size()); | 814 ASSERT_EQ(1u, resolver->pending_requests().size()); |
814 EXPECT_EQ(url, resolver->pending_requests()[0]->url()); | 815 EXPECT_EQ(url, resolver->pending_requests()[0]->url()); |
815 | 816 |
816 // This simulates a javascript runtime error in the PAC script. | 817 // This simulates a javascript runtime error in the PAC script. |
817 resolver->pending_requests()[0]->CompleteNow(ERR_FAILED); | 818 resolver->pending_requests()[0]->CompleteNow(ERR_FAILED); |
818 | 819 |
819 // Although the resolver failed, the ProxyService will implicitly fall-back | 820 // Although the resolver failed, the ProxyService will implicitly fall-back |
820 // to a DIRECT connection. | 821 // to a DIRECT connection. |
821 EXPECT_EQ(OK, callback3.WaitForResult()); | 822 EXPECT_EQ(OK, callback3.WaitForResult()); |
822 EXPECT_TRUE(info2.is_direct()); | 823 EXPECT_TRUE(info2.is_direct()); |
823 EXPECT_FALSE(info2.is_empty()); | 824 EXPECT_FALSE(info2.is_empty()); |
824 | 825 |
825 // The PAC script will work properly next time and successfully return a | 826 // The PAC script will work properly next time and successfully return a |
826 // proxy list. Since we have not marked the configuration as bad, it should | 827 // proxy list. Since we have not marked the configuration as bad, it should |
827 // "just work" the next time we call it. | 828 // "just work" the next time we call it. |
828 ProxyInfo info3; | 829 ProxyInfo info3; |
829 TestOldCompletionCallback callback4; | 830 TestCompletionCallback callback4; |
830 rv = service.ReconsiderProxyAfterError(url, &info3, &callback4, NULL, | 831 rv = service.ReconsiderProxyAfterError(url, &info3, callback4.callback(), |
831 BoundNetLog()); | 832 NULL, BoundNetLog()); |
832 EXPECT_EQ(ERR_IO_PENDING, rv); | 833 EXPECT_EQ(ERR_IO_PENDING, rv); |
833 | 834 |
834 ASSERT_EQ(1u, resolver->pending_requests().size()); | 835 ASSERT_EQ(1u, resolver->pending_requests().size()); |
835 EXPECT_EQ(url, resolver->pending_requests()[0]->url()); | 836 EXPECT_EQ(url, resolver->pending_requests()[0]->url()); |
836 | 837 |
837 resolver->pending_requests()[0]->results()->UseNamedProxy( | 838 resolver->pending_requests()[0]->results()->UseNamedProxy( |
838 "foopy1:8080;foopy2:9090"); | 839 "foopy1:8080;foopy2:9090"); |
839 resolver->pending_requests()[0]->CompleteNow(OK); | 840 resolver->pending_requests()[0]->CompleteNow(OK); |
840 | 841 |
841 // The first proxy is not there since the it was added to the bad proxies | 842 // The first proxy is not there since the it was added to the bad proxies |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
875 resolver->pending_requests()[0]->results()->UseNamedProxy( | 876 resolver->pending_requests()[0]->results()->UseNamedProxy( |
876 "foopy1:8080;foopy2:9090"); | 877 "foopy1:8080;foopy2:9090"); |
877 resolver->pending_requests()[0]->CompleteNow(OK); | 878 resolver->pending_requests()[0]->CompleteNow(OK); |
878 | 879 |
879 // The first item is valid. | 880 // The first item is valid. |
880 EXPECT_EQ(OK, callback1.WaitForResult()); | 881 EXPECT_EQ(OK, callback1.WaitForResult()); |
881 EXPECT_FALSE(info.is_direct()); | 882 EXPECT_FALSE(info.is_direct()); |
882 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); | 883 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); |
883 | 884 |
884 // Fake a proxy error. | 885 // Fake a proxy error. |
885 TestOldCompletionCallback callback2; | 886 TestCompletionCallback callback2; |
886 rv = service.ReconsiderProxyAfterError(url, &info, &callback2, NULL, | 887 rv = service.ReconsiderProxyAfterError(url, &info, callback2.callback(), NULL, |
887 BoundNetLog()); | 888 BoundNetLog()); |
888 EXPECT_EQ(OK, rv); | 889 EXPECT_EQ(OK, rv); |
889 | 890 |
890 // The first proxy is ignored, and the second one is selected. | 891 // The first proxy is ignored, and the second one is selected. |
891 EXPECT_FALSE(info.is_direct()); | 892 EXPECT_FALSE(info.is_direct()); |
892 EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI()); | 893 EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI()); |
893 | 894 |
894 // Fake a PAC failure. | 895 // Fake a PAC failure. |
895 ProxyInfo info2; | 896 ProxyInfo info2; |
896 TestOldCompletionCallback callback3; | 897 TestOldCompletionCallback callback3; |
(...skipping 10 matching lines...) Expand all Loading... |
907 // to a DIRECT connection as it is configured as mandatory. | 908 // to a DIRECT connection as it is configured as mandatory. |
908 EXPECT_EQ(ERR_MANDATORY_PROXY_CONFIGURATION_FAILED, | 909 EXPECT_EQ(ERR_MANDATORY_PROXY_CONFIGURATION_FAILED, |
909 callback3.WaitForResult()); | 910 callback3.WaitForResult()); |
910 EXPECT_FALSE(info2.is_direct()); | 911 EXPECT_FALSE(info2.is_direct()); |
911 EXPECT_TRUE(info2.is_empty()); | 912 EXPECT_TRUE(info2.is_empty()); |
912 | 913 |
913 // The PAC script will work properly next time and successfully return a | 914 // The PAC script will work properly next time and successfully return a |
914 // proxy list. Since we have not marked the configuration as bad, it should | 915 // proxy list. Since we have not marked the configuration as bad, it should |
915 // "just work" the next time we call it. | 916 // "just work" the next time we call it. |
916 ProxyInfo info3; | 917 ProxyInfo info3; |
917 TestOldCompletionCallback callback4; | 918 TestCompletionCallback callback4; |
918 rv = service.ReconsiderProxyAfterError(url, &info3, &callback4, NULL, | 919 rv = service.ReconsiderProxyAfterError(url, &info3, callback4.callback(), |
919 BoundNetLog()); | 920 NULL, BoundNetLog()); |
920 EXPECT_EQ(ERR_IO_PENDING, rv); | 921 EXPECT_EQ(ERR_IO_PENDING, rv); |
921 | 922 |
922 ASSERT_EQ(1u, resolver->pending_requests().size()); | 923 ASSERT_EQ(1u, resolver->pending_requests().size()); |
923 EXPECT_EQ(url, resolver->pending_requests()[0]->url()); | 924 EXPECT_EQ(url, resolver->pending_requests()[0]->url()); |
924 | 925 |
925 resolver->pending_requests()[0]->results()->UseNamedProxy( | 926 resolver->pending_requests()[0]->results()->UseNamedProxy( |
926 "foopy1:8080;foopy2:9090"); | 927 "foopy1:8080;foopy2:9090"); |
927 resolver->pending_requests()[0]->CompleteNow(OK); | 928 resolver->pending_requests()[0]->CompleteNow(OK); |
928 | 929 |
929 // The first proxy is not there since the it was added to the bad proxies | 930 // The first proxy is not there since the it was added to the bad proxies |
(...skipping 957 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1887 log.GetEntries(&entries); | 1888 log.GetEntries(&entries); |
1888 | 1889 |
1889 EXPECT_TRUE(LogContainsEntryWithType(entries, 0, | 1890 EXPECT_TRUE(LogContainsEntryWithType(entries, 0, |
1890 NetLog::TYPE_PROXY_CONFIG_CHANGED)); | 1891 NetLog::TYPE_PROXY_CONFIG_CHANGED)); |
1891 ASSERT_EQ(9u, entries.size()); | 1892 ASSERT_EQ(9u, entries.size()); |
1892 for (size_t i = 1; i < entries.size(); ++i) | 1893 for (size_t i = 1; i < entries.size(); ++i) |
1893 EXPECT_NE(NetLog::TYPE_PROXY_CONFIG_CHANGED, entries[i].type); | 1894 EXPECT_NE(NetLog::TYPE_PROXY_CONFIG_CHANGED, entries[i].type); |
1894 } | 1895 } |
1895 | 1896 |
1896 } // namespace net | 1897 } // namespace net |
OLD | NEW |