Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(661)

Unified Diff: net/url_request/url_request_context_builder.cc

Issue 2978443002: Make ProfileIOData use URLRequestContextBuilder (Closed)
Patch Set: ? Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/url_request/url_request_context_builder.cc
diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/url_request_context_builder.cc
index 4955f6b9bd0d546aecdfaf2463650900a9212f49..30972ab4232b4214d17c665fb92463c5c37e0149 100644
--- a/net/url_request/url_request_context_builder.cc
+++ b/net/url_request/url_request_context_builder.cc
@@ -192,6 +192,7 @@ URLRequestContextBuilder::URLRequestContextBuilder()
: name_(nullptr),
enable_brotli_(false),
network_quality_estimator_(nullptr),
+ shared_http_user_agent_settings_(nullptr),
data_enabled_(false),
#if !BUILDFLAG(DISABLE_FILE_SUPPORT)
file_enabled_(false),
@@ -203,9 +204,14 @@ URLRequestContextBuilder::URLRequestContextBuilder()
throttling_enabled_(false),
sdch_enabled_(false),
cookie_store_set_by_client_(false),
+ transport_security_persister_readonly_(false),
net_log_(nullptr),
+ shared_host_resolver_(nullptr),
pac_quick_check_enabled_(true),
- pac_sanitize_url_policy_(ProxyService::SanitizeUrlPolicy::SAFE) {
+ pac_sanitize_url_policy_(ProxyService::SanitizeUrlPolicy::SAFE),
+ shared_proxy_delegate_(nullptr),
+ shared_http_auth_handler_factory_(nullptr),
+ shared_cert_verifier_(nullptr) {
}
URLRequestContextBuilder::~URLRequestContextBuilder() {}
@@ -237,6 +243,22 @@ void URLRequestContextBuilder::SetHttpNetworkSessionComponents(
}
}
+void URLRequestContextBuilder::set_accept_language(
+ const std::string& accept_language) {
+ DCHECK(!shared_http_user_agent_settings_);
+ accept_language_ = accept_language;
+}
+void URLRequestContextBuilder::set_user_agent(const std::string& user_agent) {
+ DCHECK(!shared_http_user_agent_settings_);
+ user_agent_ = user_agent;
+}
+void URLRequestContextBuilder::set_shared_http_user_agent_settings(
+ HttpUserAgentSettings* shared_http_user_agent_settings) {
+ DCHECK(accept_language_.empty());
+ DCHECK(user_agent_.empty());
+ shared_http_user_agent_settings_ = shared_http_user_agent_settings;
+}
+
void URLRequestContextBuilder::EnableHttpCache(const HttpCacheParams& params) {
http_cache_enabled_ = true;
http_cache_params_ = params;
@@ -265,9 +287,16 @@ void URLRequestContextBuilder::set_ct_policy_enforcer(
void URLRequestContextBuilder::SetCertVerifier(
std::unique_ptr<CertVerifier> cert_verifier) {
+ DCHECK(!shared_cert_verifier_);
cert_verifier_ = std::move(cert_verifier);
}
+void URLRequestContextBuilder::set_shared_cert_verifier(
+ CertVerifier* shared_cert_verifier) {
+ DCHECK(!cert_verifier_);
+ shared_cert_verifier_ = shared_cert_verifier;
+}
+
#if BUILDFLAG(ENABLE_REPORTING)
void URLRequestContextBuilder::set_reporting_policy(
std::unique_ptr<net::ReportingPolicy> reporting_policy) {
@@ -281,6 +310,12 @@ void URLRequestContextBuilder::SetInterceptors(
url_request_interceptors_ = std::move(url_request_interceptors);
}
+void URLRequestContextBuilder::set_create_intercepting_job_factory(
+ CreateInterceptingJobFactory create_intercepting_job_factory) {
+ DCHECK(!create_intercepting_job_factory_);
+ create_intercepting_job_factory_ = std::move(create_intercepting_job_factory);
+}
+
void URLRequestContextBuilder::SetCookieAndChannelIdStores(
std::unique_ptr<CookieStore> cookie_store,
std::unique_ptr<ChannelIDService> channel_id_service) {
@@ -300,14 +335,48 @@ void URLRequestContextBuilder::SetProtocolHandler(
const std::string& scheme,
std::unique_ptr<URLRequestJobFactory::ProtocolHandler> protocol_handler) {
DCHECK(protocol_handler);
+ // If a consumer sets a ProtocolHandler and then overwrites it with another,
+ // it's probably a bug.
+ DCHECK_EQ(0u, protocol_handlers_.count(scheme));
protocol_handlers_[scheme] = std::move(protocol_handler);
}
+void URLRequestContextBuilder::set_host_resolver(
+ std::unique_ptr<HostResolver> host_resolver) {
+ DCHECK(!shared_host_resolver_);
+ host_resolver_ = std::move(host_resolver);
+}
+
+void URLRequestContextBuilder::set_shared_host_resolver(
+ HostResolver* shared_host_resolver) {
+ DCHECK(!host_resolver_);
+ shared_host_resolver_ = shared_host_resolver;
+}
+
+void URLRequestContextBuilder::set_proxy_delegate(
+ std::unique_ptr<ProxyDelegate> proxy_delegate) {
+ DCHECK(!shared_proxy_delegate_);
+ proxy_delegate_ = std::move(proxy_delegate);
+}
+
+void URLRequestContextBuilder::set_shared_proxy_delegate(
+ ProxyDelegate* shared_proxy_delegate) {
+ DCHECK(!proxy_delegate_);
+ shared_proxy_delegate_ = shared_proxy_delegate;
+}
+
void URLRequestContextBuilder::SetHttpAuthHandlerFactory(
std::unique_ptr<HttpAuthHandlerFactory> factory) {
+ DCHECK(!shared_http_auth_handler_factory_);
http_auth_handler_factory_ = std::move(factory);
}
+void URLRequestContextBuilder::set_shared_http_auth_handler_factory(
+ HttpAuthHandlerFactory* shared_http_auth_handler_factory) {
+ DCHECK(!http_auth_handler_factory_);
+ shared_http_auth_handler_factory_ = shared_http_auth_handler_factory;
+}
+
void URLRequestContextBuilder::SetHttpServerProperties(
std::unique_ptr<HttpServerProperties> http_server_properties) {
http_server_properties_ = std::move(http_server_properties);
@@ -322,9 +391,13 @@ std::unique_ptr<URLRequestContext> URLRequestContextBuilder::Build() {
context->set_enable_brotli(enable_brotli_);
context->set_network_quality_estimator(network_quality_estimator_);
- storage->set_http_user_agent_settings(
- base::MakeUnique<StaticHttpUserAgentSettings>(accept_language_,
- user_agent_));
+ if (shared_http_user_agent_settings_) {
+ context->set_http_user_agent_settings(shared_http_user_agent_settings_);
+ } else {
+ storage->set_http_user_agent_settings(
+ base::MakeUnique<StaticHttpUserAgentSettings>(accept_language_,
+ user_agent_));
+ }
if (!network_delegate_)
network_delegate_.reset(new BasicNetworkDelegate);
@@ -338,10 +411,15 @@ std::unique_ptr<URLRequestContext> URLRequestContextBuilder::Build() {
storage->set_net_log(base::WrapUnique(new NetLog));
}
- if (!host_resolver_) {
- host_resolver_ = HostResolver::CreateDefaultResolver(context->net_log());
+ if (host_resolver_) {
+ DCHECK(!shared_host_resolver_);
+ storage->set_host_resolver(std::move(host_resolver_));
+ } else if (shared_host_resolver_) {
+ context->set_host_resolver(shared_host_resolver_);
+ } else {
+ storage->set_host_resolver(
+ HostResolver::CreateDefaultResolver(context->net_log()));
}
- storage->set_host_resolver(std::move(host_resolver_));
if (ssl_config_service_) {
// This takes a raw pointer, but |storage| will hold onto a reference to the
@@ -351,13 +429,18 @@ std::unique_ptr<URLRequestContext> URLRequestContextBuilder::Build() {
storage->set_ssl_config_service(new SSLConfigServiceDefaults);
}
- if (!http_auth_handler_factory_) {
- http_auth_handler_factory_ =
- HttpAuthHandlerRegistryFactory::CreateDefault(context->host_resolver());
+ if (http_auth_handler_factory_) {
+ DCHECK(!shared_http_auth_handler_factory_);
+ storage->set_http_auth_handler_factory(
+ std::move(http_auth_handler_factory_));
+ } else if (shared_http_auth_handler_factory_) {
+ context->set_http_auth_handler_factory(shared_http_auth_handler_factory_);
+ } else {
+ storage->set_http_auth_handler_factory(
+ HttpAuthHandlerRegistryFactory::CreateDefault(
+ context->host_resolver()));
}
- storage->set_http_auth_handler_factory(std::move(http_auth_handler_factory_));
-
if (cookie_store_set_by_client_) {
storage->set_cookie_store(std::move(cookie_store_));
storage->set_channel_id_service(std::move(channel_id_service_));
@@ -389,9 +472,10 @@ std::unique_ptr<URLRequestContext> URLRequestContextBuilder::Build() {
context->set_transport_security_persister(
base::WrapUnique<TransportSecurityPersister>(
- new TransportSecurityPersister(context->transport_security_state(),
- transport_security_persister_path_,
- task_runner, false)));
+ new TransportSecurityPersister(
+ context->transport_security_state(),
+ transport_security_persister_path_, task_runner,
+ transport_security_persister_readonly_)));
}
if (http_server_properties_) {
@@ -402,7 +486,10 @@ std::unique_ptr<URLRequestContext> URLRequestContextBuilder::Build() {
}
if (cert_verifier_) {
+ DCHECK(!shared_cert_verifier_);
storage->set_cert_verifier(std::move(cert_verifier_));
+ } else if (shared_cert_verifier_) {
+ context->set_cert_verifier(shared_cert_verifier_);
} else {
storage->set_cert_verifier(CertVerifier::CreateDefault());
}
@@ -448,8 +535,11 @@ std::unique_ptr<URLRequestContext> URLRequestContextBuilder::Build() {
SetHttpNetworkSessionComponents(context.get(), &network_session_context);
if (proxy_delegate_) {
+ DCHECK(!shared_proxy_delegate_);
network_session_context.proxy_delegate = proxy_delegate_.get();
storage->set_proxy_delegate(std::move(proxy_delegate_));
+ } else if (shared_proxy_delegate_) {
+ network_session_context.proxy_delegate = shared_proxy_delegate_;
}
storage->set_http_network_session(base::MakeUnique<HttpNetworkSession>(
@@ -465,10 +555,23 @@ std::unique_ptr<URLRequestContext> URLRequestContextBuilder::Build() {
{base::MayBlock(), base::TaskPriority::USER_BLOCKING,
base::TaskShutdownBehavior::BLOCK_SHUTDOWN});
}
- BackendType backend_type =
- http_cache_params_.type == HttpCacheParams::DISK
- ? CACHE_BACKEND_DEFAULT
- : CACHE_BACKEND_SIMPLE;
+ // TODO(mmenke): Maybe merge BackendType and HttpCacheParams::Type? The
+ // first doesn't include in memory, so may require some work.
+ BackendType backend_type = CACHE_BACKEND_DEFAULT;
+ switch (http_cache_params_.type) {
+ case HttpCacheParams::DISK:
+ backend_type = CACHE_BACKEND_DEFAULT;
+ break;
+ case HttpCacheParams::DISK_BLOCKFILE:
+ backend_type = CACHE_BACKEND_BLOCKFILE;
+ break;
+ case HttpCacheParams::DISK_SIMPLE:
+ backend_type = CACHE_BACKEND_SIMPLE;
+ break;
+ case HttpCacheParams::IN_MEMORY:
+ NOTREACHED();
+ break;
+ }
http_cache_backend.reset(new HttpCache::DefaultBackend(
DISK_CACHE, backend_type, http_cache_params_.path,
http_cache_params_.max_size, cache_thread_task_runner_));
@@ -526,6 +629,10 @@ std::unique_ptr<URLRequestContext> URLRequestContextBuilder::Build() {
}
url_request_interceptors_.clear();
}
+ if (create_intercepting_job_factory_) {
+ top_job_factory = std::move(create_intercepting_job_factory_)
+ .Run(std::move(top_job_factory));
+ }
storage->set_job_factory(std::move(top_job_factory));
#if BUILDFLAG(ENABLE_REPORTING)
« chrome/browser/io_thread.cc ('K') | « net/url_request/url_request_context_builder.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698