| Index: net/proxy/proxy_service_unittest.cc
|
| diff --git a/net/proxy/proxy_service_unittest.cc b/net/proxy/proxy_service_unittest.cc
|
| index f153fad2cceeda9189e621c575a9e8234993b90b..6c4ebaacc3cf7e61af753297b675b83c8a1eca27 100644
|
| --- a/net/proxy/proxy_service_unittest.cc
|
| +++ b/net/proxy/proxy_service_unittest.cc
|
| @@ -3081,4 +3081,89 @@ TEST_F(ProxyServiceTest, PACScriptRefetchAfterActivity) {
|
| EXPECT_TRUE(info3.is_direct());
|
| }
|
|
|
| +// Test that the PAC script is not evaluated if a null callback is supplied.
|
| +TEST_F(ProxyServiceTest, PACWithNullCallback) {
|
| + MockProxyConfigService* config_service =
|
| + new MockProxyConfigService("http://foopy/proxy.pac");
|
| +
|
| + MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver;
|
| +
|
| + ProxyService service(config_service, resolver, NULL);
|
| +
|
| + GURL url("http://www.google.com/");
|
| +
|
| + ProxyInfo info;
|
| + info.UseDirect();
|
| + net::CompletionCallback null_callback;
|
| + ASSERT_TRUE(null_callback.is_null());
|
| + ProxyService::PacRequest* request = NULL;
|
| + CapturingBoundNetLog log;
|
| +
|
| + int rv = service.ResolveProxy(
|
| + url, net::LOAD_NORMAL, &info, null_callback, &request, NULL, log.bound());
|
| + EXPECT_EQ(ERR_IO_PENDING, rv);
|
| +
|
| + // No request should have been queued.
|
| + EXPECT_EQ(0u, resolver->pending_requests().size());
|
| +
|
| + // |request| should not have been unmodified.
|
| + EXPECT_EQ(NULL, request);
|
| +
|
| + // |info| should not have been modified.
|
| + EXPECT_TRUE(info.is_direct());
|
| +}
|
| +
|
| +// Test that the PAC script is not evaluated if a null callback and request are
|
| +// supplied.
|
| +TEST_F(ProxyServiceTest, PACWithNullCallbackAndRequest) {
|
| + MockProxyConfigService* config_service =
|
| + new MockProxyConfigService("http://foopy/proxy.pac");
|
| +
|
| + MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver;
|
| +
|
| + ProxyService service(config_service, resolver, NULL);
|
| +
|
| + GURL url("http://www.google.com/");
|
| +
|
| + ProxyInfo info;
|
| + info.UseDirect();
|
| + net::CompletionCallback null_callback;
|
| + ASSERT_TRUE(null_callback.is_null());
|
| + CapturingBoundNetLog log;
|
| +
|
| + int rv = service.ResolveProxy(
|
| + url, net::LOAD_NORMAL, &info, null_callback, NULL, NULL, log.bound());
|
| + EXPECT_EQ(ERR_IO_PENDING, rv);
|
| +
|
| + // No request should have been queued.
|
| + EXPECT_EQ(0u, resolver->pending_requests().size());
|
| +
|
| + // |info| should not have been modified.
|
| + EXPECT_TRUE(info.is_direct());
|
| +}
|
| +
|
| +// Test that synchronous results are returned correctly if a null callback is
|
| +// supplied
|
| +TEST_F(ProxyServiceTest, SynchronousResponseWithNullCallbackAndRequest) {
|
| + ProxyConfig config;
|
| + config.proxy_rules().ParseFromString("foopy1:8080");
|
| + config.set_auto_detect(false);
|
| +
|
| + ProxyService service(
|
| + new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL);
|
| +
|
| + GURL url("http://www.google.com/");
|
| +
|
| + ProxyInfo info;
|
| + net::CompletionCallback null_callback;
|
| + ASSERT_TRUE(null_callback.is_null());
|
| + CapturingBoundNetLog log;
|
| +
|
| + int rv = service.ResolveProxy(
|
| + url, net::LOAD_NORMAL, &info, null_callback, NULL, NULL, log.bound());
|
| + EXPECT_EQ(OK, rv);
|
| + EXPECT_FALSE(info.is_direct());
|
| + EXPECT_EQ("foopy1", info.proxy_server().host_port_pair().host());
|
| +}
|
| +
|
| } // namespace net
|
|
|