summaryrefslogtreecommitdiffstats
path: root/android_webview/browser
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 /android_webview/browser
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 'android_webview/browser')
-rw-r--r--android_webview/browser/net/aw_url_request_context_getter.cc125
1 files changed, 16 insertions, 109 deletions
diff --git a/android_webview/browser/net/aw_url_request_context_getter.cc b/android_webview/browser/net/aw_url_request_context_getter.cc
index bcc51f4..40d14b3 100644
--- a/android_webview/browser/net/aw_url_request_context_getter.cc
+++ b/android_webview/browser/net/aw_url_request_context_getter.cc
@@ -14,22 +14,11 @@
#include "content/public/browser/resource_context.h"
#include "content/public/common/content_client.h"
#include "content/public/common/url_constants.h"
-#include "net/base/cert_verifier.h"
-#include "net/base/host_resolver.h"
-#include "net/base/ssl_config_service_defaults.h"
-#include "net/base/transport_security_state.h"
-#include "net/base/transport_security_state.h"
-#include "net/cookies/cookie_monster.h"
-#include "net/ftp/ftp_network_layer.h"
-#include "net/http/http_auth_handler_factory.h"
-#include "net/http/http_cache.h"
-#include "net/http/http_network_session.h"
-#include "net/http/http_server_properties_impl.h"
#include "net/proxy/proxy_service.h"
#include "net/url_request/data_protocol_handler.h"
#include "net/url_request/file_protocol_handler.h"
+#include "net/url_request/url_request_context_builder.h"
#include "net/url_request/url_request_context.h"
-#include "net/url_request/url_request_context_storage.h"
using content::BrowserThread;
@@ -67,39 +56,6 @@ net::URLRequestContext* AwResourceContext::GetRequestContext() {
return context_;
}
-// Inspired by BasicURLRequestContext.
-// TODO(boliu): Remove this class and use URLRequestContextBuilder when it
-// has all the necessary features for Android WebView.
-class AwURLRequestContext : public net::URLRequestContext {
- public:
- AwURLRequestContext();
- virtual ~AwURLRequestContext();
-
- virtual const std::string& GetUserAgent(const GURL& url) const OVERRIDE;
-
- net::URLRequestContextStorage* storage();
-
- private:
- net::URLRequestContextStorage storage_;
-
- DISALLOW_COPY_AND_ASSIGN(AwURLRequestContext);
-};
-
-AwURLRequestContext::AwURLRequestContext()
- : ALLOW_THIS_IN_INITIALIZER_LIST(storage_(this)) {
-}
-
-AwURLRequestContext::~AwURLRequestContext() {
-}
-
-const std::string& AwURLRequestContext::GetUserAgent(const GURL& url) const {
- return content::GetUserAgent(url);
-}
-
-net::URLRequestContextStorage* AwURLRequestContext::storage() {
- return &storage_;
-}
-
} // namespace
AwURLRequestContextGetter::AwURLRequestContextGetter(
@@ -123,7 +79,20 @@ AwURLRequestContextGetter::~AwURLRequestContextGetter() {
void AwURLRequestContextGetter::Init() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
- url_request_context_.reset(new AwURLRequestContext);
+ net::URLRequestContextBuilder builder;
+ builder.set_user_agent(content::GetUserAgent(GURL()));
+ builder.set_network_delegate(new AwNetworkDelegate());
+ builder.set_ftp_enabled(false); // Android WebView does not support ftp yet.
+ builder.set_proxy_config_service(proxy_config_service_.release());
+
+ net::URLRequestContextBuilder::HttpCacheParams cache_params;
+ cache_params.type = net::URLRequestContextBuilder::HttpCacheParams::DISK;
+ cache_params.max_size = 10 * 1024 * 1024; // 10M
+ cache_params.path =
+ browser_context_->GetPath().Append(FILE_PATH_LITERAL("Cache")),
+ builder.EnableHttpCache(cache_params);
+
+ url_request_context_.reset(builder.Build());
url_request_context_->set_accept_language(
net::HttpUtil::GenerateAcceptLanguageHeader(
@@ -134,68 +103,6 @@ void AwURLRequestContextGetter::Init() {
url_request_context_->set_accept_charset(
net::HttpUtil::GenerateAcceptCharsetHeader("ISO-8859-1"));
- net::URLRequestContextStorage* storage =
- static_cast<AwURLRequestContext*>(url_request_context_.get())->storage();
-
- storage->set_network_delegate(new AwNetworkDelegate());
-
- storage->set_host_resolver(net::HostResolver::CreateDefaultResolver(
- content::GetContentClient()->browser()->GetNetLog()));
-
- // Note we do not call set_ftp_transaction_factory here since we do not
- // support ftp yet in Android WebView.
-
- storage->set_proxy_service(
- net::ProxyService::CreateUsingSystemProxyResolver(
- proxy_config_service_.release(),
- 0, // Use default number of threads.
- url_request_context_->net_log()));
-
- storage->set_ssl_config_service(new net::SSLConfigServiceDefaults);
- storage->set_http_auth_handler_factory(
- net::HttpAuthHandlerRegistryFactory::CreateDefault(
- url_request_context_->host_resolver()));
- storage->set_cookie_store(new net::CookieMonster(NULL, NULL));
- storage->set_transport_security_state(new net::TransportSecurityState());
- storage->set_http_server_properties(new net::HttpServerPropertiesImpl);
- storage->set_cert_verifier(net::CertVerifier::CreateDefault());
-
- net::HttpNetworkSession::Params network_session_params;
- network_session_params.host_resolver =
- url_request_context_->host_resolver();
- network_session_params.cert_verifier =
- url_request_context_->cert_verifier();
- network_session_params.transport_security_state =
- url_request_context_->transport_security_state();
- network_session_params.proxy_service =
- url_request_context_->proxy_service();
- network_session_params.ssl_config_service =
- url_request_context_->ssl_config_service();
- network_session_params.http_auth_handler_factory =
- url_request_context_->http_auth_handler_factory();
- network_session_params.network_delegate =
- url_request_context_->network_delegate();
- network_session_params.http_server_properties =
- url_request_context_->http_server_properties();
- network_session_params.net_log = url_request_context_->net_log();
- network_session_params.server_bound_cert_service =
- url_request_context_->server_bound_cert_service();
- network_session_params.ignore_certificate_errors = false;
- network_session_params.http_pipelining_enabled = false;
- // TODO(boliu): Other settings are set by commandline switches in chrome/
- // and seem to be only used in testing. Check if we need to set them here.
-
- scoped_ptr<net::HttpCache::BackendFactory> http_cache_backend(
- new net::HttpCache::DefaultBackend(
- net::DISK_CACHE,
- browser_context_->GetPath().Append(FILE_PATH_LITERAL("Cache")),
- 10*1024*1024, // Max cache size 10M
- BrowserThread::GetMessageLoopProxyForThread(
- BrowserThread::CACHE)));
-
- storage->set_http_transaction_factory(new net::HttpCache(
- network_session_params, http_cache_backend.release()));
-
job_factory_.reset(new AwURLRequestJobFactory);
bool set_protocol = job_factory_->SetProtocolHandler(
chrome::kFileScheme, new net::FileProtocolHandler());
@@ -205,7 +112,7 @@ void AwURLRequestContextGetter::Init() {
DCHECK(set_protocol);
RegisterAndroidProtocolsOnIOThread(job_factory_.get());
job_factory_->AddInterceptor(new AwRequestInterceptor());
- storage->set_job_factory(job_factory_.get());
+ url_request_context_->set_job_factory(job_factory_.get());
}
content::ResourceContext* AwURLRequestContextGetter::GetResourceContext() {