| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CHROME_BROWSER_PROFILES_PROFILE_IO_DATA_H_ | 5 #ifndef CHROME_BROWSER_PROFILES_PROFILE_IO_DATA_H_ |
| 6 #define CHROME_BROWSER_PROFILES_PROFILE_IO_DATA_H_ | 6 #define CHROME_BROWSER_PROFILES_PROFILE_IO_DATA_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| 11 #include "base/callback_forward.h" | 11 #include "base/callback_forward.h" |
| 12 #include "base/file_path.h" | 12 #include "base/file_path.h" |
| 13 #include "base/memory/ref_counted.h" | 13 #include "base/memory/ref_counted.h" |
| 14 #include "base/memory/scoped_ptr.h" | 14 #include "base/memory/scoped_ptr.h" |
| 15 #include "base/memory/weak_ptr.h" | 15 #include "base/memory/weak_ptr.h" |
| 16 #include "base/prefs/public/pref_member.h" | 16 #include "base/prefs/public/pref_member.h" |
| 17 #include "base/synchronization/lock.h" | 17 #include "base/synchronization/lock.h" |
| 18 #include "chrome/browser/custom_handlers/protocol_handler_registry.h" |
| 18 #include "chrome/browser/io_thread.h" | 19 #include "chrome/browser/io_thread.h" |
| 19 #include "chrome/browser/net/chrome_url_request_context.h" | 20 #include "chrome/browser/net/chrome_url_request_context.h" |
| 20 #include "chrome/browser/profiles/storage_partition_descriptor.h" | 21 #include "chrome/browser/profiles/storage_partition_descriptor.h" |
| 21 #include "content/public/browser/resource_context.h" | 22 #include "content/public/browser/resource_context.h" |
| 22 #include "net/cookies/cookie_monster.h" | 23 #include "net/cookies/cookie_monster.h" |
| 23 #include "net/http/http_network_session.h" | 24 #include "net/http/http_network_session.h" |
| 24 #include "net/url_request/url_request_job_factory.h" | 25 #include "net/url_request/url_request_job_factory.h" |
| 25 | 26 |
| 26 class ChromeHttpUserAgentSettings; | 27 class ChromeHttpUserAgentSettings; |
| 27 class ChromeNetworkDelegate; | 28 class ChromeNetworkDelegate; |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 81 | 82 |
| 82 // These should only be called at most once each. Ownership is reversed when | 83 // These should only be called at most once each. Ownership is reversed when |
| 83 // they get called, from ProfileIOData owning ChromeURLRequestContext to vice | 84 // they get called, from ProfileIOData owning ChromeURLRequestContext to vice |
| 84 // versa. | 85 // versa. |
| 85 ChromeURLRequestContext* GetMainRequestContext() const; | 86 ChromeURLRequestContext* GetMainRequestContext() const; |
| 86 ChromeURLRequestContext* GetMediaRequestContext() const; | 87 ChromeURLRequestContext* GetMediaRequestContext() const; |
| 87 ChromeURLRequestContext* GetExtensionsRequestContext() const; | 88 ChromeURLRequestContext* GetExtensionsRequestContext() const; |
| 88 ChromeURLRequestContext* GetIsolatedAppRequestContext( | 89 ChromeURLRequestContext* GetIsolatedAppRequestContext( |
| 89 ChromeURLRequestContext* main_context, | 90 ChromeURLRequestContext* main_context, |
| 90 const StoragePartitionDescriptor& partition_descriptor, | 91 const StoragePartitionDescriptor& partition_descriptor, |
| 91 scoped_ptr<net::URLRequestJobFactory::Interceptor> | 92 scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory> |
| 92 protocol_handler_interceptor) const; | 93 protocol_handler_interceptor) const; |
| 93 ChromeURLRequestContext* GetIsolatedMediaRequestContext( | 94 ChromeURLRequestContext* GetIsolatedMediaRequestContext( |
| 94 ChromeURLRequestContext* app_context, | 95 ChromeURLRequestContext* app_context, |
| 95 const StoragePartitionDescriptor& partition_descriptor) const; | 96 const StoragePartitionDescriptor& partition_descriptor) const; |
| 96 | 97 |
| 97 // These are useful when the Chrome layer is called from the content layer | 98 // These are useful when the Chrome layer is called from the content layer |
| 98 // with a content::ResourceContext, and they want access to Chrome data for | 99 // with a content::ResourceContext, and they want access to Chrome data for |
| 99 // that profile. | 100 // that profile. |
| 100 ExtensionInfoMap* GetExtensionInfoMap() const; | 101 ExtensionInfoMap* GetExtensionInfoMap() const; |
| 101 CookieSettings* GetCookieSettings() const; | 102 CookieSettings* GetCookieSettings() const; |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 211 scoped_refptr<net::SSLConfigService> ssl_config_service; | 212 scoped_refptr<net::SSLConfigService> ssl_config_service; |
| 212 scoped_refptr<net::CookieMonster::Delegate> cookie_monster_delegate; | 213 scoped_refptr<net::CookieMonster::Delegate> cookie_monster_delegate; |
| 213 scoped_refptr<ExtensionInfoMap> extension_info_map; | 214 scoped_refptr<ExtensionInfoMap> extension_info_map; |
| 214 scoped_ptr<chrome_browser_net::ResourcePrefetchPredictorObserver> | 215 scoped_ptr<chrome_browser_net::ResourcePrefetchPredictorObserver> |
| 215 resource_prefetch_predictor_observer_; | 216 resource_prefetch_predictor_observer_; |
| 216 | 217 |
| 217 #if defined(ENABLE_NOTIFICATIONS) | 218 #if defined(ENABLE_NOTIFICATIONS) |
| 218 DesktopNotificationService* notification_service; | 219 DesktopNotificationService* notification_service; |
| 219 #endif | 220 #endif |
| 220 | 221 |
| 221 // This pointer exists only as a means of conveying a url interceptor | 222 // This pointer exists only as a means of conveying a url job factory |
| 222 // pointer from the protocol handler registry on the UI thread to the | 223 // pointer from the protocol handler registry on the UI thread to the |
| 223 // the URLRequestJobFactory on the IO thread. The consumer MUST take | 224 // the URLRequestContext on the IO thread. The consumer MUST take |
| 224 // ownership of the object by calling release() on this pointer. | 225 // ownership of the object by calling release() on this pointer. |
| 225 scoped_ptr<net::URLRequestJobFactory::Interceptor> | 226 scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory> |
| 226 protocol_handler_interceptor; | 227 protocol_handler_interceptor; |
| 227 | 228 |
| 228 // We need to initialize the ProxyConfigService from the UI thread | 229 // We need to initialize the ProxyConfigService from the UI thread |
| 229 // because on linux it relies on initializing things through gconf, | 230 // because on linux it relies on initializing things through gconf, |
| 230 // and needs to be on the main thread. | 231 // and needs to be on the main thread. |
| 231 scoped_ptr<net::ProxyConfigService> proxy_config_service; | 232 scoped_ptr<net::ProxyConfigService> proxy_config_service; |
| 232 // The profile this struct was populated from. It's passed as a void* to | 233 // The profile this struct was populated from. It's passed as a void* to |
| 233 // ensure it's not accidently used on the IO thread. Before using it on the | 234 // ensure it's not accidently used on the IO thread. Before using it on the |
| 234 // UI thread, call ProfileManager::IsValidProfile to ensure it's alive. | 235 // UI thread, call ProfileManager::IsValidProfile to ensure it's alive. |
| 235 void* profile; | 236 void* profile; |
| 236 }; | 237 }; |
| 237 | 238 |
| 238 explicit ProfileIOData(bool is_incognito); | 239 explicit ProfileIOData(bool is_incognito); |
| 239 | 240 |
| 240 static std::string GetSSLSessionCacheShard(); | 241 static std::string GetSSLSessionCacheShard(); |
| 241 | 242 |
| 242 void InitializeOnUIThread(Profile* profile); | 243 void InitializeOnUIThread(Profile* profile); |
| 243 void ApplyProfileParamsToContext(ChromeURLRequestContext* context) const; | 244 void ApplyProfileParamsToContext(ChromeURLRequestContext* context) const; |
| 244 | 245 |
| 245 void SetUpJobFactoryDefaults( | 246 scoped_ptr<net::URLRequestJobFactory> SetUpJobFactoryDefaults( |
| 246 net::URLRequestJobFactoryImpl* job_factory, | 247 scoped_ptr<net::URLRequestJobFactoryImpl> job_factory, |
| 247 scoped_ptr<net::URLRequestJobFactory::Interceptor> | 248 scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory> |
| 248 protocol_handler_interceptor, | 249 protocol_handler_interceptor, |
| 249 net::NetworkDelegate* network_delegate, | 250 net::NetworkDelegate* network_delegate, |
| 250 net::FtpTransactionFactory* ftp_transaction_factory, | 251 net::FtpTransactionFactory* ftp_transaction_factory, |
| 251 net::FtpAuthCache* ftp_auth_cache) const; | 252 net::FtpAuthCache* ftp_auth_cache) const; |
| 252 | 253 |
| 253 // Lazy initializes the ProfileIOData object the first time a request context | 254 // Lazy initializes the ProfileIOData object the first time a request context |
| 254 // is requested. The lazy logic is implemented here. The actual initialization | 255 // is requested. The lazy logic is implemented here. The actual initialization |
| 255 // is done in LazyInitializeInternal(), implemented by subtypes. Static helper | 256 // is done in LazyInitializeInternal(), implemented by subtypes. Static helper |
| 256 // functions have been provided to assist in common operations. | 257 // functions have been provided to assist in common operations. |
| 257 void LazyInitialize() const; | 258 void LazyInitialize() const; |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 345 virtual void LazyInitializeInternal(ProfileParams* profile_params) const = 0; | 346 virtual void LazyInitializeInternal(ProfileParams* profile_params) const = 0; |
| 346 | 347 |
| 347 // Initializes the RequestContext for extensions. | 348 // Initializes the RequestContext for extensions. |
| 348 virtual void InitializeExtensionsRequestContext( | 349 virtual void InitializeExtensionsRequestContext( |
| 349 ProfileParams* profile_params) const = 0; | 350 ProfileParams* profile_params) const = 0; |
| 350 // Does an on-demand initialization of a RequestContext for the given | 351 // Does an on-demand initialization of a RequestContext for the given |
| 351 // isolated app. | 352 // isolated app. |
| 352 virtual ChromeURLRequestContext* InitializeAppRequestContext( | 353 virtual ChromeURLRequestContext* InitializeAppRequestContext( |
| 353 ChromeURLRequestContext* main_context, | 354 ChromeURLRequestContext* main_context, |
| 354 const StoragePartitionDescriptor& details, | 355 const StoragePartitionDescriptor& details, |
| 355 scoped_ptr<net::URLRequestJobFactory::Interceptor> | 356 scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory> |
| 356 protocol_handler_interceptor) const = 0; | 357 protocol_handler_interceptor) const = 0; |
| 357 | 358 |
| 358 // Does an on-demand initialization of a media RequestContext for the given | 359 // Does an on-demand initialization of a media RequestContext for the given |
| 359 // isolated app. | 360 // isolated app. |
| 360 virtual ChromeURLRequestContext* InitializeMediaRequestContext( | 361 virtual ChromeURLRequestContext* InitializeMediaRequestContext( |
| 361 ChromeURLRequestContext* original_context, | 362 ChromeURLRequestContext* original_context, |
| 362 const StoragePartitionDescriptor& details) const = 0; | 363 const StoragePartitionDescriptor& details) const = 0; |
| 363 | 364 |
| 364 // These functions are used to transfer ownership of the lazily initialized | 365 // These functions are used to transfer ownership of the lazily initialized |
| 365 // context from ProfileIOData to the URLRequestContextGetter. | 366 // context from ProfileIOData to the URLRequestContextGetter. |
| 366 virtual ChromeURLRequestContext* | 367 virtual ChromeURLRequestContext* |
| 367 AcquireMediaRequestContext() const = 0; | 368 AcquireMediaRequestContext() const = 0; |
| 368 virtual ChromeURLRequestContext* | 369 virtual ChromeURLRequestContext* |
| 369 AcquireIsolatedAppRequestContext( | 370 AcquireIsolatedAppRequestContext( |
| 370 ChromeURLRequestContext* main_context, | 371 ChromeURLRequestContext* main_context, |
| 371 const StoragePartitionDescriptor& partition_descriptor, | 372 const StoragePartitionDescriptor& partition_descriptor, |
| 372 scoped_ptr<net::URLRequestJobFactory::Interceptor> | 373 scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory> |
| 373 protocol_handler_interceptor) const = 0; | 374 protocol_handler_interceptor) const = 0; |
| 374 virtual ChromeURLRequestContext* | 375 virtual ChromeURLRequestContext* |
| 375 AcquireIsolatedMediaRequestContext( | 376 AcquireIsolatedMediaRequestContext( |
| 376 ChromeURLRequestContext* app_context, | 377 ChromeURLRequestContext* app_context, |
| 377 const StoragePartitionDescriptor& partition_descriptor) const = 0; | 378 const StoragePartitionDescriptor& partition_descriptor) const = 0; |
| 378 | 379 |
| 379 // Returns the LoadTimeStats object to be used for this profile. | 380 // Returns the LoadTimeStats object to be used for this profile. |
| 380 virtual chrome_browser_net::LoadTimeStats* GetLoadTimeStats( | 381 virtual chrome_browser_net::LoadTimeStats* GetLoadTimeStats( |
| 381 IOThread::Globals* io_thread_globals) const = 0; | 382 IOThread::Globals* io_thread_globals) const = 0; |
| 382 | 383 |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 471 | 472 |
| 472 // TODO(jhawkins): Remove once crbug.com/102004 is fixed. | 473 // TODO(jhawkins): Remove once crbug.com/102004 is fixed. |
| 473 bool initialized_on_UI_thread_; | 474 bool initialized_on_UI_thread_; |
| 474 | 475 |
| 475 bool is_incognito_; | 476 bool is_incognito_; |
| 476 | 477 |
| 477 DISALLOW_COPY_AND_ASSIGN(ProfileIOData); | 478 DISALLOW_COPY_AND_ASSIGN(ProfileIOData); |
| 478 }; | 479 }; |
| 479 | 480 |
| 480 #endif // CHROME_BROWSER_PROFILES_PROFILE_IO_DATA_H_ | 481 #endif // CHROME_BROWSER_PROFILES_PROFILE_IO_DATA_H_ |
| OLD | NEW |