summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorbengr@chromium.org <bengr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-03 22:21:44 +0000
committerbengr@chromium.org <bengr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-03 22:21:44 +0000
commit1575e3dc3a62d61520ed3e6c759eb33a48c0bcb3 (patch)
tree64c1ea6d1a36fad2c385af2341ad99cf0db7ac7e /net
parent28ea9acd03a0d2bd53b2a9682ea5edc6a3071eff (diff)
downloadchromium_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.cc19
-rw-r--r--net/url_request/url_request_context_builder.h23
-rw-r--r--net/url_request/url_request_context_builder_unittest.cc45
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