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

Unified Diff: chrome/browser/profiles/profile_io_data.h

Issue 11308362: Add StoragePartition's ProtocolHandlers at URLRequestContext construction time. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Avoid DCHECK in GetExtensionInfoMap() during Init() Created 8 years 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: 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,

Powered by Google App Engine
This is Rietveld 408576698