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 948e0169fdd67ae18a4b280f9f2a2188528bda3c..c145ea0e0b65e0f0e41952085a6c1adfe0ca14b8 100644 |
--- a/chrome/browser/profiles/profile_io_data.h |
+++ b/chrome/browser/profiles/profile_io_data.h |
@@ -79,9 +79,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; |
@@ -89,7 +97,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; |
@@ -250,12 +264,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(); |
@@ -295,6 +303,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. |
@@ -323,8 +335,6 @@ class ProfileIOData { |
private: |
friend class ProfileIOData; |
- void EnsureInitialized(); |
- |
ProfileIOData* const io_data_; |
net::HostResolver* host_resolver_; |
@@ -342,7 +352,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( |
@@ -353,7 +370,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. |
@@ -370,7 +393,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, |