diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/http/http_network_layer.cc | 5 | ||||
-rw-r--r-- | net/http/http_network_layer.h | 7 | ||||
-rw-r--r-- | net/http/http_network_layer_unittest.cc | 9 | ||||
-rw-r--r-- | net/http/http_network_session.h | 6 | ||||
-rw-r--r-- | net/http/http_network_transaction_unittest.cc | 29 | ||||
-rw-r--r-- | net/proxy/proxy_script_fetcher_unittest.cc | 1 | ||||
-rw-r--r-- | net/proxy/proxy_service.cc | 3 | ||||
-rw-r--r-- | net/proxy/proxy_service.h | 5 | ||||
-rw-r--r-- | net/proxy/proxy_service_unittest.cc | 303 | ||||
-rw-r--r-- | net/tools/fetch/fetch_client.cc | 6 | ||||
-rw-r--r-- | net/url_request/url_request_context.h | 8 | ||||
-rw-r--r-- | net/url_request/url_request_unittest.cc | 1 | ||||
-rw-r--r-- | net/url_request/url_request_unittest.h | 1 |
13 files changed, 195 insertions, 189 deletions
diff --git a/net/http/http_network_layer.cc b/net/http/http_network_layer.cc index 6c3829e..9d1509d 100644 --- a/net/http/http_network_layer.cc +++ b/net/http/http_network_layer.cc @@ -46,8 +46,6 @@ HttpNetworkLayer::HttpNetworkLayer(ClientSocketFactory* socket_factory, HttpNetworkLayer::HttpNetworkLayer(HttpNetworkSession* session) : socket_factory_(ClientSocketFactory::GetDefaultFactory()), - host_resolver_(NULL), - proxy_service_(NULL), session_(session), suspended_(false) { DCHECK(session_.get()); @@ -79,6 +77,9 @@ HttpNetworkSession* HttpNetworkLayer::GetSession() { DCHECK(proxy_service_); session_ = new HttpNetworkSession(host_resolver_, proxy_service_, socket_factory_); + // These were just temps for lazy-initializing HttpNetworkSession. + host_resolver_ = NULL; + proxy_service_ = NULL; } return session_; } diff --git a/net/http/http_network_layer.h b/net/http/http_network_layer.h index b4b430f..bd3cb68 100644 --- a/net/http/http_network_layer.h +++ b/net/http/http_network_layer.h @@ -51,11 +51,10 @@ class HttpNetworkLayer : public HttpTransactionFactory { // The factory we will use to create network sockets. ClientSocketFactory* socket_factory_; - // The host resolver being used for the session. + // The host resolver and proxy service that will used when lazily + // creating |session_|. scoped_refptr<HostResolver> host_resolver_; - - // The proxy service being used for the session. - ProxyService* proxy_service_; + scoped_refptr<ProxyService> proxy_service_; scoped_refptr<HttpNetworkSession> session_; bool suspended_; diff --git a/net/http/http_network_layer_unittest.cc b/net/http/http_network_layer_unittest.cc index d70aa65..0d32335 100644 --- a/net/http/http_network_layer_unittest.cc +++ b/net/http/http_network_layer_unittest.cc @@ -14,17 +14,15 @@ class HttpNetworkLayerTest : public PlatformTest { }; TEST_F(HttpNetworkLayerTest, CreateAndDestroy) { - scoped_ptr<net::ProxyService> proxy_service(net::ProxyService::CreateNull()); net::HttpNetworkLayer factory( - NULL, new net::MockHostResolver, proxy_service.get()); + NULL, new net::MockHostResolver, net::ProxyService::CreateNull()); scoped_ptr<net::HttpTransaction> trans(factory.CreateTransaction()); } TEST_F(HttpNetworkLayerTest, Suspend) { - scoped_ptr<net::ProxyService> proxy_service(net::ProxyService::CreateNull()); net::HttpNetworkLayer factory( - NULL, new net::MockHostResolver, proxy_service.get()); + NULL, new net::MockHostResolver, net::ProxyService::CreateNull()); scoped_ptr<net::HttpTransaction> trans(factory.CreateTransaction()); trans.reset(); @@ -55,9 +53,8 @@ TEST_F(HttpNetworkLayerTest, GET) { net::StaticMockSocket data(data_reads, data_writes); mock_socket_factory.AddMockSocket(&data); - scoped_ptr<net::ProxyService> proxy_service(net::ProxyService::CreateNull()); net::HttpNetworkLayer factory(&mock_socket_factory, new net::MockHostResolver, - proxy_service.get()); + net::ProxyService::CreateNull()); TestCompletionCallback callback; diff --git a/net/http/http_network_session.h b/net/http/http_network_session.h index 487ade4..9e867d7 100644 --- a/net/http/http_network_session.h +++ b/net/http/http_network_session.h @@ -6,16 +6,16 @@ #define NET_HTTP_HTTP_NETWORK_SESSION_H_ #include "base/ref_counted.h" +#include "net/base/host_resolver.h" #include "net/base/ssl_client_auth_cache.h" #include "net/base/ssl_config_service.h" #include "net/http/http_auth_cache.h" +#include "net/proxy/proxy_service.h" #include "net/socket/tcp_client_socket_pool.h" namespace net { class ClientSocketFactory; -class HostResolver; -class ProxyService; // This class holds session objects used by HttpNetworkTransaction objects. class HttpNetworkSession : public base::RefCounted<HttpNetworkSession> { @@ -51,7 +51,7 @@ class HttpNetworkSession : public base::RefCounted<HttpNetworkSession> { SSLClientAuthCache ssl_client_auth_cache_; scoped_refptr<ClientSocketPool> connection_pool_; scoped_refptr<HostResolver> host_resolver_; - ProxyService* proxy_service_; + scoped_refptr<ProxyService> proxy_service_; #if defined(OS_WIN) // TODO(port): Port the SSLConfigService class to Linux and Mac OS X. SSLConfigService ssl_config_service_; diff --git a/net/http/http_network_transaction_unittest.cc b/net/http/http_network_transaction_unittest.cc index e298f64..ac10c99 100644 --- a/net/http/http_network_transaction_unittest.cc +++ b/net/http/http_network_transaction_unittest.cc @@ -43,7 +43,7 @@ class SessionDependencies { : host_resolver(new MockHostResolver), proxy_service(proxy_service) {} scoped_refptr<MockHostResolverBase> host_resolver; - scoped_ptr<ProxyService> proxy_service; + scoped_refptr<ProxyService> proxy_service; MockClientSocketFactory socket_factory; }; @@ -56,7 +56,7 @@ ProxyService* CreateFixedProxyService(const std::string& proxy) { HttpNetworkSession* CreateSession(SessionDependencies* session_deps) { return new HttpNetworkSession(session_deps->host_resolver, - session_deps->proxy_service.get(), + session_deps->proxy_service, &session_deps->socket_factory); } @@ -3053,9 +3053,8 @@ TEST_F(HttpNetworkTransactionTest, BuildRequest_ExtraHeaders) { } TEST_F(HttpNetworkTransactionTest, SOCKS4_HTTP_GET) { - SessionDependencies session_deps; - session_deps.proxy_service.reset(CreateFixedProxyService( - "socks4://myproxy:1080")); + SessionDependencies session_deps( + CreateFixedProxyService("socks4://myproxy:1080")); scoped_ptr<HttpTransaction> trans( new HttpNetworkTransaction( @@ -3106,9 +3105,8 @@ TEST_F(HttpNetworkTransactionTest, SOCKS4_HTTP_GET) { } TEST_F(HttpNetworkTransactionTest, SOCKS4_SSL_GET) { - SessionDependencies session_deps; - session_deps.proxy_service.reset(CreateFixedProxyService( - "socks4://myproxy:1080")); + SessionDependencies session_deps( + CreateFixedProxyService("socks4://myproxy:1080")); scoped_ptr<HttpTransaction> trans( new HttpNetworkTransaction( @@ -3164,9 +3162,8 @@ TEST_F(HttpNetworkTransactionTest, SOCKS4_SSL_GET) { } TEST_F(HttpNetworkTransactionTest, SOCKS5_HTTP_GET) { - SessionDependencies session_deps; - session_deps.proxy_service.reset(CreateFixedProxyService( - "socks5://myproxy:1080")); + SessionDependencies session_deps( + CreateFixedProxyService("socks5://myproxy:1080")); scoped_ptr<HttpTransaction> trans( new HttpNetworkTransaction( @@ -3223,9 +3220,8 @@ TEST_F(HttpNetworkTransactionTest, SOCKS5_HTTP_GET) { } TEST_F(HttpNetworkTransactionTest, SOCKS5_SSL_GET) { - SessionDependencies session_deps; - session_deps.proxy_service.reset(CreateFixedProxyService( - "socks5://myproxy:1080")); + SessionDependencies session_deps( + CreateFixedProxyService("socks5://myproxy:1080")); scoped_ptr<HttpTransaction> trans( new HttpNetworkTransaction( @@ -3327,9 +3323,8 @@ TEST_F(HttpNetworkTransactionTest, GroupNameForProxyConnections) { }; for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) { - SessionDependencies session_deps; - session_deps.proxy_service.reset(CreateFixedProxyService( - tests[i].proxy_server)); + SessionDependencies session_deps( + CreateFixedProxyService(tests[i].proxy_server)); scoped_refptr<CaptureGroupNameSocketPool> conn_pool( new CaptureGroupNameSocketPool()); diff --git a/net/proxy/proxy_script_fetcher_unittest.cc b/net/proxy/proxy_script_fetcher_unittest.cc index 6dd05dc..d421438 100644 --- a/net/proxy/proxy_script_fetcher_unittest.cc +++ b/net/proxy/proxy_script_fetcher_unittest.cc @@ -40,7 +40,6 @@ class RequestContext : public URLRequestContext { } ~RequestContext() { delete http_transaction_factory_; - delete proxy_service_; } }; diff --git a/net/proxy/proxy_service.cc b/net/proxy/proxy_service.cc index 34d7b3c..cc08e53 100644 --- a/net/proxy/proxy_service.cc +++ b/net/proxy/proxy_service.cc @@ -186,6 +186,9 @@ class ProxyService::PacRequest ProxyResolver* resolver() const { return service_->resolver_.get(); } + // Note that we don't hold a reference to the ProxyService. Outstanding + // requests are cancelled during ~ProxyService, so this is guaranteed + // to be valid throughout our lifetime. ProxyService* service_; CompletionCallback* user_callback_; CompletionCallbackImpl<PacRequest> io_callback_; diff --git a/net/proxy/proxy_service.h b/net/proxy/proxy_service.h index 483e055..481aa41 100644 --- a/net/proxy/proxy_service.h +++ b/net/proxy/proxy_service.h @@ -33,11 +33,10 @@ class ProxyScriptFetcher; // This class can be used to resolve the proxy server to use when loading a // HTTP(S) URL. It uses the given ProxyResolver to handle the actual proxy // resolution. See ProxyResolverV8 for example. -class ProxyService { +class ProxyService : public base::RefCountedThreadSafe<ProxyService> { public: // The instance takes ownership of |config_service| and |resolver|. - ProxyService(ProxyConfigService* config_service, - ProxyResolver* resolver); + ProxyService(ProxyConfigService* config_service, ProxyResolver* resolver); ~ProxyService(); diff --git a/net/proxy/proxy_service_unittest.cc b/net/proxy/proxy_service_unittest.cc index 7018cda..9a2c425 100644 --- a/net/proxy/proxy_service_unittest.cc +++ b/net/proxy/proxy_service_unittest.cc @@ -88,17 +88,18 @@ class MockProxyScriptFetcher : public ProxyScriptFetcher { TEST(ProxyServiceTest, Direct) { MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; - ProxyService service(new MockProxyConfigService, resolver); + scoped_refptr<ProxyService> service( + new ProxyService(new MockProxyConfigService, resolver)); GURL url("http://www.google.com/"); ProxyInfo info; TestCompletionCallback callback; scoped_refptr<LoadLog> log(new LoadLog); - int rv = service.ResolveProxy(url, &info, &callback, NULL, log); + int rv = service->ResolveProxy(url, &info, &callback, NULL, log); EXPECT_EQ(OK, rv); EXPECT_TRUE(resolver->pending_requests().empty()); - EXPECT_TRUE(NULL == service.init_proxy_resolver_log()); + EXPECT_TRUE(NULL == service->init_proxy_resolver_log()); EXPECT_TRUE(info.is_direct()); @@ -114,19 +115,20 @@ TEST(ProxyServiceTest, PAC) { MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; - ProxyService service(config_service, resolver); + scoped_refptr<ProxyService> service( + new ProxyService(config_service, resolver)); GURL url("http://www.google.com/"); ProxyInfo info; TestCompletionCallback callback; scoped_refptr<LoadLog> log(new LoadLog); - int rv = service.ResolveProxy(url, &info, &callback, NULL, log); + int rv = service->ResolveProxy(url, &info, &callback, NULL, log); EXPECT_EQ(ERR_IO_PENDING, rv); EXPECT_EQ(GURL("http://foopy/proxy.pac"), resolver->pending_set_pac_script_request()->pac_url()); - EXPECT_FALSE(NULL == service.init_proxy_resolver_log()); + EXPECT_FALSE(NULL == service->init_proxy_resolver_log()); resolver->pending_set_pac_script_request()->CompleteNow(OK); ASSERT_EQ(1u, resolver->pending_requests().size()); @@ -158,13 +160,14 @@ TEST(ProxyServiceTest, PAC_NoIdentityOrHash) { MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; - ProxyService service(config_service, resolver); + scoped_refptr<ProxyService> service( + new ProxyService(config_service, resolver)); GURL url("http://username:password@www.google.com/?ref#hash#hash"); ProxyInfo info; TestCompletionCallback callback; - int rv = service.ResolveProxy(url, &info, &callback, NULL, NULL); + int rv = service->ResolveProxy(url, &info, &callback, NULL, NULL); EXPECT_EQ(ERR_IO_PENDING, rv); EXPECT_EQ(GURL("http://foopy/proxy.pac"), @@ -185,13 +188,14 @@ TEST(ProxyServiceTest, PAC_FailoverToDirect) { new MockProxyConfigService("http://foopy/proxy.pac"); MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; - ProxyService service(config_service, resolver); + scoped_refptr<ProxyService> service( + new ProxyService(config_service, resolver)); GURL url("http://www.google.com/"); ProxyInfo info; TestCompletionCallback callback1; - int rv = service.ResolveProxy(url, &info, &callback1, NULL, NULL); + int rv = service->ResolveProxy(url, &info, &callback1, NULL, NULL); EXPECT_EQ(ERR_IO_PENDING, rv); EXPECT_EQ(GURL("http://foopy/proxy.pac"), @@ -211,7 +215,7 @@ TEST(ProxyServiceTest, PAC_FailoverToDirect) { // Now, imagine that connecting to foopy:8080 fails. TestCompletionCallback callback2; - rv = service.ReconsiderProxyAfterError(url, &info, &callback2, NULL, NULL); + rv = service->ReconsiderProxyAfterError(url, &info, &callback2, NULL, NULL); EXPECT_EQ(OK, rv); EXPECT_TRUE(info.is_direct()); } @@ -227,13 +231,14 @@ TEST(ProxyServiceTest, ProxyResolverFails) { MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; - ProxyService service(config_service, resolver); + scoped_refptr<ProxyService> service( + new ProxyService(config_service, resolver)); // Start first resolve request. GURL url("http://www.google.com/"); ProxyInfo info; TestCompletionCallback callback1; - int rv = service.ResolveProxy(url, &info, &callback1, NULL, NULL); + int rv = service->ResolveProxy(url, &info, &callback1, NULL, NULL); EXPECT_EQ(ERR_IO_PENDING, rv); EXPECT_EQ(GURL("http://foopy/proxy.pac"), @@ -251,7 +256,7 @@ TEST(ProxyServiceTest, ProxyResolverFails) { // The second resolve request will automatically select direct connect, // because it has cached the configuration as being bad. TestCompletionCallback callback2; - rv = service.ResolveProxy(url, &info, &callback2, NULL, NULL); + rv = service->ResolveProxy(url, &info, &callback2, NULL, NULL); EXPECT_EQ(OK, rv); EXPECT_TRUE(info.is_direct()); EXPECT_TRUE(resolver->pending_requests().empty()); @@ -259,7 +264,7 @@ TEST(ProxyServiceTest, ProxyResolverFails) { // But, if that fails, then we should give the proxy config another shot // since we have never tried it with this URL before. TestCompletionCallback callback3; - rv = service.ReconsiderProxyAfterError(url, &info, &callback3, NULL, NULL); + rv = service->ReconsiderProxyAfterError(url, &info, &callback3, NULL, NULL); EXPECT_EQ(ERR_IO_PENDING, rv); ASSERT_EQ(1u, resolver->pending_requests().size()); @@ -283,14 +288,15 @@ TEST(ProxyServiceTest, ProxyFallback) { MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; - ProxyService service(config_service, resolver); + scoped_refptr<ProxyService> service( + new ProxyService(config_service, resolver)); GURL url("http://www.google.com/"); // Get the proxy information. ProxyInfo info; TestCompletionCallback callback1; - int rv = service.ResolveProxy(url, &info, &callback1, NULL, NULL); + int rv = service->ResolveProxy(url, &info, &callback1, NULL, NULL); EXPECT_EQ(ERR_IO_PENDING, rv); EXPECT_EQ(GURL("http://foopy/proxy.pac"), @@ -312,14 +318,14 @@ TEST(ProxyServiceTest, ProxyFallback) { // Fake an error on the proxy. TestCompletionCallback callback2; - rv = service.ReconsiderProxyAfterError(url, &info, &callback2, NULL, NULL); + rv = service->ReconsiderProxyAfterError(url, &info, &callback2, NULL, NULL); EXPECT_EQ(OK, rv); // The second proxy should be specified. EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI()); TestCompletionCallback callback3; - rv = service.ResolveProxy(url, &info, &callback3, NULL, NULL); + rv = service->ResolveProxy(url, &info, &callback3, NULL, NULL); EXPECT_EQ(ERR_IO_PENDING, rv); ASSERT_EQ(1u, resolver->pending_requests().size()); @@ -337,19 +343,19 @@ TEST(ProxyServiceTest, ProxyFallback) { // We fake another error. It should now try the third one. TestCompletionCallback callback4; - rv = service.ReconsiderProxyAfterError(url, &info, &callback4, NULL, NULL); + rv = service->ReconsiderProxyAfterError(url, &info, &callback4, NULL, NULL); EXPECT_EQ(OK, rv); EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI()); // Fake another error, the last proxy is gone, the list should now be empty. TestCompletionCallback callback5; - rv = service.ReconsiderProxyAfterError(url, &info, &callback5, NULL, NULL); + rv = service->ReconsiderProxyAfterError(url, &info, &callback5, NULL, NULL); EXPECT_EQ(OK, rv); // We try direct. EXPECT_TRUE(info.is_direct()); // If it fails again, we don't have anything else to try. TestCompletionCallback callback6; - rv = service.ReconsiderProxyAfterError(url, &info, &callback6, NULL, NULL); + rv = service->ReconsiderProxyAfterError(url, &info, &callback6, NULL, NULL); EXPECT_EQ(ERR_FAILED, rv); // TODO(nsylvain): Test that the proxy can be retried after the delay. @@ -363,14 +369,15 @@ TEST(ProxyServiceTest, ProxyFallback_NewSettings) { MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; - ProxyService service(config_service, resolver); + scoped_refptr<ProxyService> service( + new ProxyService(config_service, resolver)); GURL url("http://www.google.com/"); // Get the proxy information. ProxyInfo info; TestCompletionCallback callback1; - int rv = service.ResolveProxy(url, &info, &callback1, NULL, NULL); + int rv = service->ResolveProxy(url, &info, &callback1, NULL, NULL); EXPECT_EQ(ERR_IO_PENDING, rv); EXPECT_EQ(GURL("http://foopy/proxy.pac"), @@ -395,7 +402,7 @@ TEST(ProxyServiceTest, ProxyFallback_NewSettings) { config_service->config.pac_url = GURL("http://foopy-new/proxy.pac"); TestCompletionCallback callback2; - rv = service.ReconsiderProxyAfterError(url, &info, &callback2, NULL, NULL); + rv = service->ReconsiderProxyAfterError(url, &info, &callback2, NULL, NULL); EXPECT_EQ(ERR_IO_PENDING, rv); EXPECT_EQ(GURL("http://foopy-new/proxy.pac"), @@ -415,7 +422,7 @@ TEST(ProxyServiceTest, ProxyFallback_NewSettings) { // We fake another error. It should now ignore the first one. TestCompletionCallback callback3; - rv = service.ReconsiderProxyAfterError(url, &info, &callback3, NULL, NULL); + rv = service->ReconsiderProxyAfterError(url, &info, &callback3, NULL, NULL); EXPECT_EQ(OK, rv); EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI()); @@ -425,7 +432,7 @@ TEST(ProxyServiceTest, ProxyFallback_NewSettings) { // We fake another error. It should go back to the first proxy. TestCompletionCallback callback4; - rv = service.ReconsiderProxyAfterError(url, &info, &callback4, NULL, NULL); + rv = service->ReconsiderProxyAfterError(url, &info, &callback4, NULL, NULL); EXPECT_EQ(ERR_IO_PENDING, rv); EXPECT_EQ(GURL("http://foopy-new2/proxy.pac"), @@ -451,14 +458,15 @@ TEST(ProxyServiceTest, ProxyFallback_BadConfig) { MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; - ProxyService service(config_service, resolver); + scoped_refptr<ProxyService> service( + new ProxyService(config_service, resolver)); GURL url("http://www.google.com/"); // Get the proxy information. ProxyInfo info; TestCompletionCallback callback1; - int rv = service.ResolveProxy(url, &info, &callback1, NULL, NULL); + int rv = service->ResolveProxy(url, &info, &callback1, NULL, NULL); EXPECT_EQ(ERR_IO_PENDING, rv); EXPECT_EQ(GURL("http://foopy/proxy.pac"), @@ -478,7 +486,7 @@ TEST(ProxyServiceTest, ProxyFallback_BadConfig) { // Fake a proxy error. TestCompletionCallback callback2; - rv = service.ReconsiderProxyAfterError(url, &info, &callback2, NULL, NULL); + rv = service->ReconsiderProxyAfterError(url, &info, &callback2, NULL, NULL); EXPECT_EQ(OK, rv); // The first proxy is ignored, and the second one is selected. @@ -488,7 +496,7 @@ TEST(ProxyServiceTest, ProxyFallback_BadConfig) { // Fake a PAC failure. ProxyInfo info2; TestCompletionCallback callback3; - rv = service.ResolveProxy(url, &info2, &callback3, NULL, NULL); + rv = service->ResolveProxy(url, &info2, &callback3, NULL, NULL); EXPECT_EQ(ERR_IO_PENDING, rv); ASSERT_EQ(1u, resolver->pending_requests().size()); @@ -507,7 +515,7 @@ TEST(ProxyServiceTest, ProxyFallback_BadConfig) { // to check the config since everything works. ProxyInfo info3; TestCompletionCallback callback4; - rv = service.ResolveProxy(url, &info3, &callback4, NULL, NULL); + rv = service->ResolveProxy(url, &info3, &callback4, NULL, NULL); EXPECT_EQ(OK, rv); EXPECT_TRUE(info3.is_direct()); @@ -515,7 +523,7 @@ TEST(ProxyServiceTest, ProxyFallback_BadConfig) { // resolve the proxy before, and if not (like in this case), we give the // PAC another try. TestCompletionCallback callback5; - rv = service.ReconsiderProxyAfterError(url, &info3, &callback5, NULL, NULL); + rv = service->ReconsiderProxyAfterError(url, &info3, &callback5, NULL, NULL); EXPECT_EQ(ERR_IO_PENDING, rv); ASSERT_EQ(1u, resolver->pending_requests().size()); @@ -541,22 +549,22 @@ TEST(ProxyServiceTest, ProxyBypassList) { config.proxy_bypass_local_names = true; { - ProxyService service(new MockProxyConfigService(config), - new MockAsyncProxyResolver()); + scoped_refptr<ProxyService> service(new ProxyService( + new MockProxyConfigService(config), new MockAsyncProxyResolver())); GURL url("http://www.google.com/"); // Get the proxy information. TestCompletionCallback callback; - int rv = service.ResolveProxy(url, &info, &callback, NULL, NULL); + int rv = service->ResolveProxy(url, &info, &callback, NULL, NULL); EXPECT_EQ(OK, rv); EXPECT_FALSE(info.is_direct()); } { - ProxyService service(new MockProxyConfigService(config), - new MockAsyncProxyResolver()); + scoped_refptr<ProxyService> service(new ProxyService( + new MockProxyConfigService(config), new MockAsyncProxyResolver())); GURL test_url("http://local"); TestCompletionCallback callback; - int rv = service.ResolveProxy(test_url, &info, &callback, NULL, NULL); + int rv = service->ResolveProxy(test_url, &info, &callback, NULL, NULL); EXPECT_EQ(OK, rv); EXPECT_TRUE(info.is_direct()); } @@ -565,11 +573,11 @@ TEST(ProxyServiceTest, ProxyBypassList) { config.proxy_bypass.push_back("*.org"); config.proxy_bypass_local_names = true; { - ProxyService service(new MockProxyConfigService(config), - new MockAsyncProxyResolver); + scoped_refptr<ProxyService> service(new ProxyService( + new MockProxyConfigService(config), new MockAsyncProxyResolver)); GURL test_url("http://www.webkit.org"); TestCompletionCallback callback; - int rv = service.ResolveProxy(test_url, &info, &callback, NULL, NULL); + int rv = service->ResolveProxy(test_url, &info, &callback, NULL, NULL); EXPECT_EQ(OK, rv); EXPECT_TRUE(info.is_direct()); } @@ -579,11 +587,11 @@ TEST(ProxyServiceTest, ProxyBypassList) { config.proxy_bypass.push_back("7*"); config.proxy_bypass_local_names = true; { - ProxyService service(new MockProxyConfigService(config), - new MockAsyncProxyResolver); + scoped_refptr<ProxyService> service(new ProxyService( + new MockProxyConfigService(config), new MockAsyncProxyResolver)); GURL test_url("http://74.125.19.147"); TestCompletionCallback callback; - int rv = service.ResolveProxy(test_url, &info, &callback, NULL, NULL); + int rv = service->ResolveProxy(test_url, &info, &callback, NULL, NULL); EXPECT_EQ(OK, rv); EXPECT_TRUE(info.is_direct()); } @@ -592,11 +600,11 @@ TEST(ProxyServiceTest, ProxyBypassList) { config.proxy_bypass.push_back("*.org"); config.proxy_bypass_local_names = true; { - ProxyService service(new MockProxyConfigService(config), - new MockAsyncProxyResolver); + scoped_refptr<ProxyService> service(new ProxyService( + new MockProxyConfigService(config), new MockAsyncProxyResolver)); GURL test_url("http://www.msn.com"); TestCompletionCallback callback; - int rv = service.ResolveProxy(test_url, &info, &callback, NULL, NULL); + int rv = service->ResolveProxy(test_url, &info, &callback, NULL, NULL); EXPECT_EQ(OK, rv); EXPECT_FALSE(info.is_direct()); } @@ -605,11 +613,11 @@ TEST(ProxyServiceTest, ProxyBypassList) { config.proxy_bypass.push_back("*.MSN.COM"); config.proxy_bypass_local_names = true; { - ProxyService service(new MockProxyConfigService(config), - new MockAsyncProxyResolver); + scoped_refptr<ProxyService> service(new ProxyService( + new MockProxyConfigService(config), new MockAsyncProxyResolver)); GURL test_url("http://www.msnbc.msn.com"); TestCompletionCallback callback; - int rv = service.ResolveProxy(test_url, &info, &callback, NULL, NULL); + int rv = service->ResolveProxy(test_url, &info, &callback, NULL, NULL); EXPECT_EQ(OK, rv); EXPECT_TRUE(info.is_direct()); } @@ -618,11 +626,11 @@ TEST(ProxyServiceTest, ProxyBypassList) { config.proxy_bypass.push_back("*.msn.com"); config.proxy_bypass_local_names = true; { - ProxyService service(new MockProxyConfigService(config), - new MockAsyncProxyResolver); + scoped_refptr<ProxyService> service(new ProxyService( + new MockProxyConfigService(config), new MockAsyncProxyResolver)); GURL test_url("HTTP://WWW.MSNBC.MSN.COM"); TestCompletionCallback callback; - int rv = service.ResolveProxy(test_url, &info, &callback, NULL, NULL); + int rv = service->ResolveProxy(test_url, &info, &callback, NULL, NULL); EXPECT_EQ(OK, rv); EXPECT_TRUE(info.is_direct()); } @@ -639,26 +647,26 @@ TEST(ProxyServiceTest, ProxyBypassListWithPorts) { config.proxy_bypass.clear(); config.proxy_bypass.push_back("*.example.com:99"); { - ProxyService service(new MockProxyConfigService(config), - new MockAsyncProxyResolver); + scoped_refptr<ProxyService> service(new ProxyService( + new MockProxyConfigService(config), new MockAsyncProxyResolver)); { GURL test_url("http://www.example.com:99"); TestCompletionCallback callback; - int rv = service.ResolveProxy(test_url, &info, &callback, NULL, NULL); + int rv = service->ResolveProxy(test_url, &info, &callback, NULL, NULL); EXPECT_EQ(OK, rv); EXPECT_TRUE(info.is_direct()); } { GURL test_url("http://www.example.com:100"); TestCompletionCallback callback; - int rv = service.ResolveProxy(test_url, &info, &callback, NULL, NULL); + int rv = service->ResolveProxy(test_url, &info, &callback, NULL, NULL); EXPECT_EQ(OK, rv); EXPECT_FALSE(info.is_direct()); } { GURL test_url("http://www.example.com"); TestCompletionCallback callback; - int rv = service.ResolveProxy(test_url, &info, &callback, NULL, NULL); + int rv = service->ResolveProxy(test_url, &info, &callback, NULL, NULL); EXPECT_EQ(OK, rv); EXPECT_FALSE(info.is_direct()); } @@ -667,11 +675,11 @@ TEST(ProxyServiceTest, ProxyBypassListWithPorts) { config.proxy_bypass.clear(); config.proxy_bypass.push_back("*.example.com:80"); { - ProxyService service(new MockProxyConfigService(config), - new MockAsyncProxyResolver); + scoped_refptr<ProxyService> service(new ProxyService( + new MockProxyConfigService(config), new MockAsyncProxyResolver)); GURL test_url("http://www.example.com"); TestCompletionCallback callback; - int rv = service.ResolveProxy(test_url, &info, &callback, NULL, NULL); + int rv = service->ResolveProxy(test_url, &info, &callback, NULL, NULL); EXPECT_EQ(OK, rv); EXPECT_TRUE(info.is_direct()); } @@ -679,11 +687,11 @@ TEST(ProxyServiceTest, ProxyBypassListWithPorts) { config.proxy_bypass.clear(); config.proxy_bypass.push_back("*.example.com"); { - ProxyService service(new MockProxyConfigService(config), - new MockAsyncProxyResolver); + scoped_refptr<ProxyService> service(new ProxyService( + new MockProxyConfigService(config), new MockAsyncProxyResolver)); GURL test_url("http://www.example.com:99"); TestCompletionCallback callback; - int rv = service.ResolveProxy(test_url, &info, &callback, NULL, NULL); + int rv = service->ResolveProxy(test_url, &info, &callback, NULL, NULL); EXPECT_EQ(OK, rv); EXPECT_TRUE(info.is_direct()); } @@ -692,19 +700,19 @@ TEST(ProxyServiceTest, ProxyBypassListWithPorts) { config.proxy_bypass.clear(); config.proxy_bypass.push_back("[3ffe:2a00:100:7031::1]:99"); { - ProxyService service(new MockProxyConfigService(config), - new MockAsyncProxyResolver); + scoped_refptr<ProxyService> service(new ProxyService( + new MockProxyConfigService(config), new MockAsyncProxyResolver)); { GURL test_url("http://[3ffe:2a00:100:7031::1]:99/"); TestCompletionCallback callback; - int rv = service.ResolveProxy(test_url, &info, &callback, NULL, NULL); + int rv = service->ResolveProxy(test_url, &info, &callback, NULL, NULL); EXPECT_EQ(OK, rv); EXPECT_TRUE(info.is_direct()); } { GURL test_url("http://[3ffe:2a00:100:7031::1]/"); TestCompletionCallback callback; - int rv = service.ResolveProxy(test_url, &info, &callback, NULL, NULL); + int rv = service->ResolveProxy(test_url, &info, &callback, NULL, NULL); EXPECT_EQ(OK, rv); EXPECT_FALSE(info.is_direct()); } @@ -716,19 +724,19 @@ TEST(ProxyServiceTest, ProxyBypassListWithPorts) { config.proxy_bypass.clear(); config.proxy_bypass.push_back("[3ffe:2a00:100:7031::1]"); { - ProxyService service(new MockProxyConfigService(config), - new MockAsyncProxyResolver); + scoped_refptr<ProxyService> service(new ProxyService( + new MockProxyConfigService(config), new MockAsyncProxyResolver)); { GURL test_url("http://[3ffe:2a00:100:7031::1]:99/"); TestCompletionCallback callback; - int rv = service.ResolveProxy(test_url, &info, &callback, NULL, NULL); + int rv = service->ResolveProxy(test_url, &info, &callback, NULL, NULL); EXPECT_EQ(OK, rv); EXPECT_TRUE(info.is_direct()); } { GURL test_url("http://[3ffe:2a00:100:7031::1]/"); TestCompletionCallback callback; - int rv = service.ResolveProxy(test_url, &info, &callback, NULL, NULL); + int rv = service->ResolveProxy(test_url, &info, &callback, NULL, NULL); EXPECT_EQ(OK, rv); EXPECT_TRUE(info.is_direct()); } @@ -740,46 +748,46 @@ TEST(ProxyServiceTest, PerProtocolProxyTests) { config.proxy_rules.ParseFromString("http=foopy1:8080;https=foopy2:8080"); config.auto_detect = false; { - ProxyService service(new MockProxyConfigService(config), - new MockAsyncProxyResolver); + scoped_refptr<ProxyService> service(new ProxyService( + new MockProxyConfigService(config), new MockAsyncProxyResolver)); GURL test_url("http://www.msn.com"); ProxyInfo info; TestCompletionCallback callback; - int rv = service.ResolveProxy(test_url, &info, &callback, NULL, NULL); + int rv = service->ResolveProxy(test_url, &info, &callback, NULL, NULL); EXPECT_EQ(OK, rv); EXPECT_FALSE(info.is_direct()); EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); } { - ProxyService service(new MockProxyConfigService(config), - new MockAsyncProxyResolver); + scoped_refptr<ProxyService> service(new ProxyService( + new MockProxyConfigService(config), new MockAsyncProxyResolver)); GURL test_url("ftp://ftp.google.com"); ProxyInfo info; TestCompletionCallback callback; - int rv = service.ResolveProxy(test_url, &info, &callback, NULL, NULL); + int rv = service->ResolveProxy(test_url, &info, &callback, NULL, NULL); EXPECT_EQ(OK, rv); EXPECT_TRUE(info.is_direct()); EXPECT_EQ("direct://", info.proxy_server().ToURI()); } { - ProxyService service(new MockProxyConfigService(config), - new MockAsyncProxyResolver); + scoped_refptr<ProxyService> service(new ProxyService( + new MockProxyConfigService(config), new MockAsyncProxyResolver)); GURL test_url("https://webbranch.techcu.com"); ProxyInfo info; TestCompletionCallback callback; - int rv = service.ResolveProxy(test_url, &info, &callback, NULL, NULL); + int rv = service->ResolveProxy(test_url, &info, &callback, NULL, NULL); EXPECT_EQ(OK, rv); EXPECT_FALSE(info.is_direct()); EXPECT_EQ("foopy2:8080", info.proxy_server().ToURI()); } { config.proxy_rules.ParseFromString("foopy1:8080"); - ProxyService service(new MockProxyConfigService(config), - new MockAsyncProxyResolver); + scoped_refptr<ProxyService> service(new ProxyService( + new MockProxyConfigService(config), new MockAsyncProxyResolver)); GURL test_url("http://www.microsoft.com"); ProxyInfo info; TestCompletionCallback callback; - int rv = service.ResolveProxy(test_url, &info, &callback, NULL, NULL); + int rv = service->ResolveProxy(test_url, &info, &callback, NULL, NULL); EXPECT_EQ(OK, rv); EXPECT_FALSE(info.is_direct()); EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); @@ -796,45 +804,45 @@ TEST(ProxyServiceTest, DefaultProxyFallbackToSOCKS) { config.proxy_rules.type); { - ProxyService service(new MockProxyConfigService(config), - new MockAsyncProxyResolver); + scoped_refptr<ProxyService> service(new ProxyService( + new MockProxyConfigService(config), new MockAsyncProxyResolver)); GURL test_url("http://www.msn.com"); ProxyInfo info; TestCompletionCallback callback; - int rv = service.ResolveProxy(test_url, &info, &callback, NULL, NULL); + int rv = service->ResolveProxy(test_url, &info, &callback, NULL, NULL); EXPECT_EQ(OK, rv); EXPECT_FALSE(info.is_direct()); EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); } { - ProxyService service(new MockProxyConfigService(config), - new MockAsyncProxyResolver); + scoped_refptr<ProxyService> service(new ProxyService( + new MockProxyConfigService(config), new MockAsyncProxyResolver)); GURL test_url("ftp://ftp.google.com"); ProxyInfo info; TestCompletionCallback callback; - int rv = service.ResolveProxy(test_url, &info, &callback, NULL, NULL); + int rv = service->ResolveProxy(test_url, &info, &callback, NULL, NULL); EXPECT_EQ(OK, rv); EXPECT_FALSE(info.is_direct()); EXPECT_EQ("socks4://foopy2:1080", info.proxy_server().ToURI()); } { - ProxyService service(new MockProxyConfigService(config), - new MockAsyncProxyResolver); + scoped_refptr<ProxyService> service(new ProxyService( + new MockProxyConfigService(config), new MockAsyncProxyResolver)); GURL test_url("https://webbranch.techcu.com"); ProxyInfo info; TestCompletionCallback callback; - int rv = service.ResolveProxy(test_url, &info, &callback, NULL, NULL); + int rv = service->ResolveProxy(test_url, &info, &callback, NULL, NULL); EXPECT_EQ(OK, rv); EXPECT_FALSE(info.is_direct()); EXPECT_EQ("socks4://foopy2:1080", info.proxy_server().ToURI()); } { - ProxyService service(new MockProxyConfigService(config), - new MockAsyncProxyResolver); + scoped_refptr<ProxyService> service(new ProxyService( + new MockProxyConfigService(config), new MockAsyncProxyResolver)); GURL test_url("unknown://www.microsoft.com"); ProxyInfo info; TestCompletionCallback callback; - int rv = service.ResolveProxy(test_url, &info, &callback, NULL, NULL); + int rv = service->ResolveProxy(test_url, &info, &callback, NULL, NULL); EXPECT_EQ(OK, rv); EXPECT_FALSE(info.is_direct()); EXPECT_EQ("socks4://foopy2:1080", info.proxy_server().ToURI()); @@ -848,13 +856,14 @@ TEST(ProxyServiceTest, CancelInProgressRequest) { MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; - ProxyService service(config_service, resolver); + scoped_refptr<ProxyService> service( + new ProxyService(config_service, resolver)); // Start 3 requests. ProxyInfo info1; TestCompletionCallback callback1; - int rv = service.ResolveProxy( + int rv = service->ResolveProxy( GURL("http://request1"), &info1, &callback1, NULL, NULL); EXPECT_EQ(ERR_IO_PENDING, rv); @@ -873,7 +882,7 @@ TEST(ProxyServiceTest, CancelInProgressRequest) { ProxyInfo info2; TestCompletionCallback callback2; ProxyService::PacRequest* request2; - rv = service.ResolveProxy( + rv = service->ResolveProxy( GURL("http://request2"), &info2, &callback2, &request2, NULL); EXPECT_EQ(ERR_IO_PENDING, rv); ASSERT_EQ(2u, resolver->pending_requests().size()); @@ -881,14 +890,14 @@ TEST(ProxyServiceTest, CancelInProgressRequest) { ProxyInfo info3; TestCompletionCallback callback3; - rv = service.ResolveProxy( + rv = service->ResolveProxy( GURL("http://request3"), &info3, &callback3, NULL, NULL); EXPECT_EQ(ERR_IO_PENDING, rv); ASSERT_EQ(3u, resolver->pending_requests().size()); EXPECT_EQ(GURL("http://request3"), resolver->pending_requests()[2]->url()); // Cancel the second request - service.CancelPacRequest(request2); + service->CancelPacRequest(request2); ASSERT_EQ(2u, resolver->pending_requests().size()); EXPECT_EQ(GURL("http://request1"), resolver->pending_requests()[0]->url()); @@ -922,16 +931,17 @@ TEST(ProxyServiceTest, InitialPACScriptDownload) { MockAsyncProxyResolverExpectsBytes* resolver = new MockAsyncProxyResolverExpectsBytes; - ProxyService service(config_service, resolver); + scoped_refptr<ProxyService> service( + new ProxyService(config_service, resolver)); MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; - service.SetProxyScriptFetcher(fetcher); + service->SetProxyScriptFetcher(fetcher); // Start 3 requests. ProxyInfo info1; TestCompletionCallback callback1; - int rv = service.ResolveProxy( + int rv = service->ResolveProxy( GURL("http://request1"), &info1, &callback1, NULL, NULL); EXPECT_EQ(ERR_IO_PENDING, rv); @@ -941,13 +951,13 @@ TEST(ProxyServiceTest, InitialPACScriptDownload) { ProxyInfo info2; TestCompletionCallback callback2; - rv = service.ResolveProxy( + rv = service->ResolveProxy( GURL("http://request2"), &info2, &callback2, NULL, NULL); EXPECT_EQ(ERR_IO_PENDING, rv); ProxyInfo info3; TestCompletionCallback callback3; - rv = service.ResolveProxy( + rv = service->ResolveProxy( GURL("http://request3"), &info3, &callback3, NULL, NULL); EXPECT_EQ(ERR_IO_PENDING, rv); @@ -1000,17 +1010,18 @@ TEST(ProxyServiceTest, CancelWhilePACFetching) { MockAsyncProxyResolverExpectsBytes* resolver = new MockAsyncProxyResolverExpectsBytes; - ProxyService service(config_service, resolver); + scoped_refptr<ProxyService> service( + new ProxyService(config_service, resolver)); MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; - service.SetProxyScriptFetcher(fetcher); + service->SetProxyScriptFetcher(fetcher); // Start 3 requests. ProxyInfo info1; TestCompletionCallback callback1; ProxyService::PacRequest* request1; scoped_refptr<LoadLog> log1(new LoadLog); - int rv = service.ResolveProxy( + int rv = service->ResolveProxy( GURL("http://request1"), &info1, &callback1, &request1, log1); EXPECT_EQ(ERR_IO_PENDING, rv); @@ -1021,13 +1032,13 @@ TEST(ProxyServiceTest, CancelWhilePACFetching) { ProxyInfo info2; TestCompletionCallback callback2; ProxyService::PacRequest* request2; - rv = service.ResolveProxy( + rv = service->ResolveProxy( GURL("http://request2"), &info2, &callback2, &request2, NULL); EXPECT_EQ(ERR_IO_PENDING, rv); ProxyInfo info3; TestCompletionCallback callback3; - rv = service.ResolveProxy( + rv = service->ResolveProxy( GURL("http://request3"), &info3, &callback3, NULL, NULL); EXPECT_EQ(ERR_IO_PENDING, rv); @@ -1035,8 +1046,8 @@ TEST(ProxyServiceTest, CancelWhilePACFetching) { EXPECT_TRUE(resolver->pending_requests().empty()); // Cancel the first 2 requests. - service.CancelPacRequest(request1); - service.CancelPacRequest(request2); + service->CancelPacRequest(request1); + service->CancelPacRequest(request2); // At this point the ProxyService should be waiting for the // ProxyScriptFetcher to invoke its completion callback, notifying it of @@ -1084,23 +1095,24 @@ TEST(ProxyServiceTest, FallbackFromAutodetectToCustomPac) { MockProxyConfigService* config_service = new MockProxyConfigService(config); MockAsyncProxyResolverExpectsBytes* resolver = new MockAsyncProxyResolverExpectsBytes; - ProxyService service(config_service, resolver); + scoped_refptr<ProxyService> service( + new ProxyService(config_service, resolver)); MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; - service.SetProxyScriptFetcher(fetcher); + service->SetProxyScriptFetcher(fetcher); // Start 2 requests. ProxyInfo info1; TestCompletionCallback callback1; - int rv = service.ResolveProxy( + int rv = service->ResolveProxy( GURL("http://request1"), &info1, &callback1, NULL, NULL); EXPECT_EQ(ERR_IO_PENDING, rv); ProxyInfo info2; TestCompletionCallback callback2; ProxyService::PacRequest* request2; - rv = service.ResolveProxy( + rv = service->ResolveProxy( GURL("http://request2"), &info2, &callback2, &request2, NULL); EXPECT_EQ(ERR_IO_PENDING, rv); @@ -1154,23 +1166,24 @@ TEST(ProxyServiceTest, FallbackFromAutodetectToCustomPac2) { MockProxyConfigService* config_service = new MockProxyConfigService(config); MockAsyncProxyResolverExpectsBytes* resolver = new MockAsyncProxyResolverExpectsBytes; - ProxyService service(config_service, resolver); + scoped_refptr<ProxyService> service( + new ProxyService(config_service, resolver)); MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; - service.SetProxyScriptFetcher(fetcher); + service->SetProxyScriptFetcher(fetcher); // Start 2 requests. ProxyInfo info1; TestCompletionCallback callback1; - int rv = service.ResolveProxy( + int rv = service->ResolveProxy( GURL("http://request1"), &info1, &callback1, NULL, NULL); EXPECT_EQ(ERR_IO_PENDING, rv); ProxyInfo info2; TestCompletionCallback callback2; ProxyService::PacRequest* request2; - rv = service.ResolveProxy( + rv = service->ResolveProxy( GURL("http://request2"), &info2, &callback2, &request2, NULL); EXPECT_EQ(ERR_IO_PENDING, rv); @@ -1229,23 +1242,24 @@ TEST(ProxyServiceTest, FallbackFromAutodetectToCustomToManual) { MockProxyConfigService* config_service = new MockProxyConfigService(config); MockAsyncProxyResolverExpectsBytes* resolver = new MockAsyncProxyResolverExpectsBytes; - ProxyService service(config_service, resolver); + scoped_refptr<ProxyService> service( + new ProxyService(config_service, resolver)); MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; - service.SetProxyScriptFetcher(fetcher); + service->SetProxyScriptFetcher(fetcher); // Start 2 requests. ProxyInfo info1; TestCompletionCallback callback1; - int rv = service.ResolveProxy( + int rv = service->ResolveProxy( GURL("http://request1"), &info1, &callback1, NULL, NULL); EXPECT_EQ(ERR_IO_PENDING, rv); ProxyInfo info2; TestCompletionCallback callback2; ProxyService::PacRequest* request2; - rv = service.ResolveProxy( + rv = service->ResolveProxy( GURL("http://request2"), &info2, &callback2, &request2, NULL); EXPECT_EQ(ERR_IO_PENDING, rv); @@ -1286,16 +1300,17 @@ TEST(ProxyServiceTest, BypassDoesntApplyToPac) { MockProxyConfigService* config_service = new MockProxyConfigService(config); MockAsyncProxyResolverExpectsBytes* resolver = new MockAsyncProxyResolverExpectsBytes; - ProxyService service(config_service, resolver); + scoped_refptr<ProxyService> service( + new ProxyService(config_service, resolver)); MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; - service.SetProxyScriptFetcher(fetcher); + service->SetProxyScriptFetcher(fetcher); // Start 1 requests. ProxyInfo info1; TestCompletionCallback callback1; - int rv = service.ResolveProxy( + int rv = service->ResolveProxy( GURL("http://www.google.com"), &info1, &callback1, NULL, NULL); EXPECT_EQ(ERR_IO_PENDING, rv); @@ -1326,7 +1341,7 @@ TEST(ProxyServiceTest, BypassDoesntApplyToPac) { // Start another request, it should pickup the bypass item. ProxyInfo info2; TestCompletionCallback callback2; - rv = service.ResolveProxy( + rv = service->ResolveProxy( GURL("http://www.google.com"), &info2, &callback2, NULL, NULL); EXPECT_EQ(ERR_IO_PENDING, rv); @@ -1346,12 +1361,12 @@ TEST(ProxyServiceTest, ResetProxyConfigService) { ProxyConfig config1; config1.proxy_rules.ParseFromString("foopy1:8080"); config1.auto_detect = false; - ProxyService service(new MockProxyConfigService(config1), - new MockAsyncProxyResolverExpectsBytes); + scoped_refptr<ProxyService> service(new ProxyService( + new MockProxyConfigService(config1), new MockAsyncProxyResolverExpectsBytes)); ProxyInfo info; TestCompletionCallback callback1; - int rv = service.ResolveProxy( + int rv = service->ResolveProxy( GURL("http://request1"), &info, &callback1, NULL, NULL); EXPECT_EQ(OK, rv); EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); @@ -1359,9 +1374,9 @@ TEST(ProxyServiceTest, ResetProxyConfigService) { ProxyConfig config2; config2.proxy_rules.ParseFromString("foopy2:8080"); config2.auto_detect = false; - service.ResetConfigService(new MockProxyConfigService(config2)); + service->ResetConfigService(new MockProxyConfigService(config2)); TestCompletionCallback callback2; - rv = service.ResolveProxy( + rv = service->ResolveProxy( GURL("http://request2"), &info, &callback2, NULL, NULL); EXPECT_EQ(OK, rv); EXPECT_EQ("foopy2:8080", info.proxy_server().ToURI()); @@ -1419,13 +1434,14 @@ TEST(ProxyServiceTest, UpdateConfigAfterFailedAutodetect) { MockProxyConfigService* config_service = new MockProxyConfigService(config); MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; - ProxyService service(config_service, resolver); + scoped_refptr<ProxyService> service( + new ProxyService(config_service, resolver)); // Start 1 requests. ProxyInfo info1; TestCompletionCallback callback1; - int rv = service.ResolveProxy( + int rv = service->ResolveProxy( GURL("http://www.google.com"), &info1, &callback1, NULL, NULL); EXPECT_EQ(ERR_IO_PENDING, rv); @@ -1442,14 +1458,14 @@ TEST(ProxyServiceTest, UpdateConfigAfterFailedAutodetect) { // Force the ProxyService to pull down a new proxy configuration. // (Even though the configuration isn't old/bad). - service.UpdateConfig(); + service->UpdateConfig(); // Start another request -- the effective configuration has not // changed, so we shouldn't re-run the autodetect step. // Rather, it should complete synchronously as direct-connect. ProxyInfo info2; TestCompletionCallback callback2; - rv = service.ResolveProxy( + rv = service->ResolveProxy( GURL("http://www.google.com"), &info2, &callback2, NULL, NULL); EXPECT_EQ(OK, rv); @@ -1464,13 +1480,14 @@ TEST(ProxyServiceTest, UpdateConfigFromPACToDirect) { MockProxyConfigService* config_service = new MockProxyConfigService(config); MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; - ProxyService service(config_service, resolver); + scoped_refptr<ProxyService> service( + new ProxyService(config_service, resolver)); // Start 1 request. ProxyInfo info1; TestCompletionCallback callback1; - int rv = service.ResolveProxy( + int rv = service->ResolveProxy( GURL("http://www.google.com"), &info1, &callback1, NULL, NULL); EXPECT_EQ(ERR_IO_PENDING, rv); @@ -1497,12 +1514,12 @@ TEST(ProxyServiceTest, UpdateConfigFromPACToDirect) { // requests should complete synchronously now as direct-connect. config.auto_detect = false; config_service->config = config; - service.UpdateConfig(); + service->UpdateConfig(); // Start another request -- the effective configuration has changed. ProxyInfo info2; TestCompletionCallback callback2; - rv = service.ResolveProxy( + rv = service->ResolveProxy( GURL("http://www.google.com"), &info2, &callback2, NULL, NULL); EXPECT_EQ(OK, rv); diff --git a/net/tools/fetch/fetch_client.cc b/net/tools/fetch/fetch_client.cc index 0f9f911..0031ff4 100644 --- a/net/tools/fetch/fetch_client.cc +++ b/net/tools/fetch/fetch_client.cc @@ -131,14 +131,14 @@ int main(int argc, char**argv) { scoped_refptr<net::HostResolver> host_resolver( net::CreateSystemHostResolver()); - scoped_ptr<net::ProxyService> proxy_service(net::ProxyService::CreateNull()); + scoped_refptr<net::ProxyService> proxy_service(net::ProxyService::CreateNull()); net::HttpTransactionFactory* factory = NULL; if (use_cache) { - factory = new net::HttpCache(host_resolver, proxy_service.get(), 0); + factory = new net::HttpCache(host_resolver, proxy_service, 0); } else { factory = new net::HttpNetworkLayer( net::ClientSocketFactory::GetDefaultFactory(), host_resolver, - proxy_service.get()); + proxy_service); } { diff --git a/net/url_request/url_request_context.h b/net/url_request/url_request_context.h index 63ab217..aac651a 100644 --- a/net/url_request/url_request_context.h +++ b/net/url_request/url_request_context.h @@ -16,12 +16,12 @@ #include "net/base/cookie_store.h" #include "net/base/host_resolver.h" #include "net/ftp/ftp_auth_cache.h" +#include "net/proxy/proxy_service.h" namespace net { class ForceTLSState; class FtpTransactionFactory; class HttpTransactionFactory; -class ProxyService; } class URLRequest; @@ -30,9 +30,7 @@ class URLRequestContext : public base::RefCountedThreadSafe<URLRequestContext> { public: URLRequestContext() - : host_resolver_(NULL), - proxy_service_(NULL), - http_transaction_factory_(NULL), + : http_transaction_factory_(NULL), ftp_transaction_factory_(NULL), cookie_store_(NULL), force_tls_state_(NULL) { @@ -109,7 +107,7 @@ class URLRequestContext : // The following members are expected to be initialized and owned by // subclasses. scoped_refptr<net::HostResolver> host_resolver_; - net::ProxyService* proxy_service_; + scoped_refptr<net::ProxyService> proxy_service_; net::HttpTransactionFactory* http_transaction_factory_; net::FtpTransactionFactory* ftp_transaction_factory_; net::CookieStore* cookie_store_; diff --git a/net/url_request/url_request_unittest.cc b/net/url_request/url_request_unittest.cc index 6c003bf..7a56d29 100644 --- a/net/url_request/url_request_unittest.cc +++ b/net/url_request/url_request_unittest.cc @@ -62,7 +62,6 @@ class URLRequestTestContext : public URLRequestContext { delete cookie_store_; delete ftp_transaction_factory_; delete http_transaction_factory_; - delete proxy_service_; } }; diff --git a/net/url_request/url_request_unittest.h b/net/url_request/url_request_unittest.h index 24714ce..22e9b99 100644 --- a/net/url_request/url_request_unittest.h +++ b/net/url_request/url_request_unittest.h @@ -62,7 +62,6 @@ class TestURLRequestContext : public URLRequestContext { virtual ~TestURLRequestContext() { delete http_transaction_factory_; - delete proxy_service_; } }; |