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

Unified Diff: net/url_request/url_request_context_builder.h

Issue 2978443002: Make ProfileIOData use URLRequestContextBuilder (Closed)
Patch Set: Merge 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.h
diff --git a/net/url_request/url_request_context_builder.h b/net/url_request/url_request_context_builder.h
index 9f695c39312854d96fbbca8924e511b90719191f..95e90dfaacbb3616eb12cdfe01314adee531f08b 100644
--- a/net/url_request/url_request_context_builder.h
+++ b/net/url_request/url_request_context_builder.h
@@ -23,6 +23,7 @@
#include <utility>
#include <vector>
+#include "base/callback.h"
#include "base/files/file_path.h"
#include "base/macros.h"
#include "base/memory/ref_counted.h"
@@ -54,6 +55,7 @@ class CookieStore;
class CTPolicyEnforcer;
class CTVerifier;
class HttpAuthHandlerFactory;
+class HttpUserAgentSettings;
class HttpServerProperties;
class NetworkQualityEstimator;
class ProxyConfigService;
@@ -79,12 +81,18 @@ class URLRequestInterceptor;
// Builder may be used to create only a single URLRequestContext.
class NET_EXPORT URLRequestContextBuilder {
public:
+ using CreateInterceptingJobFactory =
+ base::OnceCallback<std::unique_ptr<net::URLRequestJobFactory>(
+ std::unique_ptr<net::URLRequestJobFactory> inner_job_factory)>;
+
struct NET_EXPORT HttpCacheParams {
enum Type {
// In-memory cache.
IN_MEMORY,
// Disk cache using "default" backend.
DISK,
+ // Disk cache using "blockfile" backend (BackendImpl).
+ DISK_BLOCKFILE,
// Disk cache using "simple" backend (SimpleBackendImpl).
DISK_SIMPLE,
};
@@ -166,12 +174,13 @@ class NET_EXPORT URLRequestContextBuilder {
// Call these functions to specify hard-coded Accept-Language
// or User-Agent header values for all requests that don't
// have the headers already set.
- void set_accept_language(const std::string& accept_language) {
- accept_language_ = accept_language;
- }
- void set_user_agent(const std::string& user_agent) {
- user_agent_ = user_agent;
- }
+ void set_accept_language(const std::string& accept_language);
+ void set_user_agent(const std::string& user_agent);
+ // Makes the created URLRequestContext use a shared HttpUserAgentSettings
+ // object. Not compatible with set_accept_language() / set_user_agent().
+ // TODO(mmenke): Take ownership of the object instead.
+ void set_shared_http_user_agent_settings(
+ HttpUserAgentSettings* shared_http_user_agent_settings);
Randy Smith (Not in Mondays) 2017/07/14 21:37:09 I can't imagine it will surprise you that I'm some
mmenke 2017/07/14 22:45:37 Much of this CL is adding technical debt that will
Randy Smith (Not in Mondays) 2017/07/18 18:26:54 That probably makes sense. My sense is that we're
// Control support for data:// requests. By default it's disabled.
void set_data_enabled(bool enable) {
@@ -205,9 +214,12 @@ class NET_EXPORT URLRequestContextBuilder {
void set_net_log(NetLog* net_log) { net_log_ = net_log; }
// By default host_resolver is constructed with CreateDefaultResolver.
- void set_host_resolver(std::unique_ptr<HostResolver> host_resolver) {
- host_resolver_ = std::move(host_resolver);
- }
+ void set_host_resolver(std::unique_ptr<HostResolver> host_resolver);
+ // Allows sharing the HostResolver with other URLRequestContexts. Should not
+ // be used if set_host_resolver() is used.
+ // TODO(mmenke): Figure out the cost/benefits of not supporting HostResolvers
+ // between URLRequestContexts.
+ void set_shared_host_resolver(HostResolver* host_resolver);
// Uses BasicNetworkDelegate by default. Note that calling Build will unset
// any custom delegate in builder, so this must be called each time before
@@ -216,20 +228,24 @@ class NET_EXPORT URLRequestContextBuilder {
network_delegate_ = std::move(delegate);
}
- // Temporarily stores a ProxyDelegate. Ownership is transferred to
- // UrlRequestContextStorage during Build.
- void set_proxy_delegate(std::unique_ptr<ProxyDelegate> delegate) {
- proxy_delegate_ = std::move(delegate);
- }
+ // Sets the ProxyDelegate.
+ void set_proxy_delegate(std::unique_ptr<ProxyDelegate> proxy_delegate);
+ // Allows sharing the PreoxyDelegates with other URLRequestContexts. Should
+ // not be used if set_proxy_delegate() is used.
+ // TODO(mmenke): Remove this (And update consumers).
+ void set_shared_proxy_delegate(ProxyDelegate* shared_proxy_delegate);
// Sets a specific HttpAuthHandlerFactory to be used by the URLRequestContext
// rather than the default |HttpAuthHandlerRegistryFactory|. The builder
// takes ownership of the factory and will eventually transfer it to the new
- // URLRequestContext. Note that since Build will transfer ownership, the
- // custom factory will be unset and this must be called before the next Build
- // to set another custom one.
+ // URLRequestContext.
void SetHttpAuthHandlerFactory(
std::unique_ptr<HttpAuthHandlerFactory> factory);
+ // Makes the created URLRequestContext use a shared HttpAuthHandlerFactory
+ // object. Not compatible with SetHttpAuthHandlerFactory().
+ // TODO(mmenke): Evaluate if sharing is really needed.
+ void set_shared_http_auth_handler_factory(
+ HttpAuthHandlerFactory* shared_http_auth_handler_factory);
// By default HttpCache is enabled with a default constructed HttpCacheParams.
void EnableHttpCache(const HttpCacheParams& params);
@@ -246,6 +262,15 @@ class NET_EXPORT URLRequestContextBuilder {
transport_security_persister_path_ = transport_security_persister_path;
}
+ // Sets whether the TransportSecurityPersister only reads persisted
+ // information, or also writes it. By default, it both reads and writes.
+ // TODO(mmenke): Consider merging this with the above method.
+ void set_transport_security_persister_readonly(
+ bool transport_security_persister_readonly) {
+ transport_security_persister_readonly_ =
+ transport_security_persister_readonly;
+ }
+
void SetSpdyAndQuicEnabled(bool spdy_enabled,
bool quic_enabled);
@@ -259,6 +284,11 @@ class NET_EXPORT URLRequestContextBuilder {
void SetCertVerifier(std::unique_ptr<CertVerifier> cert_verifier);
+ // Makes the created URLRequestContext use a shared CertVerifier object.
+ // Should not be used it SetCertVerifier() is used.
+ // TODO(mmenke): Figure out if this can take ownership of the object instead.
+ void set_shared_cert_verifier(CertVerifier* shared_cert_verifier);
+
#if BUILDFLAG(ENABLE_REPORTING)
void set_reporting_policy(
std::unique_ptr<net::ReportingPolicy> reporting_policy);
@@ -267,6 +297,13 @@ class NET_EXPORT URLRequestContextBuilder {
void SetInterceptors(std::vector<std::unique_ptr<URLRequestInterceptor>>
url_request_interceptors);
+ // Sets a callback that is passed ownership of the URLRequestJobFactory, and
+ // can wrap it in another URLRequestJobFactory. URLRequestInterceptors can't
+ // handle intercepting unsupported protocols, while this case.
+ // TODO(mmenke): Remove this, once it's no longer needed.
+ void set_create_intercepting_job_factory(
+ CreateInterceptingJobFactory create_intercepting_job_factory);
+
// Override the default in-memory cookie store and channel id service.
// If both |cookie_store| and |channel_id_service| are NULL, CookieStore and
// ChannelIDService will be disabled for this context.
@@ -322,6 +359,8 @@ class NET_EXPORT URLRequestContextBuilder {
std::string accept_language_;
std::string user_agent_;
+ HttpUserAgentSettings* shared_http_user_agent_settings_;
+
// Include support for data:// requests.
bool data_enabled_;
#if !BUILDFLAG(DISABLE_FILE_SUPPORT)
@@ -341,8 +380,10 @@ class NET_EXPORT URLRequestContextBuilder {
HttpCacheParams http_cache_params_;
HttpNetworkSession::Params http_network_session_params_;
base::FilePath transport_security_persister_path_;
+ bool transport_security_persister_readonly_;
NetLog* net_log_;
std::unique_ptr<HostResolver> host_resolver_;
+ net::HostResolver* shared_host_resolver_;
std::unique_ptr<ChannelIDService> channel_id_service_;
std::unique_ptr<ProxyConfigService> proxy_config_service_;
bool pac_quick_check_enabled_;
@@ -351,15 +392,19 @@ class NET_EXPORT URLRequestContextBuilder {
scoped_refptr<net::SSLConfigService> ssl_config_service_;
std::unique_ptr<NetworkDelegate> network_delegate_;
std::unique_ptr<ProxyDelegate> proxy_delegate_;
+ ProxyDelegate* shared_proxy_delegate_;
std::unique_ptr<CookieStore> cookie_store_;
std::unique_ptr<HttpAuthHandlerFactory> http_auth_handler_factory_;
+ HttpAuthHandlerFactory* shared_http_auth_handler_factory_;
std::unique_ptr<CertVerifier> cert_verifier_;
+ CertVerifier* shared_cert_verifier_;
std::unique_ptr<CTVerifier> ct_verifier_;
std::unique_ptr<CTPolicyEnforcer> ct_policy_enforcer_;
#if BUILDFLAG(ENABLE_REPORTING)
std::unique_ptr<net::ReportingPolicy> reporting_policy_;
#endif // BUILDFLAG(ENABLE_REPORTING)
std::vector<std::unique_ptr<URLRequestInterceptor>> url_request_interceptors_;
+ CreateInterceptingJobFactory create_intercepting_job_factory_;
std::unique_ptr<HttpServerProperties> http_server_properties_;
std::map<std::string, std::unique_ptr<URLRequestJobFactory::ProtocolHandler>>
protocol_handlers_;

Powered by Google App Engine
This is Rietveld 408576698