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

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: sync (r175140) Created 7 years, 12 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: 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,

Powered by Google App Engine
This is Rietveld 408576698