| Index: net/proxy/proxy_service_unittest.cc
|
| diff --git a/net/proxy/proxy_service_unittest.cc b/net/proxy/proxy_service_unittest.cc
|
| index abd6d6aa075205326a184eef3174591f83fde48c..cec0035f721fd4d9ba96f545833dbb9554628617 100644
|
| --- a/net/proxy/proxy_service_unittest.cc
|
| +++ b/net/proxy/proxy_service_unittest.cc
|
| @@ -216,6 +216,7 @@ TEST_F(ProxyServiceTest, PAC) {
|
| EXPECT_EQ(OK, callback.WaitForResult());
|
| EXPECT_FALSE(info.is_direct());
|
| EXPECT_EQ("foopy:80", info.proxy_server().ToURI());
|
| + EXPECT_TRUE(info.did_use_pac_script());
|
|
|
| // Check the NetLog was filled correctly.
|
| CapturingNetLog::CapturedEntryList entries;
|
| @@ -292,6 +293,7 @@ TEST_F(ProxyServiceTest, PAC_FailoverWithoutDirect) {
|
| EXPECT_EQ(OK, callback1.WaitForResult());
|
| EXPECT_FALSE(info.is_direct());
|
| EXPECT_EQ("foopy:8080", info.proxy_server().ToURI());
|
| + EXPECT_TRUE(info.did_use_pac_script());
|
|
|
| // Now, imagine that connecting to foopy:8080 fails: there is nothing
|
| // left to fallback to, since our proxy list was NOT terminated by
|
| @@ -382,6 +384,36 @@ TEST_F(ProxyServiceTest, PAC_FailoverAfterDirect) {
|
| EXPECT_TRUE(info.is_empty());
|
| }
|
|
|
| +TEST_F(ProxyServiceTest, PAC_ConfigSourcePropagates) {
|
| + // Test whether the ProxyConfigSource set by the ProxyConfigService is applied
|
| + // to ProxyInfo after the proxy is resolved via a PAC script.
|
| + ProxyConfig config =
|
| + ProxyConfig::CreateFromCustomPacURL(GURL("http://foopy/proxy.pac"));
|
| + config.set_source(PROXY_CONFIG_SOURCE_TEST);
|
| +
|
| + MockProxyConfigService* config_service = new MockProxyConfigService(config);
|
| + MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver;
|
| + ProxyService service(config_service, resolver, NULL);
|
| +
|
| + // Resolve something.
|
| + GURL url("http://www.google.com/");
|
| + ProxyInfo info;
|
| + TestCompletionCallback callback;
|
| + int rv = service.ResolveProxy(
|
| + url, &info, callback.callback(), NULL, BoundNetLog());
|
| + ASSERT_EQ(ERR_IO_PENDING, rv);
|
| + resolver->pending_set_pac_script_request()->CompleteNow(OK);
|
| + ASSERT_EQ(1u, resolver->pending_requests().size());
|
| +
|
| + // Set the result in proxy resolver.
|
| + resolver->pending_requests()[0]->results()->UseNamedProxy("foopy");
|
| + resolver->pending_requests()[0]->CompleteNow(OK);
|
| +
|
| + EXPECT_EQ(OK, callback.WaitForResult());
|
| + EXPECT_EQ(PROXY_CONFIG_SOURCE_TEST, info.config_source());
|
| + EXPECT_TRUE(info.did_use_pac_script());
|
| +}
|
| +
|
| TEST_F(ProxyServiceTest, ProxyResolverFails) {
|
| // Test what happens when the ProxyResolver fails. The download and setting
|
| // of the PAC script have already succeeded, so this corresponds with a
|
| @@ -1120,6 +1152,56 @@ TEST_F(ProxyServiceTest, PerProtocolProxyTests) {
|
| }
|
| }
|
|
|
| +TEST_F(ProxyServiceTest, ProxyConfigSourcePropagates) {
|
| + // Test that the proxy config source is set correctly when resolving proxies
|
| + // using manual proxy rules. Namely, the config source should only be set if
|
| + // any of the rules were applied.
|
| + {
|
| + ProxyConfig config;
|
| + config.set_source(PROXY_CONFIG_SOURCE_TEST);
|
| + config.proxy_rules().ParseFromString("https=foopy2:8080");
|
| + ProxyService service(
|
| + new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL);
|
| + GURL test_url("http://www.google.com");
|
| + ProxyInfo info;
|
| + TestCompletionCallback callback;
|
| + int rv = service.ResolveProxy(test_url, &info, callback.callback(), NULL,
|
| + BoundNetLog());
|
| + ASSERT_EQ(OK, rv);
|
| + // Should be SOURCE_TEST, even if there are no HTTP proxies configured.
|
| + EXPECT_EQ(PROXY_CONFIG_SOURCE_TEST, info.config_source());
|
| + }
|
| + {
|
| + ProxyConfig config;
|
| + config.set_source(PROXY_CONFIG_SOURCE_TEST);
|
| + config.proxy_rules().ParseFromString("https=foopy2:8080");
|
| + ProxyService service(
|
| + new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL);
|
| + GURL test_url("https://www.google.com");
|
| + ProxyInfo info;
|
| + TestCompletionCallback callback;
|
| + int rv = service.ResolveProxy(test_url, &info, callback.callback(), NULL,
|
| + BoundNetLog());
|
| + ASSERT_EQ(OK, rv);
|
| + // Used the HTTPS proxy. So source should be TEST.
|
| + EXPECT_EQ(PROXY_CONFIG_SOURCE_TEST, info.config_source());
|
| + }
|
| + {
|
| + ProxyConfig config;
|
| + config.set_source(PROXY_CONFIG_SOURCE_TEST);
|
| + ProxyService service(
|
| + new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL);
|
| + GURL test_url("http://www.google.com");
|
| + ProxyInfo info;
|
| + TestCompletionCallback callback;
|
| + int rv = service.ResolveProxy(test_url, &info, callback.callback(), NULL,
|
| + BoundNetLog());
|
| + ASSERT_EQ(OK, rv);
|
| + // ProxyConfig is empty. Source should still be TEST.
|
| + EXPECT_EQ(PROXY_CONFIG_SOURCE_TEST, info.config_source());
|
| + }
|
| +}
|
| +
|
| // If only HTTP and a SOCKS proxy are specified, check if ftp/https queries
|
| // fall back to the SOCKS proxy.
|
| TEST_F(ProxyServiceTest, DefaultProxyFallbackToSOCKS) {
|
|
|