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

Unified Diff: net/url_request/url_request_context_builder.h

Issue 2986733002: Reland of 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
« no previous file with comments | « chrome/browser/profiles/profile_io_data.cc ('k') | net/url_request/url_request_context_builder.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..ce19ca32a72fbe53bf607a061a51c720b64e2147 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 CTPolicyEnforcer;
class CTVerifier;
class HttpAuthHandlerFactory;
+class HttpUserAgentSettings;
class HttpServerProperties;
class NetworkQualityEstimator;
class ProxyConfigService;
@@ -79,12 +81,18 @@
// 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,17 @@
// 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(). The
+ // consumer must ensure the HttpUserAgentSettings outlives the
+ // URLRequestContext returned by the builder.
+ //
+ // TODO(mmenke): Take ownership of the object instead. See:
+ // https://crbug.com/743251
+ void set_shared_http_user_agent_settings(
+ HttpUserAgentSettings* shared_http_user_agent_settings);
// Control support for data:// requests. By default it's disabled.
void set_data_enabled(bool enable) {
@@ -205,9 +218,14 @@
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. The consumer must ensure the
+ // HostResolver outlives the URLRequestContext returned by the builder.
+ //
+ // TODO(mmenke): Figure out the cost/benefits of not supporting sharing
+ // HostResolvers between URLRequestContexts. See: https://crbug.com/743251.
+ 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 +234,31 @@
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. The consumer must ensure the
+ // ProxyDelegate outlives the URLRequestContext returned by the builder.
+ //
+ // TODO(mmenke): Remove this (And update consumers). See:
+ // https://crbug.com/743251.
+ 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(). The consumer must
+ // ensure the HttpAuthHandlerFactory outlives the URLRequestContext returned
+ // by the builder.
+ //
+ // TODO(mmenke): Evaluate if sharing is really needed. See:
+ // https://crbug.com/743251.
+ 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 +275,17 @@
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 removing this in favor of the above method. See:
+ // https://crbug.com/743251.
+ 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);
@@ -258,6 +298,14 @@
std::unique_ptr<CTPolicyEnforcer> ct_policy_enforcer);
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. The consumer must ensure
+ // the CertVerifier outlives the URLRequestContext returned by the builder.
+ //
+ // TODO(mmenke): Figure out if consumers can use SetCertVerifier instead. See:
+ // https://crbug.com/743251.
+ void set_shared_cert_verifier(CertVerifier* shared_cert_verifier);
#if BUILDFLAG(ENABLE_REPORTING)
void set_reporting_policy(
@@ -266,6 +314,13 @@
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
@@ -322,6 +377,8 @@
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 +398,10 @@
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 +410,19 @@
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_;
« no previous file with comments | « chrome/browser/profiles/profile_io_data.cc ('k') | net/url_request/url_request_context_builder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698