diff options
author | bengr@chromium.org <bengr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-03 22:21:44 +0000 |
---|---|---|
committer | bengr@chromium.org <bengr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-03 22:21:44 +0000 |
commit | 1575e3dc3a62d61520ed3e6c759eb33a48c0bcb3 (patch) | |
tree | 64c1ea6d1a36fad2c385af2341ad99cf0db7ac7e /net | |
parent | 28ea9acd03a0d2bd53b2a9682ea5edc6a3071eff (diff) | |
download | chromium_src-1575e3dc3a62d61520ed3e6c759eb33a48c0bcb3.zip chromium_src-1575e3dc3a62d61520ed3e6c759eb33a48c0bcb3.tar.gz chromium_src-1575e3dc3a62d61520ed3e6c759eb33a48c0bcb3.tar.bz2 |
Added data reduction proxy support to Android WebView
Besides the additional wiring, this included the addtion
of a proxy config service and tracker, which are implemented in
data_reduction_proxy/browser/data_reduction_config_service.{cc,h} and
data_reduction_proxy/browser/data_reduction_config_service_unittest.cc.
BUG=363403
Review URL: https://codereview.chromium.org/237643005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@268083 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net')
-rw-r--r-- | net/url_request/url_request_context_builder.cc | 19 | ||||
-rw-r--r-- | net/url_request/url_request_context_builder.h | 23 | ||||
-rw-r--r-- | net/url_request/url_request_context_builder_unittest.cc | 45 |
3 files changed, 85 insertions, 2 deletions
diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/url_request_context_builder.cc index ca92f74..c0d0bb5 100644 --- a/net/url_request/url_request_context_builder.cc +++ b/net/url_request/url_request_context_builder.cc @@ -176,6 +176,15 @@ URLRequestContextBuilder::HttpNetworkSessionParams::HttpNetworkSessionParams() URLRequestContextBuilder::HttpNetworkSessionParams::~HttpNetworkSessionParams() {} +URLRequestContextBuilder::SchemeFactory::SchemeFactory( + const std::string& auth_scheme, + net::HttpAuthHandlerFactory* auth_handler_factory) + : scheme(auth_scheme), factory(auth_handler_factory) { +} + +URLRequestContextBuilder::SchemeFactory::~SchemeFactory() { +} + URLRequestContextBuilder::URLRequestContextBuilder() : data_enabled_(false), file_enabled_(false), @@ -231,9 +240,15 @@ URLRequestContext* URLRequestContextBuilder::Build() { 4, // TODO(willchan): Find a better constant somewhere. context->net_log())); storage->set_ssl_config_service(new net::SSLConfigServiceDefaults); - storage->set_http_auth_handler_factory( + HttpAuthHandlerRegistryFactory* http_auth_handler_registry_factory = net::HttpAuthHandlerRegistryFactory::CreateDefault( - context->host_resolver())); + context->host_resolver()); + for (size_t i = 0; i < extra_http_auth_handlers_.size(); ++i) { + http_auth_handler_registry_factory->RegisterSchemeFactory( + extra_http_auth_handlers_[i].scheme, + extra_http_auth_handlers_[i].factory); + } + storage->set_http_auth_handler_factory(http_auth_handler_registry_factory); storage->set_cookie_store(new CookieMonster(NULL, NULL)); storage->set_transport_security_state(new net::TransportSecurityState()); storage->set_http_server_properties( diff --git a/net/url_request/url_request_context_builder.h b/net/url_request/url_request_context_builder.h index 2ad03ee..0f93f4a 100644 --- a/net/url_request/url_request_context_builder.h +++ b/net/url_request/url_request_context_builder.h @@ -15,6 +15,7 @@ #define NET_URL_REQUEST_URL_REQUEST_CONTEXT_BUILDER_H_ #include <string> +#include <vector> #include "base/basictypes.h" #include "base/files/file_path.h" @@ -28,6 +29,7 @@ namespace net { class FtpTransactionFactory; class HostResolver; class HostMappingRules; +class HttpAuthHandlerFactory; class ProxyConfigService; class URLRequestContext; class NetworkDelegate; @@ -111,6 +113,16 @@ class NET_EXPORT URLRequestContextBuilder { network_delegate_.reset(delegate); } + + // Adds additional auth handler factories to be used in addition to what is + // provided in the default |HttpAuthHandlerRegistryFactory|. The auth |scheme| + // and |factory| are provided. The builder takes ownership of the factory and + // Build() must be called after this method. + void add_http_auth_handler_factory(const std::string& scheme, + net::HttpAuthHandlerFactory* factory) { + extra_http_auth_handlers_.push_back(SchemeFactory(scheme, factory)); + } + // By default HttpCache is enabled with a default constructed HttpCacheParams. void EnableHttpCache(const HttpCacheParams& params) { http_cache_enabled_ = true; @@ -131,6 +143,16 @@ class NET_EXPORT URLRequestContextBuilder { URLRequestContext* Build(); private: + + struct SchemeFactory { + SchemeFactory(const std::string& scheme, + net::HttpAuthHandlerFactory* factory); + ~SchemeFactory(); + + std::string scheme; + net::HttpAuthHandlerFactory* factory; + }; + std::string accept_language_; std::string user_agent_; // Include support for data:// requests. @@ -148,6 +170,7 @@ class NET_EXPORT URLRequestContextBuilder { scoped_ptr<ProxyConfigService> proxy_config_service_; scoped_ptr<NetworkDelegate> network_delegate_; scoped_ptr<FtpTransactionFactory> ftp_transaction_factory_; + std::vector<SchemeFactory> extra_http_auth_handlers_; 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 e882253..a7a0fee 100644 --- a/net/url_request/url_request_context_builder_unittest.cc +++ b/net/url_request/url_request_context_builder_unittest.cc @@ -6,6 +6,8 @@ #include "build/build_config.h" #include "net/base/request_priority.h" +#include "net/http/http_auth_handler.h" +#include "net/http/http_auth_handler_factory.h" #include "net/test/spawned_test_server/spawned_test_server.h" #include "net/url_request/url_request.h" #include "net/url_request/url_request_test_util.h" @@ -36,6 +38,27 @@ class LocalHttpTestServer : public SpawnedTestServer { base::FilePath()) {} }; +class MockHttpAuthHandlerFactory : public HttpAuthHandlerFactory { + public: + explicit MockHttpAuthHandlerFactory(int return_code) : + return_code_(return_code) {} + virtual ~MockHttpAuthHandlerFactory() {} + + virtual int CreateAuthHandler(HttpAuthChallengeTokenizer* challenge, + HttpAuth::Target target, + const GURL& origin, + CreateReason reason, + int nonce_count, + const BoundNetLog& net_log, + scoped_ptr<HttpAuthHandler>* handler) OVERRIDE { + handler->reset(); + return return_code_; + } + + private: + int return_code_; +}; + class URLRequestContextBuilderTest : public PlatformTest { protected: URLRequestContextBuilderTest() @@ -83,6 +106,28 @@ TEST_F(URLRequestContextBuilderTest, UserAgent) { EXPECT_EQ("Bar", delegate.data_received()); } +TEST_F(URLRequestContextBuilderTest, ExtraHttpAuthHandlerFactory) { + GURL gurl("www.google.com"); + const int kBasicReturnCode = net::OK; + MockHttpAuthHandlerFactory* mock_factory_basic = + new MockHttpAuthHandlerFactory(kBasicReturnCode); + scoped_ptr<HttpAuthHandler> handler; + builder_.add_http_auth_handler_factory("ExtraScheme", mock_factory_basic); + scoped_ptr<URLRequestContext> context(builder_.Build()); + // Verify that a handler is returned for and added scheme. + EXPECT_EQ(kBasicReturnCode, + context->http_auth_handler_factory()->CreateAuthHandlerFromString( + "ExtraScheme", + HttpAuth::AUTH_SERVER, + gurl, + BoundNetLog(), + &handler)); + // Verify that a handler isn't returned for a bogus scheme. + EXPECT_EQ(ERR_UNSUPPORTED_AUTH_SCHEME, + context->http_auth_handler_factory()->CreateAuthHandlerFromString( + "Bogus", HttpAuth::AUTH_SERVER, gurl, BoundNetLog(), &handler)); +} + } // namespace } // namespace net |