summaryrefslogtreecommitdiffstats
path: root/net/url_request
diff options
context:
space:
mode:
authorboliu@chromium.org <boliu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-27 03:20:29 +0000
committerboliu@chromium.org <boliu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-27 03:20:29 +0000
commit03a2e986db5629dd161947d9c2c2541c60f079fd (patch)
tree373f386f1fc7310cadba3395c198495b3a45025f /net/url_request
parentf4416f9e5bb40c71b233b40318c629f90f7c8715 (diff)
downloadchromium_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.cc13
-rw-r--r--net/url_request/url_request_context_builder.h26
-rw-r--r--net/url_request/url_request_context_builder_unittest.cc8
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_;