| 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 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 75 | 75 |
| 76 // These should only be called at most once each. Ownership is reversed when | 76 // These should only be called at most once each. Ownership is reversed when |
| 77 // they get called, from ProfileIOData owning ChromeURLRequestContext to vice | 77 // they get called, from ProfileIOData owning ChromeURLRequestContext to vice |
| 78 // versa. | 78 // versa. |
| 79 ChromeURLRequestContext* GetMainRequestContext() const; | 79 ChromeURLRequestContext* GetMainRequestContext() const; |
| 80 ChromeURLRequestContext* GetMediaRequestContext() const; | 80 ChromeURLRequestContext* GetMediaRequestContext() const; |
| 81 ChromeURLRequestContext* GetExtensionsRequestContext() const; | 81 ChromeURLRequestContext* GetExtensionsRequestContext() const; |
| 82 ChromeURLRequestContext* GetIsolatedAppRequestContext( | 82 ChromeURLRequestContext* GetIsolatedAppRequestContext( |
| 83 ChromeURLRequestContext* main_context, | 83 ChromeURLRequestContext* main_context, |
| 84 const std::string& app_id) const; | 84 const std::string& app_id) const; |
| 85 ChromeURLRequestContext* GetIsolatedMediaRequestContext( |
| 86 ChromeURLRequestContext* media_context, |
| 87 const std::string& app_id) const; |
| 85 | 88 |
| 86 // These are useful when the Chrome layer is called from the content layer | 89 // These are useful when the Chrome layer is called from the content layer |
| 87 // with a content::ResourceContext, and they want access to Chrome data for | 90 // with a content::ResourceContext, and they want access to Chrome data for |
| 88 // that profile. | 91 // that profile. |
| 89 ExtensionInfoMap* GetExtensionInfoMap() const; | 92 ExtensionInfoMap* GetExtensionInfoMap() const; |
| 90 CookieSettings* GetCookieSettings() const; | 93 CookieSettings* GetCookieSettings() const; |
| 91 | 94 |
| 92 #if defined(ENABLE_NOTIFICATIONS) | 95 #if defined(ENABLE_NOTIFICATIONS) |
| 93 DesktopNotificationService* GetNotificationService() const; | 96 DesktopNotificationService* GetNotificationService() const; |
| 94 #endif | 97 #endif |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 128 // Initialize the member needed to track the metrics enabled state. This is | 131 // Initialize the member needed to track the metrics enabled state. This is |
| 129 // only to be called on the UI thread. | 132 // only to be called on the UI thread. |
| 130 void InitializeMetricsEnabledStateOnUIThread(); | 133 void InitializeMetricsEnabledStateOnUIThread(); |
| 131 | 134 |
| 132 // Returns whether or not metrics reporting is enabled in the browser instance | 135 // Returns whether or not metrics reporting is enabled in the browser instance |
| 133 // on which this profile resides. This is safe for use from the IO thread, and | 136 // on which this profile resides. This is safe for use from the IO thread, and |
| 134 // should only be called from there. | 137 // should only be called from there. |
| 135 bool GetMetricsEnabledStateOnIOThread() const; | 138 bool GetMetricsEnabledStateOnIOThread() const; |
| 136 | 139 |
| 137 protected: | 140 protected: |
| 141 // A URLRequestContext for media that owns its HTTP factory, to ensure |
| 142 // it is deleted. |
| 143 class MediaRequestContext : public ChromeURLRequestContext { |
| 144 public: |
| 145 explicit MediaRequestContext( |
| 146 chrome_browser_net::LoadTimeStats* load_time_stats); |
| 147 |
| 148 void SetHttpTransactionFactory(net::HttpTransactionFactory* http_factory); |
| 149 |
| 150 private: |
| 151 virtual ~MediaRequestContext(); |
| 152 |
| 153 scoped_ptr<net::HttpTransactionFactory> http_factory_; |
| 154 }; |
| 155 |
| 156 // A URLRequestContext for apps that owns its cookie store and HTTP factory, |
| 157 // to ensure they are deleted. |
| 138 class AppRequestContext : public ChromeURLRequestContext { | 158 class AppRequestContext : public ChromeURLRequestContext { |
| 139 public: | 159 public: |
| 140 explicit AppRequestContext( | 160 explicit AppRequestContext( |
| 141 chrome_browser_net::LoadTimeStats* load_time_stats); | 161 chrome_browser_net::LoadTimeStats* load_time_stats); |
| 142 | 162 |
| 143 void SetCookieStore(net::CookieStore* cookie_store); | 163 void SetCookieStore(net::CookieStore* cookie_store); |
| 144 void SetHttpTransactionFactory(net::HttpTransactionFactory* http_factory); | 164 void SetHttpTransactionFactory(net::HttpTransactionFactory* http_factory); |
| 145 | 165 |
| 146 private: | 166 private: |
| 147 virtual ~AppRequestContext(); | 167 virtual ~AppRequestContext(); |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 265 | 285 |
| 266 void EnsureInitialized(); | 286 void EnsureInitialized(); |
| 267 | 287 |
| 268 ProfileIOData* const io_data_; | 288 ProfileIOData* const io_data_; |
| 269 | 289 |
| 270 net::HostResolver* host_resolver_; | 290 net::HostResolver* host_resolver_; |
| 271 net::URLRequestContext* request_context_; | 291 net::URLRequestContext* request_context_; |
| 272 }; | 292 }; |
| 273 | 293 |
| 274 typedef base::hash_map<std::string, ChromeURLRequestContext*> | 294 typedef base::hash_map<std::string, ChromeURLRequestContext*> |
| 275 AppRequestContextMap; | 295 URLRequestContextMap; |
| 276 | 296 |
| 277 // -------------------------------------------- | 297 // -------------------------------------------- |
| 278 // Virtual interface for subtypes to implement: | 298 // Virtual interface for subtypes to implement: |
| 279 // -------------------------------------------- | 299 // -------------------------------------------- |
| 280 | 300 |
| 281 // Does the actual initialization of the ProfileIOData subtype. Subtypes | 301 // Does the actual initialization of the ProfileIOData subtype. Subtypes |
| 282 // should use the static helper functions above to implement this. | 302 // should use the static helper functions above to implement this. |
| 283 virtual void LazyInitializeInternal(ProfileParams* profile_params) const = 0; | 303 virtual void LazyInitializeInternal(ProfileParams* profile_params) const = 0; |
| 284 | 304 |
| 285 // Does an on-demand initialization of a RequestContext for the given | 305 // Does an on-demand initialization of a RequestContext for the given |
| 286 // isolated app. | 306 // isolated app. |
| 287 virtual ChromeURLRequestContext* InitializeAppRequestContext( | 307 virtual ChromeURLRequestContext* InitializeAppRequestContext( |
| 288 ChromeURLRequestContext* main_context, | 308 ChromeURLRequestContext* main_context, |
| 289 const std::string& app_id) const = 0; | 309 const std::string& app_id) const = 0; |
| 290 | 310 |
| 311 // Does an on-demand initialization of a media RequestContext for the given |
| 312 // isolated app. |
| 313 virtual ChromeURLRequestContext* InitializeMediaRequestContext( |
| 314 ChromeURLRequestContext* original_context, |
| 315 const std::string& app_id) const = 0; |
| 316 |
| 291 // These functions are used to transfer ownership of the lazily initialized | 317 // These functions are used to transfer ownership of the lazily initialized |
| 292 // context from ProfileIOData to the URLRequestContextGetter. | 318 // context from ProfileIOData to the URLRequestContextGetter. |
| 293 virtual ChromeURLRequestContext* | 319 virtual ChromeURLRequestContext* |
| 294 AcquireMediaRequestContext() const = 0; | 320 AcquireMediaRequestContext() const = 0; |
| 295 virtual ChromeURLRequestContext* | 321 virtual ChromeURLRequestContext* |
| 296 AcquireIsolatedAppRequestContext( | 322 AcquireIsolatedAppRequestContext( |
| 297 ChromeURLRequestContext* main_context, | 323 ChromeURLRequestContext* main_context, |
| 298 const std::string& app_id) const = 0; | 324 const std::string& app_id) const = 0; |
| 325 virtual ChromeURLRequestContext* |
| 326 AcquireIsolatedMediaRequestContext( |
| 327 ChromeURLRequestContext* app_context, |
| 328 const std::string& app_id) const = 0; |
| 299 | 329 |
| 300 // Returns the LoadTimeStats object to be used for this profile. | 330 // Returns the LoadTimeStats object to be used for this profile. |
| 301 virtual chrome_browser_net::LoadTimeStats* GetLoadTimeStats( | 331 virtual chrome_browser_net::LoadTimeStats* GetLoadTimeStats( |
| 302 IOThread::Globals* io_thread_globals) const = 0; | 332 IOThread::Globals* io_thread_globals) const = 0; |
| 303 | 333 |
| 304 // The order *DOES* matter for the majority of these member variables, so | 334 // The order *DOES* matter for the majority of these member variables, so |
| 305 // don't move them around unless you know what you're doing! | 335 // don't move them around unless you know what you're doing! |
| 306 // General rules: | 336 // General rules: |
| 307 // * ResourceContext references the URLRequestContexts, so | 337 // * ResourceContext references the URLRequestContexts, so |
| 308 // URLRequestContexts must outlive ResourceContext, hence ResourceContext | 338 // URLRequestContexts must outlive ResourceContext, hence ResourceContext |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 356 mutable DesktopNotificationService* notification_service_; | 386 mutable DesktopNotificationService* notification_service_; |
| 357 #endif | 387 #endif |
| 358 | 388 |
| 359 mutable scoped_ptr<TransportSecurityPersister> | 389 mutable scoped_ptr<TransportSecurityPersister> |
| 360 transport_security_persister_; | 390 transport_security_persister_; |
| 361 | 391 |
| 362 // These are only valid in between LazyInitialize() and their accessor being | 392 // These are only valid in between LazyInitialize() and their accessor being |
| 363 // called. | 393 // called. |
| 364 mutable scoped_ptr<ChromeURLRequestContext> main_request_context_; | 394 mutable scoped_ptr<ChromeURLRequestContext> main_request_context_; |
| 365 mutable scoped_ptr<ChromeURLRequestContext> extensions_request_context_; | 395 mutable scoped_ptr<ChromeURLRequestContext> extensions_request_context_; |
| 366 // One AppRequestContext per isolated app. | 396 // One URLRequestContext per isolated app for main and media requests. |
| 367 mutable AppRequestContextMap app_request_context_map_; | 397 mutable URLRequestContextMap app_request_context_map_; |
| 398 mutable URLRequestContextMap isolated_media_request_context_map_; |
| 368 | 399 |
| 369 mutable scoped_ptr<ResourceContext> resource_context_; | 400 mutable scoped_ptr<ResourceContext> resource_context_; |
| 370 | 401 |
| 371 mutable scoped_refptr<ExtensionInfoMap> extension_info_map_; | 402 mutable scoped_refptr<ExtensionInfoMap> extension_info_map_; |
| 372 mutable scoped_refptr<CookieSettings> cookie_settings_; | 403 mutable scoped_refptr<CookieSettings> cookie_settings_; |
| 373 | 404 |
| 374 mutable scoped_ptr<chrome_browser_net::ResourcePrefetchPredictorObserver> | 405 mutable scoped_ptr<chrome_browser_net::ResourcePrefetchPredictorObserver> |
| 375 resource_prefetch_predictor_observer_; | 406 resource_prefetch_predictor_observer_; |
| 376 | 407 |
| 377 mutable chrome_browser_net::LoadTimeStats* load_time_stats_; | 408 mutable chrome_browser_net::LoadTimeStats* load_time_stats_; |
| 378 | 409 |
| 379 // TODO(jhawkins): Remove once crbug.com/102004 is fixed. | 410 // TODO(jhawkins): Remove once crbug.com/102004 is fixed. |
| 380 bool initialized_on_UI_thread_; | 411 bool initialized_on_UI_thread_; |
| 381 | 412 |
| 382 bool is_incognito_; | 413 bool is_incognito_; |
| 383 | 414 |
| 384 DISALLOW_COPY_AND_ASSIGN(ProfileIOData); | 415 DISALLOW_COPY_AND_ASSIGN(ProfileIOData); |
| 385 }; | 416 }; |
| 386 | 417 |
| 387 #endif // CHROME_BROWSER_PROFILES_PROFILE_IO_DATA_H_ | 418 #endif // CHROME_BROWSER_PROFILES_PROFILE_IO_DATA_H_ |
| OLD | NEW |