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

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

Issue 298883011: Record errors that trigger a data reduction proxy bypass (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed comments Created 6 years, 6 months 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 297 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 308
309 EXPECT_FALSE(info.proxy_resolve_start_time().is_null()); 309 EXPECT_FALSE(info.proxy_resolve_start_time().is_null());
310 EXPECT_FALSE(info.proxy_resolve_end_time().is_null()); 310 EXPECT_FALSE(info.proxy_resolve_end_time().is_null());
311 EXPECT_LE(info.proxy_resolve_start_time(), info.proxy_resolve_end_time()); 311 EXPECT_LE(info.proxy_resolve_start_time(), info.proxy_resolve_end_time());
312 312
313 // Now, imagine that connecting to foopy:8080 fails: there is nothing 313 // Now, imagine that connecting to foopy:8080 fails: there is nothing
314 // left to fallback to, since our proxy list was NOT terminated by 314 // left to fallback to, since our proxy list was NOT terminated by
315 // DIRECT. 315 // DIRECT.
316 TestCompletionCallback callback2; 316 TestCompletionCallback callback2;
317 rv = service.ReconsiderProxyAfterError( 317 rv = service.ReconsiderProxyAfterError(
318 url, &info, callback2.callback(), NULL, BoundNetLog()); 318 url, net::ERR_PROXY_CONNECTION_FAILED,
319 &info, callback2.callback(), NULL, BoundNetLog());
319 // ReconsiderProxyAfterError returns error indicating nothing left. 320 // ReconsiderProxyAfterError returns error indicating nothing left.
320 EXPECT_EQ(ERR_FAILED, rv); 321 EXPECT_EQ(ERR_FAILED, rv);
321 EXPECT_TRUE(info.is_empty()); 322 EXPECT_TRUE(info.is_empty());
322 } 323 }
323 324
324 // Test that if the execution of the PAC script fails (i.e. javascript runtime 325 // Test that if the execution of the PAC script fails (i.e. javascript runtime
325 // error), and the PAC settings are non-mandatory, that we fall-back to direct. 326 // error), and the PAC settings are non-mandatory, that we fall-back to direct.
326 TEST_F(ProxyServiceTest, PAC_RuntimeError) { 327 TEST_F(ProxyServiceTest, PAC_RuntimeError) {
327 MockProxyConfigService* config_service = 328 MockProxyConfigService* config_service =
328 new MockProxyConfigService("http://foopy/proxy.pac"); 329 new MockProxyConfigService("http://foopy/proxy.pac");
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
403 // Set the result in proxy resolver. 404 // Set the result in proxy resolver.
404 resolver->pending_requests()[0]->results()->UsePacString( 405 resolver->pending_requests()[0]->results()->UsePacString(
405 "DIRECT ; PROXY foobar:10 ; DIRECT ; PROXY foobar:20"); 406 "DIRECT ; PROXY foobar:10 ; DIRECT ; PROXY foobar:20");
406 resolver->pending_requests()[0]->CompleteNow(OK); 407 resolver->pending_requests()[0]->CompleteNow(OK);
407 408
408 EXPECT_EQ(OK, callback1.WaitForResult()); 409 EXPECT_EQ(OK, callback1.WaitForResult());
409 EXPECT_TRUE(info.is_direct()); 410 EXPECT_TRUE(info.is_direct());
410 411
411 // Fallback 1. 412 // Fallback 1.
412 TestCompletionCallback callback2; 413 TestCompletionCallback callback2;
413 rv = service.ReconsiderProxyAfterError(url, &info, callback2.callback(), NULL, 414 rv = service.ReconsiderProxyAfterError(url, net::ERR_PROXY_CONNECTION_FAILED,
415 &info, callback2.callback(), NULL,
414 BoundNetLog()); 416 BoundNetLog());
415 EXPECT_EQ(OK, rv); 417 EXPECT_EQ(OK, rv);
416 EXPECT_FALSE(info.is_direct()); 418 EXPECT_FALSE(info.is_direct());
417 EXPECT_EQ("foobar:10", info.proxy_server().ToURI()); 419 EXPECT_EQ("foobar:10", info.proxy_server().ToURI());
418 420
419 // Fallback 2. 421 // Fallback 2.
420 TestCompletionCallback callback3; 422 TestCompletionCallback callback3;
421 rv = service.ReconsiderProxyAfterError(url, &info, callback3.callback(), NULL, 423 rv = service.ReconsiderProxyAfterError(url, net::ERR_PROXY_CONNECTION_FAILED,
424 &info, callback3.callback(), NULL,
422 BoundNetLog()); 425 BoundNetLog());
423 EXPECT_EQ(OK, rv); 426 EXPECT_EQ(OK, rv);
424 EXPECT_TRUE(info.is_direct()); 427 EXPECT_TRUE(info.is_direct());
425 428
426 // Fallback 3. 429 // Fallback 3.
427 TestCompletionCallback callback4; 430 TestCompletionCallback callback4;
428 rv = service.ReconsiderProxyAfterError(url, &info, callback4.callback(), NULL, 431 rv = service.ReconsiderProxyAfterError(url, net::ERR_PROXY_CONNECTION_FAILED,
432 &info, callback4.callback(), NULL,
429 BoundNetLog()); 433 BoundNetLog());
430 EXPECT_EQ(OK, rv); 434 EXPECT_EQ(OK, rv);
431 EXPECT_FALSE(info.is_direct()); 435 EXPECT_FALSE(info.is_direct());
432 EXPECT_EQ("foobar:20", info.proxy_server().ToURI()); 436 EXPECT_EQ("foobar:20", info.proxy_server().ToURI());
433 437
434 // Fallback 4 -- Nothing to fall back to! 438 // Fallback 4 -- Nothing to fall back to!
435 TestCompletionCallback callback5; 439 TestCompletionCallback callback5;
436 rv = service.ReconsiderProxyAfterError(url, &info, callback5.callback(), NULL, 440 rv = service.ReconsiderProxyAfterError(url, net::ERR_PROXY_CONNECTION_FAILED,
441 &info, callback5.callback(), NULL,
437 BoundNetLog()); 442 BoundNetLog());
438 EXPECT_EQ(ERR_FAILED, rv); 443 EXPECT_EQ(ERR_FAILED, rv);
439 EXPECT_TRUE(info.is_empty()); 444 EXPECT_TRUE(info.is_empty());
440 } 445 }
441 446
442 TEST_F(ProxyServiceTest, PAC_ConfigSourcePropagates) { 447 TEST_F(ProxyServiceTest, PAC_ConfigSourcePropagates) {
443 // Test whether the ProxyConfigSource set by the ProxyConfigService is applied 448 // Test whether the ProxyConfigSource set by the ProxyConfigService is applied
444 // to ProxyInfo after the proxy is resolved via a PAC script. 449 // to ProxyInfo after the proxy is resolved via a PAC script.
445 ProxyConfig config = 450 ProxyConfig config =
446 ProxyConfig::CreateFromCustomPacURL(GURL("http://foopy/proxy.pac")); 451 ProxyConfig::CreateFromCustomPacURL(GURL("http://foopy/proxy.pac"));
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
721 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); 726 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI());
722 727
723 EXPECT_FALSE(info.proxy_resolve_start_time().is_null()); 728 EXPECT_FALSE(info.proxy_resolve_start_time().is_null());
724 EXPECT_FALSE(info.proxy_resolve_end_time().is_null()); 729 EXPECT_FALSE(info.proxy_resolve_end_time().is_null());
725 EXPECT_LE(info.proxy_resolve_start_time(), info.proxy_resolve_end_time()); 730 EXPECT_LE(info.proxy_resolve_start_time(), info.proxy_resolve_end_time());
726 base::TimeTicks proxy_resolve_start_time = info.proxy_resolve_start_time(); 731 base::TimeTicks proxy_resolve_start_time = info.proxy_resolve_start_time();
727 base::TimeTicks proxy_resolve_end_time = info.proxy_resolve_end_time(); 732 base::TimeTicks proxy_resolve_end_time = info.proxy_resolve_end_time();
728 733
729 // Fake an error on the proxy. 734 // Fake an error on the proxy.
730 TestCompletionCallback callback2; 735 TestCompletionCallback callback2;
731 rv = service.ReconsiderProxyAfterError(url, &info, callback2.callback(), NULL, 736 rv = service.ReconsiderProxyAfterError(url, net::ERR_PROXY_CONNECTION_FAILED,
737 &info, callback2.callback(), NULL,
732 BoundNetLog()); 738 BoundNetLog());
733 EXPECT_EQ(OK, rv); 739 EXPECT_EQ(OK, rv);
734 740
735 // Proxy times should not have been modified by fallback. 741 // Proxy times should not have been modified by fallback.
736 EXPECT_EQ(proxy_resolve_start_time, info.proxy_resolve_start_time()); 742 EXPECT_EQ(proxy_resolve_start_time, info.proxy_resolve_start_time());
737 EXPECT_EQ(proxy_resolve_end_time, info.proxy_resolve_end_time()); 743 EXPECT_EQ(proxy_resolve_end_time, info.proxy_resolve_end_time());
738 744
739 // The second proxy should be specified. 745 // The second proxy should be specified.
740 EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI()); 746 EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI());
741 // Report back that the second proxy worked. This will globally mark the 747 // Report back that the second proxy worked. This will globally mark the
(...skipping 21 matching lines...) Expand all
763 // Proxy times should have been updated, so get them again. 769 // Proxy times should have been updated, so get them again.
764 EXPECT_LE(proxy_resolve_end_time, info.proxy_resolve_start_time()); 770 EXPECT_LE(proxy_resolve_end_time, info.proxy_resolve_start_time());
765 EXPECT_FALSE(info.proxy_resolve_start_time().is_null()); 771 EXPECT_FALSE(info.proxy_resolve_start_time().is_null());
766 EXPECT_FALSE(info.proxy_resolve_end_time().is_null()); 772 EXPECT_FALSE(info.proxy_resolve_end_time().is_null());
767 EXPECT_LE(info.proxy_resolve_start_time(), info.proxy_resolve_end_time()); 773 EXPECT_LE(info.proxy_resolve_start_time(), info.proxy_resolve_end_time());
768 proxy_resolve_start_time = info.proxy_resolve_start_time(); 774 proxy_resolve_start_time = info.proxy_resolve_start_time();
769 proxy_resolve_end_time = info.proxy_resolve_end_time(); 775 proxy_resolve_end_time = info.proxy_resolve_end_time();
770 776
771 // We fake another error. It should now try the third one. 777 // We fake another error. It should now try the third one.
772 TestCompletionCallback callback4; 778 TestCompletionCallback callback4;
773 rv = service.ReconsiderProxyAfterError(url, &info, callback4.callback(), NULL, 779 rv = service.ReconsiderProxyAfterError(url, net::ERR_PROXY_CONNECTION_FAILED,
780 &info, callback4.callback(), NULL,
774 BoundNetLog()); 781 BoundNetLog());
775 EXPECT_EQ(OK, rv); 782 EXPECT_EQ(OK, rv);
776 EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI()); 783 EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI());
777 784
778 // We fake another error. At this point we have tried all of the 785 // We fake another error. At this point we have tried all of the
779 // proxy servers we thought were valid; next we try the proxy server 786 // proxy servers we thought were valid; next we try the proxy server
780 // that was in our bad proxies map (foopy1:8080). 787 // that was in our bad proxies map (foopy1:8080).
781 TestCompletionCallback callback5; 788 TestCompletionCallback callback5;
782 rv = service.ReconsiderProxyAfterError(url, &info, callback5.callback(), NULL, 789 rv = service.ReconsiderProxyAfterError(url, net::ERR_PROXY_CONNECTION_FAILED,
790 &info, callback5.callback(), NULL,
783 BoundNetLog()); 791 BoundNetLog());
784 EXPECT_EQ(OK, rv); 792 EXPECT_EQ(OK, rv);
785 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); 793 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI());
786 794
787 // Fake another error, the last proxy is gone, the list should now be empty, 795 // Fake another error, the last proxy is gone, the list should now be empty,
788 // so there is nothing left to try. 796 // so there is nothing left to try.
789 TestCompletionCallback callback6; 797 TestCompletionCallback callback6;
790 rv = service.ReconsiderProxyAfterError(url, &info, callback6.callback(), NULL, 798 rv = service.ReconsiderProxyAfterError(url, net::ERR_PROXY_CONNECTION_FAILED,
799 &info, callback6.callback(), NULL,
791 BoundNetLog()); 800 BoundNetLog());
792 EXPECT_EQ(ERR_FAILED, rv); 801 EXPECT_EQ(ERR_FAILED, rv);
793 EXPECT_FALSE(info.is_direct()); 802 EXPECT_FALSE(info.is_direct());
794 EXPECT_TRUE(info.is_empty()); 803 EXPECT_TRUE(info.is_empty());
795 804
796 // Proxy times should not have been modified by fallback. 805 // Proxy times should not have been modified by fallback.
797 EXPECT_EQ(proxy_resolve_start_time, info.proxy_resolve_start_time()); 806 EXPECT_EQ(proxy_resolve_start_time, info.proxy_resolve_start_time());
798 EXPECT_EQ(proxy_resolve_end_time, info.proxy_resolve_end_time()); 807 EXPECT_EQ(proxy_resolve_end_time, info.proxy_resolve_end_time());
799 808
800 // Look up proxies again 809 // Look up proxies again
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
854 "PROXY foopy1:8080; PROXY foopy2:9090; DIRECT"); 863 "PROXY foopy1:8080; PROXY foopy2:9090; DIRECT");
855 resolver->pending_requests()[0]->CompleteNow(OK); 864 resolver->pending_requests()[0]->CompleteNow(OK);
856 865
857 // Get the first result. 866 // Get the first result.
858 EXPECT_EQ(OK, callback1.WaitForResult()); 867 EXPECT_EQ(OK, callback1.WaitForResult());
859 EXPECT_FALSE(info.is_direct()); 868 EXPECT_FALSE(info.is_direct());
860 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); 869 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI());
861 870
862 // Fake an error on the proxy. 871 // Fake an error on the proxy.
863 TestCompletionCallback callback2; 872 TestCompletionCallback callback2;
864 rv = service.ReconsiderProxyAfterError(url, &info, callback2.callback(), NULL, 873 rv = service.ReconsiderProxyAfterError(url, net::ERR_PROXY_CONNECTION_FAILED,
874 &info, callback2.callback(), NULL,
865 BoundNetLog()); 875 BoundNetLog());
866 EXPECT_EQ(OK, rv); 876 EXPECT_EQ(OK, rv);
867 877
868 // Now we get back the second proxy. 878 // Now we get back the second proxy.
869 EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI()); 879 EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI());
870 880
871 // Fake an error on this proxy as well. 881 // Fake an error on this proxy as well.
872 TestCompletionCallback callback3; 882 TestCompletionCallback callback3;
873 rv = service.ReconsiderProxyAfterError(url, &info, callback3.callback(), NULL, 883 rv = service.ReconsiderProxyAfterError(url, net::ERR_PROXY_CONNECTION_FAILED,
884 &info, callback3.callback(), NULL,
874 BoundNetLog()); 885 BoundNetLog());
875 EXPECT_EQ(OK, rv); 886 EXPECT_EQ(OK, rv);
876 887
877 // Finally, we get back DIRECT. 888 // Finally, we get back DIRECT.
878 EXPECT_TRUE(info.is_direct()); 889 EXPECT_TRUE(info.is_direct());
879 890
880 EXPECT_FALSE(info.proxy_resolve_start_time().is_null()); 891 EXPECT_FALSE(info.proxy_resolve_start_time().is_null());
881 EXPECT_FALSE(info.proxy_resolve_end_time().is_null()); 892 EXPECT_FALSE(info.proxy_resolve_end_time().is_null());
882 EXPECT_LE(info.proxy_resolve_start_time(), info.proxy_resolve_end_time()); 893 EXPECT_LE(info.proxy_resolve_start_time(), info.proxy_resolve_end_time());
883 894
884 // Now we tell the proxy service that even DIRECT failed. 895 // Now we tell the proxy service that even DIRECT failed.
885 TestCompletionCallback callback4; 896 TestCompletionCallback callback4;
886 rv = service.ReconsiderProxyAfterError(url, &info, callback4.callback(), NULL, 897 rv = service.ReconsiderProxyAfterError(url, net::ERR_PROXY_CONNECTION_FAILED,
898 &info, callback4.callback(), NULL,
887 BoundNetLog()); 899 BoundNetLog());
888 // There was nothing left to try after DIRECT, so we are out of 900 // There was nothing left to try after DIRECT, so we are out of
889 // choices. 901 // choices.
890 EXPECT_EQ(ERR_FAILED, rv); 902 EXPECT_EQ(ERR_FAILED, rv);
891 } 903 }
892 904
893 TEST_F(ProxyServiceTest, ProxyFallback_NewSettings) { 905 TEST_F(ProxyServiceTest, ProxyFallback_NewSettings) {
894 // Test proxy failover when new settings are available. 906 // Test proxy failover when new settings are available.
895 907
896 MockProxyConfigService* config_service = 908 MockProxyConfigService* config_service =
(...skipping 27 matching lines...) Expand all
924 // The first item is valid. 936 // The first item is valid.
925 EXPECT_EQ(OK, callback1.WaitForResult()); 937 EXPECT_EQ(OK, callback1.WaitForResult());
926 EXPECT_FALSE(info.is_direct()); 938 EXPECT_FALSE(info.is_direct());
927 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); 939 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI());
928 940
929 // Fake an error on the proxy, and also a new configuration on the proxy. 941 // Fake an error on the proxy, and also a new configuration on the proxy.
930 config_service->SetConfig( 942 config_service->SetConfig(
931 ProxyConfig::CreateFromCustomPacURL(GURL("http://foopy-new/proxy.pac"))); 943 ProxyConfig::CreateFromCustomPacURL(GURL("http://foopy-new/proxy.pac")));
932 944
933 TestCompletionCallback callback2; 945 TestCompletionCallback callback2;
934 rv = service.ReconsiderProxyAfterError(url, &info, callback2.callback(), NULL, 946 rv = service.ReconsiderProxyAfterError(url, net::ERR_PROXY_CONNECTION_FAILED,
947 &info, callback2.callback(), NULL,
935 BoundNetLog()); 948 BoundNetLog());
936 EXPECT_EQ(ERR_IO_PENDING, rv); 949 EXPECT_EQ(ERR_IO_PENDING, rv);
937 950
938 EXPECT_EQ(GURL("http://foopy-new/proxy.pac"), 951 EXPECT_EQ(GURL("http://foopy-new/proxy.pac"),
939 resolver->pending_set_pac_script_request()->script_data()->url()); 952 resolver->pending_set_pac_script_request()->script_data()->url());
940 resolver->pending_set_pac_script_request()->CompleteNow(OK); 953 resolver->pending_set_pac_script_request()->CompleteNow(OK);
941 954
942 ASSERT_EQ(1u, resolver->pending_requests().size()); 955 ASSERT_EQ(1u, resolver->pending_requests().size());
943 EXPECT_EQ(url, resolver->pending_requests()[0]->url()); 956 EXPECT_EQ(url, resolver->pending_requests()[0]->url());
944 957
945 resolver->pending_requests()[0]->results()->UseNamedProxy( 958 resolver->pending_requests()[0]->results()->UseNamedProxy(
946 "foopy1:8080;foopy2:9090"); 959 "foopy1:8080;foopy2:9090");
947 resolver->pending_requests()[0]->CompleteNow(OK); 960 resolver->pending_requests()[0]->CompleteNow(OK);
948 961
949 // The first proxy is still there since the configuration changed. 962 // The first proxy is still there since the configuration changed.
950 EXPECT_EQ(OK, callback2.WaitForResult()); 963 EXPECT_EQ(OK, callback2.WaitForResult());
951 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); 964 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI());
952 965
953 // We fake another error. It should now ignore the first one. 966 // We fake another error. It should now ignore the first one.
954 TestCompletionCallback callback3; 967 TestCompletionCallback callback3;
955 rv = service.ReconsiderProxyAfterError(url, &info, callback3.callback(), NULL, 968 rv = service.ReconsiderProxyAfterError(url, net::ERR_PROXY_CONNECTION_FAILED,
969 &info, callback3.callback(), NULL,
956 BoundNetLog()); 970 BoundNetLog());
957 EXPECT_EQ(OK, rv); 971 EXPECT_EQ(OK, rv);
958 EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI()); 972 EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI());
959 973
960 // We simulate a new configuration. 974 // We simulate a new configuration.
961 config_service->SetConfig( 975 config_service->SetConfig(
962 ProxyConfig::CreateFromCustomPacURL( 976 ProxyConfig::CreateFromCustomPacURL(
963 GURL("http://foopy-new2/proxy.pac"))); 977 GURL("http://foopy-new2/proxy.pac")));
964 978
965 // We fake another error. It should go back to the first proxy. 979 // We fake another error. It should go back to the first proxy.
966 TestCompletionCallback callback4; 980 TestCompletionCallback callback4;
967 rv = service.ReconsiderProxyAfterError(url, &info, callback4.callback(), NULL, 981 rv = service.ReconsiderProxyAfterError(url, net::ERR_PROXY_CONNECTION_FAILED,
982 &info, callback4.callback(), NULL,
968 BoundNetLog()); 983 BoundNetLog());
969 EXPECT_EQ(ERR_IO_PENDING, rv); 984 EXPECT_EQ(ERR_IO_PENDING, rv);
970 985
971 EXPECT_EQ(GURL("http://foopy-new2/proxy.pac"), 986 EXPECT_EQ(GURL("http://foopy-new2/proxy.pac"),
972 resolver->pending_set_pac_script_request()->script_data()->url()); 987 resolver->pending_set_pac_script_request()->script_data()->url());
973 resolver->pending_set_pac_script_request()->CompleteNow(OK); 988 resolver->pending_set_pac_script_request()->CompleteNow(OK);
974 989
975 ASSERT_EQ(1u, resolver->pending_requests().size()); 990 ASSERT_EQ(1u, resolver->pending_requests().size());
976 EXPECT_EQ(url, resolver->pending_requests()[0]->url()); 991 EXPECT_EQ(url, resolver->pending_requests()[0]->url());
977 992
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1016 "foopy1:8080;foopy2:9090"); 1031 "foopy1:8080;foopy2:9090");
1017 resolver->pending_requests()[0]->CompleteNow(OK); 1032 resolver->pending_requests()[0]->CompleteNow(OK);
1018 1033
1019 // The first item is valid. 1034 // The first item is valid.
1020 EXPECT_EQ(OK, callback1.WaitForResult()); 1035 EXPECT_EQ(OK, callback1.WaitForResult());
1021 EXPECT_FALSE(info.is_direct()); 1036 EXPECT_FALSE(info.is_direct());
1022 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); 1037 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI());
1023 1038
1024 // Fake a proxy error. 1039 // Fake a proxy error.
1025 TestCompletionCallback callback2; 1040 TestCompletionCallback callback2;
1026 rv = service.ReconsiderProxyAfterError(url, &info, callback2.callback(), NULL, 1041 rv = service.ReconsiderProxyAfterError(url, net::ERR_PROXY_CONNECTION_FAILED,
1042 &info, callback2.callback(), NULL,
1027 BoundNetLog()); 1043 BoundNetLog());
1028 EXPECT_EQ(OK, rv); 1044 EXPECT_EQ(OK, rv);
1029 1045
1030 // The first proxy is ignored, and the second one is selected. 1046 // The first proxy is ignored, and the second one is selected.
1031 EXPECT_FALSE(info.is_direct()); 1047 EXPECT_FALSE(info.is_direct());
1032 EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI()); 1048 EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI());
1033 1049
1034 // Fake a PAC failure. 1050 // Fake a PAC failure.
1035 ProxyInfo info2; 1051 ProxyInfo info2;
1036 TestCompletionCallback callback3; 1052 TestCompletionCallback callback3;
(...skipping 11 matching lines...) Expand all
1048 // to a DIRECT connection. 1064 // to a DIRECT connection.
1049 EXPECT_EQ(OK, callback3.WaitForResult()); 1065 EXPECT_EQ(OK, callback3.WaitForResult());
1050 EXPECT_TRUE(info2.is_direct()); 1066 EXPECT_TRUE(info2.is_direct());
1051 EXPECT_FALSE(info2.is_empty()); 1067 EXPECT_FALSE(info2.is_empty());
1052 1068
1053 // The PAC script will work properly next time and successfully return a 1069 // The PAC script will work properly next time and successfully return a
1054 // proxy list. Since we have not marked the configuration as bad, it should 1070 // proxy list. Since we have not marked the configuration as bad, it should
1055 // "just work" the next time we call it. 1071 // "just work" the next time we call it.
1056 ProxyInfo info3; 1072 ProxyInfo info3;
1057 TestCompletionCallback callback4; 1073 TestCompletionCallback callback4;
1058 rv = service.ReconsiderProxyAfterError(url, &info3, callback4.callback(), 1074 rv = service.ReconsiderProxyAfterError(url, net::ERR_PROXY_CONNECTION_FAILED,
1075 &info3, callback4.callback(),
1059 NULL, BoundNetLog()); 1076 NULL, BoundNetLog());
1060 EXPECT_EQ(ERR_IO_PENDING, rv); 1077 EXPECT_EQ(ERR_IO_PENDING, rv);
1061 1078
1062 ASSERT_EQ(1u, resolver->pending_requests().size()); 1079 ASSERT_EQ(1u, resolver->pending_requests().size());
1063 EXPECT_EQ(url, resolver->pending_requests()[0]->url()); 1080 EXPECT_EQ(url, resolver->pending_requests()[0]->url());
1064 1081
1065 resolver->pending_requests()[0]->results()->UseNamedProxy( 1082 resolver->pending_requests()[0]->results()->UseNamedProxy(
1066 "foopy1:8080;foopy2:9090"); 1083 "foopy1:8080;foopy2:9090");
1067 resolver->pending_requests()[0]->CompleteNow(OK); 1084 resolver->pending_requests()[0]->CompleteNow(OK);
1068 1085
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
1109 "foopy1:8080;foopy2:9090"); 1126 "foopy1:8080;foopy2:9090");
1110 resolver->pending_requests()[0]->CompleteNow(OK); 1127 resolver->pending_requests()[0]->CompleteNow(OK);
1111 1128
1112 // The first item is valid. 1129 // The first item is valid.
1113 EXPECT_EQ(OK, callback1.WaitForResult()); 1130 EXPECT_EQ(OK, callback1.WaitForResult());
1114 EXPECT_FALSE(info.is_direct()); 1131 EXPECT_FALSE(info.is_direct());
1115 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); 1132 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI());
1116 1133
1117 // Fake a proxy error. 1134 // Fake a proxy error.
1118 TestCompletionCallback callback2; 1135 TestCompletionCallback callback2;
1119 rv = service.ReconsiderProxyAfterError(url, &info, callback2.callback(), NULL, 1136 rv = service.ReconsiderProxyAfterError(url, net::ERR_PROXY_CONNECTION_FAILED,
1137 &info, callback2.callback(), NULL,
1120 BoundNetLog()); 1138 BoundNetLog());
1121 EXPECT_EQ(OK, rv); 1139 EXPECT_EQ(OK, rv);
1122 1140
1123 // The first proxy is ignored, and the second one is selected. 1141 // The first proxy is ignored, and the second one is selected.
1124 EXPECT_FALSE(info.is_direct()); 1142 EXPECT_FALSE(info.is_direct());
1125 EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI()); 1143 EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI());
1126 1144
1127 // Fake a PAC failure. 1145 // Fake a PAC failure.
1128 ProxyInfo info2; 1146 ProxyInfo info2;
1129 TestCompletionCallback callback3; 1147 TestCompletionCallback callback3;
(...skipping 12 matching lines...) Expand all
1142 EXPECT_EQ(ERR_MANDATORY_PROXY_CONFIGURATION_FAILED, 1160 EXPECT_EQ(ERR_MANDATORY_PROXY_CONFIGURATION_FAILED,
1143 callback3.WaitForResult()); 1161 callback3.WaitForResult());
1144 EXPECT_FALSE(info2.is_direct()); 1162 EXPECT_FALSE(info2.is_direct());
1145 EXPECT_TRUE(info2.is_empty()); 1163 EXPECT_TRUE(info2.is_empty());
1146 1164
1147 // The PAC script will work properly next time and successfully return a 1165 // The PAC script will work properly next time and successfully return a
1148 // proxy list. Since we have not marked the configuration as bad, it should 1166 // proxy list. Since we have not marked the configuration as bad, it should
1149 // "just work" the next time we call it. 1167 // "just work" the next time we call it.
1150 ProxyInfo info3; 1168 ProxyInfo info3;
1151 TestCompletionCallback callback4; 1169 TestCompletionCallback callback4;
1152 rv = service.ReconsiderProxyAfterError(url, &info3, callback4.callback(), 1170 rv = service.ReconsiderProxyAfterError(url, net::ERR_PROXY_CONNECTION_FAILED,
1171 &info3, callback4.callback(),
1153 NULL, BoundNetLog()); 1172 NULL, BoundNetLog());
1154 EXPECT_EQ(ERR_IO_PENDING, rv); 1173 EXPECT_EQ(ERR_IO_PENDING, rv);
1155 1174
1156 ASSERT_EQ(1u, resolver->pending_requests().size()); 1175 ASSERT_EQ(1u, resolver->pending_requests().size());
1157 EXPECT_EQ(url, resolver->pending_requests()[0]->url()); 1176 EXPECT_EQ(url, resolver->pending_requests()[0]->url());
1158 1177
1159 resolver->pending_requests()[0]->results()->UseNamedProxy( 1178 resolver->pending_requests()[0]->results()->UseNamedProxy(
1160 "foopy1:8080;foopy2:9090"); 1179 "foopy1:8080;foopy2:9090");
1161 resolver->pending_requests()[0]->CompleteNow(OK); 1180 resolver->pending_requests()[0]->CompleteNow(OK);
1162 1181
(...skipping 1621 matching lines...) Expand 10 before | Expand all | Expand 10 after
2784 ProxyInfo info3; 2803 ProxyInfo info3;
2785 TestCompletionCallback callback3; 2804 TestCompletionCallback callback3;
2786 rv = service.ResolveProxy( 2805 rv = service.ResolveProxy(
2787 GURL("http://request3"), &info3, callback3.callback(), NULL, 2806 GURL("http://request3"), &info3, callback3.callback(), NULL,
2788 BoundNetLog()); 2807 BoundNetLog());
2789 EXPECT_EQ(OK, rv); 2808 EXPECT_EQ(OK, rv);
2790 EXPECT_TRUE(info3.is_direct()); 2809 EXPECT_TRUE(info3.is_direct());
2791 } 2810 }
2792 2811
2793 } // namespace net 2812 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698