diff options
author | boliu@chromium.org <boliu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-27 03:20:29 +0000 |
---|---|---|
committer | boliu@chromium.org <boliu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-27 03:20:29 +0000 |
commit | 03a2e986db5629dd161947d9c2c2541c60f079fd (patch) | |
tree | 373f386f1fc7310cadba3395c198495b3a45025f /net/url_request | |
parent | f4416f9e5bb40c71b233b40318c629f90f7c8715 (diff) | |
download | chromium_src-03a2e986db5629dd161947d9c2c2541c60f079fd.zip chromium_src-03a2e986db5629dd161947d9c2c2541c60f079fd.tar.gz chromium_src-03a2e986db5629dd161947d9c2c2541c60f079fd.tar.bz2 |
Improve URLRequestContextBuilder for use in android_webview
Implemented [Enable|Disable]HttpCache methods.
Added OS_ANDROID for set_proxy_config_service guard.
Added set_network_delegate method.
Also fix a double owning issue introduced by me in r164387.
BUG=
Review URL: https://chromiumcodereview.appspot.com/11266049
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@164495 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/url_request')
-rw-r--r-- | net/url_request/url_request_context_builder.cc | 13 | ||||
-rw-r--r-- | net/url_request/url_request_context_builder.h | 26 | ||||
-rw-r--r-- | net/url_request/url_request_context_builder_unittest.cc | 8 |
3 files changed, 31 insertions, 16 deletions
diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/url_request_context_builder.cc index 6e0cc2e..217337f 100644 --- a/net/url_request/url_request_context_builder.cc +++ b/net/url_request/url_request_context_builder.cc @@ -192,12 +192,12 @@ URLRequestContextBuilder::URLRequestContextBuilder() http_cache_enabled_(true) {} URLRequestContextBuilder::~URLRequestContextBuilder() {} -#if defined(OS_LINUX) +#if defined(OS_LINUX) || defined(OS_ANDROID) void URLRequestContextBuilder::set_proxy_config_service( ProxyConfigService* proxy_config_service) { proxy_config_service_.reset(proxy_config_service); } -#endif // defined(OS_LINUX) +#endif // defined(OS_LINUX) || defined(OS_ANDROID) URLRequestContext* URLRequestContextBuilder::Build() { BasicURLRequestContext* context = new BasicURLRequestContext; @@ -205,8 +205,9 @@ URLRequestContext* URLRequestContextBuilder::Build() { context->set_user_agent(user_agent_); - BasicNetworkDelegate* network_delegate = new BasicNetworkDelegate; - storage->set_network_delegate(network_delegate); + if (!network_delegate_) + network_delegate_.reset(new BasicNetworkDelegate); + storage->set_network_delegate(network_delegate_.release()); storage->set_host_resolver(net::HostResolver::CreateDefaultResolver(NULL)); @@ -219,14 +220,14 @@ URLRequestContext* URLRequestContextBuilder::Build() { // TODO(willchan): Switch to using this code when // ProxyService::CreateSystemProxyConfigService()'s signature doesn't suck. -#if defined(OS_LINUX) +#if defined(OS_LINUX) || defined(OS_ANDROID) ProxyConfigService* proxy_config_service = proxy_config_service_.release(); #else ProxyConfigService* proxy_config_service = ProxyService::CreateSystemProxyConfigService( base::ThreadTaskRunnerHandle::Get(), context->file_message_loop()); -#endif // defined(OS_LINUX) +#endif // defined(OS_LINUX) || defined(OS_ANDROID) storage->set_proxy_service( ProxyService::CreateUsingSystemProxyResolver( proxy_config_service, diff --git a/net/url_request/url_request_context_builder.h b/net/url_request/url_request_context_builder.h index 34a9bf8..66c8e7a 100644 --- a/net/url_request/url_request_context_builder.h +++ b/net/url_request/url_request_context_builder.h @@ -28,6 +28,7 @@ namespace net { class HostMappingRules; class ProxyConfigService; class URLRequestContext; +class NetworkDelegate; class NET_EXPORT URLRequestContextBuilder { public: @@ -67,9 +68,9 @@ class NET_EXPORT URLRequestContextBuilder { URLRequestContextBuilder(); ~URLRequestContextBuilder(); -#if defined(OS_LINUX) +#if defined(OS_LINUX) || defined(OS_ANDROID) void set_proxy_config_service(ProxyConfigService* proxy_config_service); -#endif // defined(OS_LINUX) +#endif // defined(OS_LINUX) || defined(OS_ANDROID) // Call this function to specify a hard-coded User-Agent for all requests that // don't have a User-Agent already set. @@ -82,9 +83,21 @@ class NET_EXPORT URLRequestContextBuilder { ftp_enabled_ = enable; } + // Uses BasicNetworkDelegate by default. Note that calling Build will unset + // any custom delegate in builder, so this must be called each time before + // Build is called. + void set_network_delegate(NetworkDelegate* delegate) { + network_delegate_.reset(delegate); + } + // By default HttpCache is enabled with a default constructed HttpCacheParams. - void EnableHttpCache(const HttpCacheParams& params); - void DisableHttpCache(); + void EnableHttpCache(const HttpCacheParams& params) { + http_cache_params_ = params; + } + + void DisableHttpCache() { + http_cache_params_ = HttpCacheParams(); + } // Override default net::HttpNetworkSession::Params settings. void set_http_network_session_params( @@ -100,9 +113,10 @@ class NET_EXPORT URLRequestContextBuilder { bool http_cache_enabled_; HttpCacheParams http_cache_params_; HttpNetworkSessionParams http_network_session_params_; -#if defined(OS_LINUX) +#if defined(OS_LINUX) || defined(OS_ANDROID) scoped_ptr<ProxyConfigService> proxy_config_service_; -#endif // defined(OS_LINUX) +#endif // defined(OS_LINUX) || defined(OS_ANDROID) + scoped_ptr<NetworkDelegate> network_delegate_; DISALLOW_COPY_AND_ASSIGN(URLRequestContextBuilder); }; diff --git a/net/url_request/url_request_context_builder_unittest.cc b/net/url_request/url_request_context_builder_unittest.cc index 26710d0..bc93416 100644 --- a/net/url_request/url_request_context_builder_unittest.cc +++ b/net/url_request/url_request_context_builder_unittest.cc @@ -11,10 +11,10 @@ #include "testing/gtest/include/gtest/gtest.h" #include "testing/platform_test.h" -#if defined(OS_LINUX) +#if defined(OS_LINUX) || defined(OS_ANDROID) #include "net/proxy/proxy_config.h" #include "net/proxy/proxy_config_service_fixed.h" -#endif // defined(OS_LINUX) +#endif // defined(OS_LINUX) || defined(OS_ANDROID) namespace net { @@ -40,10 +40,10 @@ class URLRequestContextBuilderTest : public PlatformTest { URLRequestContextBuilderTest() : test_server_( FilePath(FILE_PATH_LITERAL("net/data/url_request_unittest"))) { -#if defined(OS_LINUX) +#if defined(OS_LINUX) || defined(OS_ANDROID) builder_.set_proxy_config_service( new ProxyConfigServiceFixed(ProxyConfig::CreateDirect())); -#endif // defined(OS_LINUX) +#endif // defined(OS_LINUX) || defined(OS_ANDROID) } LocalHttpTestServer test_server_; |