Index: chrome/browser/profiles/profile_io_data.h |
diff --git a/chrome/browser/profiles/profile_io_data.h b/chrome/browser/profiles/profile_io_data.h |
index ef91f6a980b91fd383a248879d98f70c9a4de6db..95f7641a47306d75329b0ddbd2c1cb5a1d70ed1f 100644 |
--- a/chrome/browser/profiles/profile_io_data.h |
+++ b/chrome/browser/profiles/profile_io_data.h |
@@ -78,9 +78,17 @@ class ProfileIOData { |
content::ResourceContext* GetResourceContext() const; |
ChromeURLDataManagerBackend* GetChromeURLDataManagerBackend() const; |
- // These should only be called at most once each. Ownership is reversed when |
- // they get called, from ProfileIOData owning ChromeURLRequestContext to vice |
- // versa. |
+ // Initializes the ProfileIOData object and primes the RequestContext |
+ // generation. Must be called prior to any of the Get*() methods other than |
+ // GetResouceContext or GetMetricsEnabledStateOnIOThread. |
+ void Init( |
+ scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> |
+ blob_protocol_handler, |
+ scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> |
+ file_system_protocol_handler, |
+ scoped_ptr<net::URLRequestJobFactory::Interceptor> |
+ developer_protocol_handler) const; |
+ |
ChromeURLRequestContext* GetMainRequestContext() const; |
ChromeURLRequestContext* GetMediaRequestContext() const; |
ChromeURLRequestContext* GetExtensionsRequestContext() const; |
@@ -88,7 +96,13 @@ class ProfileIOData { |
ChromeURLRequestContext* main_context, |
const StoragePartitionDescriptor& partition_descriptor, |
scoped_ptr<net::URLRequestJobFactory::Interceptor> |
- protocol_handler_interceptor) const; |
+ protocol_handler_interceptor, |
+ scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> |
+ blob_protocol_handler, |
+ scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> |
+ file_system_protocol_handler, |
+ scoped_ptr<net::URLRequestJobFactory::Interceptor> |
+ developer_protocol_handler) const; |
ChromeURLRequestContext* GetIsolatedMediaRequestContext( |
ChromeURLRequestContext* app_context, |
const StoragePartitionDescriptor& partition_descriptor) const; |
@@ -249,12 +263,6 @@ class ProfileIOData { |
net::FtpTransactionFactory* ftp_transaction_factory, |
net::FtpAuthCache* ftp_auth_cache) const; |
- // Lazy initializes the ProfileIOData object the first time a request context |
- // is requested. The lazy logic is implemented here. The actual initialization |
- // is done in LazyInitializeInternal(), implemented by subtypes. Static helper |
- // functions have been provided to assist in common operations. |
- void LazyInitialize() const; |
- |
// Called when the profile is destroyed. |
void ShutdownOnUIThread(); |
@@ -294,6 +302,10 @@ class ProfileIOData { |
return load_time_stats_; |
} |
+ bool initialized() const { |
+ return initialized_; |
+ } |
+ |
// Destroys the ResourceContext first, to cancel any URLRequests that are |
// using it still, before we destroy the member variables that those |
// URLRequests may be accessing. |
@@ -322,8 +334,6 @@ class ProfileIOData { |
private: |
friend class ProfileIOData; |
- void EnsureInitialized(); |
- |
ProfileIOData* const io_data_; |
net::HostResolver* host_resolver_; |
@@ -341,7 +351,14 @@ class ProfileIOData { |
// Does the actual initialization of the ProfileIOData subtype. Subtypes |
// should use the static helper functions above to implement this. |
- virtual void LazyInitializeInternal(ProfileParams* profile_params) const = 0; |
+ virtual void InitializeInternal( |
+ ProfileParams* profile_params, |
+ scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> |
+ blob_protocol_handler, |
+ scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> |
+ file_system_protocol_handler, |
+ scoped_ptr<net::URLRequestJobFactory::Interceptor> |
+ developer_protocol_handler) const = 0; |
// Initializes the RequestContext for extensions. |
virtual void InitializeExtensionsRequestContext( |
@@ -352,7 +369,13 @@ class ProfileIOData { |
ChromeURLRequestContext* main_context, |
const StoragePartitionDescriptor& details, |
scoped_ptr<net::URLRequestJobFactory::Interceptor> |
- protocol_handler_interceptor) const = 0; |
+ protocol_handler_interceptor, |
+ scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> |
+ blob_protocol_handler, |
+ scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> |
+ file_system_protocol_handler, |
+ scoped_ptr<net::URLRequestJobFactory::Interceptor> |
+ developer_protocol_handler) const = 0; |
// Does an on-demand initialization of a media RequestContext for the given |
// isolated app. |
@@ -369,7 +392,13 @@ class ProfileIOData { |
ChromeURLRequestContext* main_context, |
const StoragePartitionDescriptor& partition_descriptor, |
scoped_ptr<net::URLRequestJobFactory::Interceptor> |
- protocol_handler_interceptor) const = 0; |
+ protocol_handler_interceptor, |
+ scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> |
+ blob_protocol_handler, |
+ scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> |
+ file_system_protocol_handler, |
+ scoped_ptr<net::URLRequestJobFactory::Interceptor> |
+ developer_protocol_handler) const = 0; |
virtual ChromeURLRequestContext* |
AcquireIsolatedMediaRequestContext( |
ChromeURLRequestContext* app_context, |