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

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

Issue 10310179: Track sources of proxy settings. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments Created 8 years, 7 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 | Annotate | Revision Log
« net/proxy/proxy_service.cc ('K') | « net/proxy/proxy_service.cc ('k') | no next file » | 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) 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 364 matching lines...) Expand 10 before | Expand all | Expand 10 after
375 EXPECT_EQ("foobar:20", info.proxy_server().ToURI()); 375 EXPECT_EQ("foobar:20", info.proxy_server().ToURI());
376 376
377 // Fallback 4 -- Nothing to fall back to! 377 // Fallback 4 -- Nothing to fall back to!
378 TestCompletionCallback callback5; 378 TestCompletionCallback callback5;
379 rv = service.ReconsiderProxyAfterError(url, &info, callback5.callback(), NULL, 379 rv = service.ReconsiderProxyAfterError(url, &info, callback5.callback(), NULL,
380 BoundNetLog()); 380 BoundNetLog());
381 EXPECT_EQ(ERR_FAILED, rv); 381 EXPECT_EQ(ERR_FAILED, rv);
382 EXPECT_TRUE(info.is_empty()); 382 EXPECT_TRUE(info.is_empty());
383 } 383 }
384 384
385 TEST_F(ProxyServiceTest, PAC_ConfigSourcePropagates) {
386 // Test whether the ProxyConfigSource set by the ProxyConfigService is applied
387 // to ProxyInfo after the proxy is resolved via a PAC script.
388 ProxyConfig config =
389 ProxyConfig::CreateFromCustomPacURL(GURL("http://foopy/proxy.pac"));
390 config.set_source(PROXY_CONFIG_SOURCE_TEST);
391
392 MockProxyConfigService* config_service = new MockProxyConfigService(config);
393 MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver;
394 ProxyService service(config_service, resolver, NULL);
395
396 // Resolve something.
397 GURL url("http://www.google.com/");
398 ProxyInfo info;
399 TestCompletionCallback callback;
400 int rv = service.ResolveProxy(
401 url, &info, callback.callback(), NULL, BoundNetLog());
402 ASSERT_EQ(ERR_IO_PENDING, rv);
403 resolver->pending_set_pac_script_request()->CompleteNow(OK);
404 ASSERT_EQ(1u, resolver->pending_requests().size());
405
406 // Set the result in proxy resolver.
407 resolver->pending_requests()[0]->results()->UseNamedProxy("foopy");
408 resolver->pending_requests()[0]->CompleteNow(OK);
409
410 EXPECT_EQ(OK, callback.WaitForResult());
411 EXPECT_EQ(PROXY_CONFIG_SOURCE_TEST, info.config_source());
412 }
413
385 TEST_F(ProxyServiceTest, ProxyResolverFails) { 414 TEST_F(ProxyServiceTest, ProxyResolverFails) {
386 // Test what happens when the ProxyResolver fails. The download and setting 415 // Test what happens when the ProxyResolver fails. The download and setting
387 // of the PAC script have already succeeded, so this corresponds with a 416 // of the PAC script have already succeeded, so this corresponds with a
388 // javascript runtime error while calling FindProxyForURL(). 417 // javascript runtime error while calling FindProxyForURL().
389 418
390 MockProxyConfigService* config_service = 419 MockProxyConfigService* config_service =
391 new MockProxyConfigService("http://foopy/proxy.pac"); 420 new MockProxyConfigService("http://foopy/proxy.pac");
392 421
393 MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; 422 MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver;
394 423
(...skipping 718 matching lines...) Expand 10 before | Expand all | Expand 10 after
1113 ProxyInfo info; 1142 ProxyInfo info;
1114 TestCompletionCallback callback; 1143 TestCompletionCallback callback;
1115 int rv = service.ResolveProxy(test_url, &info, callback.callback(), NULL, 1144 int rv = service.ResolveProxy(test_url, &info, callback.callback(), NULL,
1116 BoundNetLog()); 1145 BoundNetLog());
1117 EXPECT_EQ(OK, rv); 1146 EXPECT_EQ(OK, rv);
1118 EXPECT_FALSE(info.is_direct()); 1147 EXPECT_FALSE(info.is_direct());
1119 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); 1148 EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI());
1120 } 1149 }
1121 } 1150 }
1122 1151
1152 TEST_F(ProxyServiceTest, ProxyConfigSourcePropagates) {
1153 // Test that the proxy config source is set correctly when resolving proxies
1154 // using manual proxy rules. Namely, the config source should only be set if
1155 // any of the rules were applied.
1156 {
1157 ProxyConfig config;
1158 config.set_source(PROXY_CONFIG_SOURCE_TEST);
1159 config.proxy_rules().ParseFromString("https=foopy2:8080");
1160 ProxyService service(
1161 new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL);
1162 GURL test_url("http://www.google.com");
1163 ProxyInfo info;
1164 TestCompletionCallback callback;
1165 int rv = service.ResolveProxy(test_url, &info, callback.callback(), NULL,
1166 BoundNetLog());
1167 ASSERT_EQ(OK, rv);
1168 // Should be SOURCE_NONE, since there are no HTTP proxies configured.
1169 EXPECT_EQ(PROXY_CONFIG_SOURCE_NONE, info.config_source());
1170 }
1171 {
1172 ProxyConfig config;
1173 config.set_source(PROXY_CONFIG_SOURCE_TEST);
1174 config.proxy_rules().ParseFromString("https=foopy2:8080");
1175 ProxyService service(
1176 new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL);
1177 GURL test_url("https://www.google.com");
1178 ProxyInfo info;
1179 TestCompletionCallback callback;
1180 int rv = service.ResolveProxy(test_url, &info, callback.callback(), NULL,
1181 BoundNetLog());
1182 ASSERT_EQ(OK, rv);
1183 // Used the HTTPS proxy. So source should be TEST.
1184 EXPECT_EQ(PROXY_CONFIG_SOURCE_TEST, info.config_source());
1185 }
1186 {
1187 ProxyConfig config;
1188 config.set_source(PROXY_CONFIG_SOURCE_TEST);
1189 ProxyService service(
1190 new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL);
1191 GURL test_url("http://www.google.com");
1192 ProxyInfo info;
1193 TestCompletionCallback callback;
1194 int rv = service.ResolveProxy(test_url, &info, callback.callback(), NULL,
1195 BoundNetLog());
1196 ASSERT_EQ(OK, rv);
1197 // ProxyConfig is empty. Source should be NONE.
1198 EXPECT_EQ(PROXY_CONFIG_SOURCE_NONE, info.config_source());
1199 }
1200 }
1201
1123 // If only HTTP and a SOCKS proxy are specified, check if ftp/https queries 1202 // If only HTTP and a SOCKS proxy are specified, check if ftp/https queries
1124 // fall back to the SOCKS proxy. 1203 // fall back to the SOCKS proxy.
1125 TEST_F(ProxyServiceTest, DefaultProxyFallbackToSOCKS) { 1204 TEST_F(ProxyServiceTest, DefaultProxyFallbackToSOCKS) {
1126 ProxyConfig config; 1205 ProxyConfig config;
1127 config.proxy_rules().ParseFromString("http=foopy1:8080;socks=foopy2:1080"); 1206 config.proxy_rules().ParseFromString("http=foopy1:8080;socks=foopy2:1080");
1128 config.set_auto_detect(false); 1207 config.set_auto_detect(false);
1129 EXPECT_EQ(ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, 1208 EXPECT_EQ(ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME,
1130 config.proxy_rules().type); 1209 config.proxy_rules().type);
1131 1210
1132 { 1211 {
(...skipping 1449 matching lines...) Expand 10 before | Expand all | Expand 10 after
2582 ProxyInfo info3; 2661 ProxyInfo info3;
2583 TestCompletionCallback callback3; 2662 TestCompletionCallback callback3;
2584 rv = service.ResolveProxy( 2663 rv = service.ResolveProxy(
2585 GURL("http://request3"), &info3, callback3.callback(), NULL, 2664 GURL("http://request3"), &info3, callback3.callback(), NULL,
2586 BoundNetLog()); 2665 BoundNetLog());
2587 EXPECT_EQ(OK, rv); 2666 EXPECT_EQ(OK, rv);
2588 EXPECT_TRUE(info3.is_direct()); 2667 EXPECT_TRUE(info3.is_direct());
2589 } 2668 }
2590 2669
2591 } // namespace net 2670 } // namespace net
OLDNEW
« net/proxy/proxy_service.cc ('K') | « net/proxy/proxy_service.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698