Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(76)

Side by Side Diff: net/proxy/proxy_service_unittest.cc

Issue 8898036: base::Bind: Convert proxy_resolving_client_socket.[cc,h] and deps. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Possible test fix. Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/proxy/proxy_service.cc ('k') | net/socket/client_socket_handle.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « net/proxy/proxy_service.cc ('k') | net/socket/client_socket_handle.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698