OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |