| 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" |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 72 static bool IsHandledProtocol(const std::string& scheme); | 72 static bool IsHandledProtocol(const std::string& scheme); |
| 73 | 73 |
| 74 // Returns true if |url| is handled in Chrome, or by default handlers in | 74 // Returns true if |url| is handled in Chrome, or by default handlers in |
| 75 // net::URLRequest. | 75 // net::URLRequest. |
| 76 static bool IsHandledURL(const GURL& url); | 76 static bool IsHandledURL(const GURL& url); |
| 77 | 77 |
| 78 // Called by Profile. | 78 // Called by Profile. |
| 79 content::ResourceContext* GetResourceContext() const; | 79 content::ResourceContext* GetResourceContext() const; |
| 80 ChromeURLDataManagerBackend* GetChromeURLDataManagerBackend() const; | 80 ChromeURLDataManagerBackend* GetChromeURLDataManagerBackend() const; |
| 81 | 81 |
| 82 // These should only be called at most once each. Ownership is reversed when | 82 // Initializes the ProfileIOData object and primes the RequestContext |
| 83 // they get called, from ProfileIOData owning ChromeURLRequestContext to vice | 83 // generation. Must be called prior to any of the Get*() methods other than |
| 84 // versa. | 84 // GetResouceContext or GetMetricsEnabledStateOnIOThread. |
| 85 void Init( |
| 86 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> |
| 87 blob_protocol_handler, |
| 88 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> |
| 89 file_system_protocol_handler, |
| 90 scoped_ptr<net::URLRequestJobFactory::Interceptor> |
| 91 developer_protocol_handler) const; |
| 92 |
| 85 ChromeURLRequestContext* GetMainRequestContext() const; | 93 ChromeURLRequestContext* GetMainRequestContext() const; |
| 86 ChromeURLRequestContext* GetMediaRequestContext() const; | 94 ChromeURLRequestContext* GetMediaRequestContext() const; |
| 87 ChromeURLRequestContext* GetExtensionsRequestContext() const; | 95 ChromeURLRequestContext* GetExtensionsRequestContext() const; |
| 88 ChromeURLRequestContext* GetIsolatedAppRequestContext( | 96 ChromeURLRequestContext* GetIsolatedAppRequestContext( |
| 89 ChromeURLRequestContext* main_context, | 97 ChromeURLRequestContext* main_context, |
| 90 const StoragePartitionDescriptor& partition_descriptor, | 98 const StoragePartitionDescriptor& partition_descriptor, |
| 91 scoped_ptr<net::URLRequestJobFactory::Interceptor> | 99 scoped_ptr<net::URLRequestJobFactory::Interceptor> |
| 92 protocol_handler_interceptor) const; | 100 protocol_handler_interceptor, |
| 101 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> |
| 102 blob_protocol_handler, |
| 103 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> |
| 104 file_system_protocol_handler, |
| 105 scoped_ptr<net::URLRequestJobFactory::Interceptor> |
| 106 developer_protocol_handler) const; |
| 93 ChromeURLRequestContext* GetIsolatedMediaRequestContext( | 107 ChromeURLRequestContext* GetIsolatedMediaRequestContext( |
| 94 ChromeURLRequestContext* app_context, | 108 ChromeURLRequestContext* app_context, |
| 95 const StoragePartitionDescriptor& partition_descriptor) const; | 109 const StoragePartitionDescriptor& partition_descriptor) const; |
| 96 | 110 |
| 97 // These are useful when the Chrome layer is called from the content layer | 111 // 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 | 112 // with a content::ResourceContext, and they want access to Chrome data for |
| 99 // that profile. | 113 // that profile. |
| 100 ExtensionInfoMap* GetExtensionInfoMap() const; | 114 ExtensionInfoMap* GetExtensionInfoMap() const; |
| 101 CookieSettings* GetCookieSettings() const; | 115 CookieSettings* GetCookieSettings() const; |
| 102 | 116 |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 243 void ApplyProfileParamsToContext(ChromeURLRequestContext* context) const; | 257 void ApplyProfileParamsToContext(ChromeURLRequestContext* context) const; |
| 244 | 258 |
| 245 void SetUpJobFactoryDefaults( | 259 void SetUpJobFactoryDefaults( |
| 246 net::URLRequestJobFactoryImpl* job_factory, | 260 net::URLRequestJobFactoryImpl* job_factory, |
| 247 scoped_ptr<net::URLRequestJobFactory::Interceptor> | 261 scoped_ptr<net::URLRequestJobFactory::Interceptor> |
| 248 protocol_handler_interceptor, | 262 protocol_handler_interceptor, |
| 249 net::NetworkDelegate* network_delegate, | 263 net::NetworkDelegate* network_delegate, |
| 250 net::FtpTransactionFactory* ftp_transaction_factory, | 264 net::FtpTransactionFactory* ftp_transaction_factory, |
| 251 net::FtpAuthCache* ftp_auth_cache) const; | 265 net::FtpAuthCache* ftp_auth_cache) const; |
| 252 | 266 |
| 253 // 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 done in LazyInitializeInternal(), implemented by subtypes. Static helper | |
| 256 // functions have been provided to assist in common operations. | |
| 257 void LazyInitialize() const; | |
| 258 | |
| 259 // Called when the profile is destroyed. | 267 // Called when the profile is destroyed. |
| 260 void ShutdownOnUIThread(); | 268 void ShutdownOnUIThread(); |
| 261 | 269 |
| 262 ChromeURLDataManagerBackend* chrome_url_data_manager_backend() const { | 270 ChromeURLDataManagerBackend* chrome_url_data_manager_backend() const { |
| 263 return chrome_url_data_manager_backend_.get(); | 271 return chrome_url_data_manager_backend_.get(); |
| 264 } | 272 } |
| 265 | 273 |
| 266 // A ServerBoundCertService object is created by a derived class of | 274 // A ServerBoundCertService object is created by a derived class of |
| 267 // ProfileIOData, and the derived class calls this method to set the | 275 // ProfileIOData, and the derived class calls this method to set the |
| 268 // server_bound_cert_service_ member and transfers ownership to the base | 276 // server_bound_cert_service_ member and transfers ownership to the base |
| (...skipping 19 matching lines...) Expand all Loading... |
| 288 net::HttpServerProperties* http_server_properties) const; | 296 net::HttpServerProperties* http_server_properties) const; |
| 289 | 297 |
| 290 ChromeURLRequestContext* main_request_context() const { | 298 ChromeURLRequestContext* main_request_context() const { |
| 291 return main_request_context_.get(); | 299 return main_request_context_.get(); |
| 292 } | 300 } |
| 293 | 301 |
| 294 chrome_browser_net::LoadTimeStats* load_time_stats() const { | 302 chrome_browser_net::LoadTimeStats* load_time_stats() const { |
| 295 return load_time_stats_; | 303 return load_time_stats_; |
| 296 } | 304 } |
| 297 | 305 |
| 306 bool initialized() const { |
| 307 return initialized_; |
| 308 } |
| 309 |
| 298 // Destroys the ResourceContext first, to cancel any URLRequests that are | 310 // Destroys the ResourceContext first, to cancel any URLRequests that are |
| 299 // using it still, before we destroy the member variables that those | 311 // using it still, before we destroy the member variables that those |
| 300 // URLRequests may be accessing. | 312 // URLRequests may be accessing. |
| 301 void DestroyResourceContext(); | 313 void DestroyResourceContext(); |
| 302 | 314 |
| 303 // Fills in fields of params using values from main_request_context_ and the | 315 // Fills in fields of params using values from main_request_context_ and the |
| 304 // IOThread associated with profile_params. | 316 // IOThread associated with profile_params. |
| 305 void PopulateNetworkSessionParams( | 317 void PopulateNetworkSessionParams( |
| 306 const ProfileParams* profile_params, | 318 const ProfileParams* profile_params, |
| 307 net::HttpNetworkSession::Params* params) const; | 319 net::HttpNetworkSession::Params* params) const; |
| 308 | 320 |
| 309 void SetCookieSettingsForTesting(CookieSettings* cookie_settings); | 321 void SetCookieSettingsForTesting(CookieSettings* cookie_settings); |
| 310 | 322 |
| 311 void set_signin_names_for_testing(SigninNamesOnIOThread* signin_names); | 323 void set_signin_names_for_testing(SigninNamesOnIOThread* signin_names); |
| 312 | 324 |
| 313 private: | 325 private: |
| 314 class ResourceContext : public content::ResourceContext { | 326 class ResourceContext : public content::ResourceContext { |
| 315 public: | 327 public: |
| 316 explicit ResourceContext(ProfileIOData* io_data); | 328 explicit ResourceContext(ProfileIOData* io_data); |
| 317 virtual ~ResourceContext(); | 329 virtual ~ResourceContext(); |
| 318 | 330 |
| 319 // ResourceContext implementation: | 331 // ResourceContext implementation: |
| 320 virtual net::HostResolver* GetHostResolver() OVERRIDE; | 332 virtual net::HostResolver* GetHostResolver() OVERRIDE; |
| 321 virtual net::URLRequestContext* GetRequestContext() OVERRIDE; | 333 virtual net::URLRequestContext* GetRequestContext() OVERRIDE; |
| 322 | 334 |
| 323 private: | 335 private: |
| 324 friend class ProfileIOData; | 336 friend class ProfileIOData; |
| 325 | 337 |
| 326 void EnsureInitialized(); | |
| 327 | |
| 328 ProfileIOData* const io_data_; | 338 ProfileIOData* const io_data_; |
| 329 | 339 |
| 330 net::HostResolver* host_resolver_; | 340 net::HostResolver* host_resolver_; |
| 331 net::URLRequestContext* request_context_; | 341 net::URLRequestContext* request_context_; |
| 332 }; | 342 }; |
| 333 | 343 |
| 334 typedef std::map<StoragePartitionDescriptor, | 344 typedef std::map<StoragePartitionDescriptor, |
| 335 ChromeURLRequestContext*, | 345 ChromeURLRequestContext*, |
| 336 StoragePartitionDescriptorLess> | 346 StoragePartitionDescriptorLess> |
| 337 URLRequestContextMap; | 347 URLRequestContextMap; |
| 338 | 348 |
| 339 // -------------------------------------------- | 349 // -------------------------------------------- |
| 340 // Virtual interface for subtypes to implement: | 350 // Virtual interface for subtypes to implement: |
| 341 // -------------------------------------------- | 351 // -------------------------------------------- |
| 342 | 352 |
| 343 // Does the actual initialization of the ProfileIOData subtype. Subtypes | 353 // Does the actual initialization of the ProfileIOData subtype. Subtypes |
| 344 // should use the static helper functions above to implement this. | 354 // should use the static helper functions above to implement this. |
| 345 virtual void LazyInitializeInternal(ProfileParams* profile_params) const = 0; | 355 virtual void InitializeInternal( |
| 356 ProfileParams* profile_params, |
| 357 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> |
| 358 blob_protocol_handler, |
| 359 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> |
| 360 file_system_protocol_handler, |
| 361 scoped_ptr<net::URLRequestJobFactory::Interceptor> |
| 362 developer_protocol_handler) const = 0; |
| 346 | 363 |
| 347 // Initializes the RequestContext for extensions. | 364 // Initializes the RequestContext for extensions. |
| 348 virtual void InitializeExtensionsRequestContext( | 365 virtual void InitializeExtensionsRequestContext( |
| 349 ProfileParams* profile_params) const = 0; | 366 ProfileParams* profile_params) const = 0; |
| 350 // Does an on-demand initialization of a RequestContext for the given | 367 // Does an on-demand initialization of a RequestContext for the given |
| 351 // isolated app. | 368 // isolated app. |
| 352 virtual ChromeURLRequestContext* InitializeAppRequestContext( | 369 virtual ChromeURLRequestContext* InitializeAppRequestContext( |
| 353 ChromeURLRequestContext* main_context, | 370 ChromeURLRequestContext* main_context, |
| 354 const StoragePartitionDescriptor& details, | 371 const StoragePartitionDescriptor& details, |
| 355 scoped_ptr<net::URLRequestJobFactory::Interceptor> | 372 scoped_ptr<net::URLRequestJobFactory::Interceptor> |
| 356 protocol_handler_interceptor) const = 0; | 373 protocol_handler_interceptor, |
| 374 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> |
| 375 blob_protocol_handler, |
| 376 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> |
| 377 file_system_protocol_handler, |
| 378 scoped_ptr<net::URLRequestJobFactory::Interceptor> |
| 379 developer_protocol_handler) const = 0; |
| 357 | 380 |
| 358 // Does an on-demand initialization of a media RequestContext for the given | 381 // Does an on-demand initialization of a media RequestContext for the given |
| 359 // isolated app. | 382 // isolated app. |
| 360 virtual ChromeURLRequestContext* InitializeMediaRequestContext( | 383 virtual ChromeURLRequestContext* InitializeMediaRequestContext( |
| 361 ChromeURLRequestContext* original_context, | 384 ChromeURLRequestContext* original_context, |
| 362 const StoragePartitionDescriptor& details) const = 0; | 385 const StoragePartitionDescriptor& details) const = 0; |
| 363 | 386 |
| 364 // These functions are used to transfer ownership of the lazily initialized | 387 // These functions are used to transfer ownership of the lazily initialized |
| 365 // context from ProfileIOData to the URLRequestContextGetter. | 388 // context from ProfileIOData to the URLRequestContextGetter. |
| 366 virtual ChromeURLRequestContext* | 389 virtual ChromeURLRequestContext* |
| 367 AcquireMediaRequestContext() const = 0; | 390 AcquireMediaRequestContext() const = 0; |
| 368 virtual ChromeURLRequestContext* | 391 virtual ChromeURLRequestContext* |
| 369 AcquireIsolatedAppRequestContext( | 392 AcquireIsolatedAppRequestContext( |
| 370 ChromeURLRequestContext* main_context, | 393 ChromeURLRequestContext* main_context, |
| 371 const StoragePartitionDescriptor& partition_descriptor, | 394 const StoragePartitionDescriptor& partition_descriptor, |
| 372 scoped_ptr<net::URLRequestJobFactory::Interceptor> | 395 scoped_ptr<net::URLRequestJobFactory::Interceptor> |
| 373 protocol_handler_interceptor) const = 0; | 396 protocol_handler_interceptor, |
| 397 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> |
| 398 blob_protocol_handler, |
| 399 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> |
| 400 file_system_protocol_handler, |
| 401 scoped_ptr<net::URLRequestJobFactory::Interceptor> |
| 402 developer_protocol_handler) const = 0; |
| 374 virtual ChromeURLRequestContext* | 403 virtual ChromeURLRequestContext* |
| 375 AcquireIsolatedMediaRequestContext( | 404 AcquireIsolatedMediaRequestContext( |
| 376 ChromeURLRequestContext* app_context, | 405 ChromeURLRequestContext* app_context, |
| 377 const StoragePartitionDescriptor& partition_descriptor) const = 0; | 406 const StoragePartitionDescriptor& partition_descriptor) const = 0; |
| 378 | 407 |
| 379 // Returns the LoadTimeStats object to be used for this profile. | 408 // Returns the LoadTimeStats object to be used for this profile. |
| 380 virtual chrome_browser_net::LoadTimeStats* GetLoadTimeStats( | 409 virtual chrome_browser_net::LoadTimeStats* GetLoadTimeStats( |
| 381 IOThread::Globals* io_thread_globals) const = 0; | 410 IOThread::Globals* io_thread_globals) const = 0; |
| 382 | 411 |
| 383 // The order *DOES* matter for the majority of these member variables, so | 412 // The order *DOES* matter for the majority of these member variables, so |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 471 | 500 |
| 472 // TODO(jhawkins): Remove once crbug.com/102004 is fixed. | 501 // TODO(jhawkins): Remove once crbug.com/102004 is fixed. |
| 473 bool initialized_on_UI_thread_; | 502 bool initialized_on_UI_thread_; |
| 474 | 503 |
| 475 bool is_incognito_; | 504 bool is_incognito_; |
| 476 | 505 |
| 477 DISALLOW_COPY_AND_ASSIGN(ProfileIOData); | 506 DISALLOW_COPY_AND_ASSIGN(ProfileIOData); |
| 478 }; | 507 }; |
| 479 | 508 |
| 480 #endif // CHROME_BROWSER_PROFILES_PROFILE_IO_DATA_H_ | 509 #endif // CHROME_BROWSER_PROFILES_PROFILE_IO_DATA_H_ |
| OLD | NEW |