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 <map> | 8 #include <map> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 10 matching lines...) Expand all Loading... |
21 #include "chrome/browser/io_thread.h" | 21 #include "chrome/browser/io_thread.h" |
22 #include "chrome/browser/profiles/profile.h" | 22 #include "chrome/browser/profiles/profile.h" |
23 #include "chrome/browser/profiles/storage_partition_descriptor.h" | 23 #include "chrome/browser/profiles/storage_partition_descriptor.h" |
24 #include "components/content_settings/core/common/content_settings_types.h" | 24 #include "components/content_settings/core/common/content_settings_types.h" |
25 #include "content/public/browser/content_browser_client.h" | 25 #include "content/public/browser/content_browser_client.h" |
26 #include "content/public/browser/resource_context.h" | 26 #include "content/public/browser/resource_context.h" |
27 #include "net/cookies/cookie_monster.h" | 27 #include "net/cookies/cookie_monster.h" |
28 #include "net/http/http_cache.h" | 28 #include "net/http/http_cache.h" |
29 #include "net/http/http_network_session.h" | 29 #include "net/http/http_network_session.h" |
30 #include "net/url_request/url_request_context.h" | 30 #include "net/url_request/url_request_context.h" |
| 31 #include "net/url_request/url_request_context_builder.h" |
31 #include "net/url_request/url_request_interceptor.h" | 32 #include "net/url_request/url_request_interceptor.h" |
32 #include "net/url_request/url_request_job_factory.h" | 33 #include "net/url_request/url_request_job_factory.h" |
33 | 34 |
34 class ChromeHttpUserAgentSettings; | 35 class ChromeHttpUserAgentSettings; |
35 class ChromeNetworkDelegate; | 36 class ChromeNetworkDelegate; |
36 class ChromeURLRequestContextGetter; | 37 class ChromeURLRequestContextGetter; |
37 class DevToolsNetworkController; | 38 class DevToolsNetworkController; |
38 class HostContentSettingsMap; | 39 class HostContentSettingsMap; |
39 class MediaDeviceIDSalt; | 40 class MediaDeviceIDSalt; |
40 class ProtocolHandlerRegistry; | 41 class ProtocolHandlerRegistry; |
(...skipping 22 matching lines...) Expand all Loading... |
63 class CookieStore; | 64 class CookieStore; |
64 class FraudulentCertificateReporter; | 65 class FraudulentCertificateReporter; |
65 class FtpTransactionFactory; | 66 class FtpTransactionFactory; |
66 class HttpServerProperties; | 67 class HttpServerProperties; |
67 class HttpTransactionFactory; | 68 class HttpTransactionFactory; |
68 class ProxyConfigService; | 69 class ProxyConfigService; |
69 class ProxyService; | 70 class ProxyService; |
70 class SSLConfigService; | 71 class SSLConfigService; |
71 class TransportSecurityPersister; | 72 class TransportSecurityPersister; |
72 class TransportSecurityState; | 73 class TransportSecurityState; |
| 74 class URLRequestContextBuilder; |
73 class URLRequestJobFactoryImpl; | 75 class URLRequestJobFactoryImpl; |
74 } // namespace net | 76 } // namespace net |
75 | 77 |
76 namespace policy { | 78 namespace policy { |
77 class PolicyCertVerifier; | 79 class PolicyCertVerifier; |
78 class PolicyHeaderIOHelper; | 80 class PolicyHeaderIOHelper; |
79 class URLBlacklistManager; | 81 class URLBlacklistManager; |
80 } // namespace policy | 82 } // namespace policy |
81 | 83 |
82 // Conceptually speaking, the ProfileIOData represents data that lives on the IO | 84 // Conceptually speaking, the ProfileIOData represents data that lives on the IO |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
167 IntegerPrefMember* network_prediction_options() const { | 169 IntegerPrefMember* network_prediction_options() const { |
168 return &network_prediction_options_; | 170 return &network_prediction_options_; |
169 } | 171 } |
170 | 172 |
171 content::ResourceContext::SaltCallback GetMediaDeviceIDSalt() const; | 173 content::ResourceContext::SaltCallback GetMediaDeviceIDSalt() const; |
172 | 174 |
173 DevToolsNetworkController* network_controller() const { | 175 DevToolsNetworkController* network_controller() const { |
174 return network_controller_.get(); | 176 return network_controller_.get(); |
175 } | 177 } |
176 | 178 |
177 net::TransportSecurityState* transport_security_state() const { | 179 net::TransportSecurityState* transport_security_state() const; |
178 return transport_security_state_.get(); | |
179 } | |
180 | 180 |
181 #if defined(OS_CHROMEOS) | 181 #if defined(OS_CHROMEOS) |
182 std::string username_hash() const { | 182 std::string username_hash() const { |
183 return username_hash_; | 183 return username_hash_; |
184 } | 184 } |
185 | 185 |
186 bool use_system_key_slot() const { return use_system_key_slot_; } | 186 bool use_system_key_slot() const { return use_system_key_slot_; } |
187 #endif | 187 #endif |
188 | 188 |
189 Profile::ProfileType profile_type() const { | 189 Profile::ProfileType profile_type() const { |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
311 std::string username_hash; | 311 std::string username_hash; |
312 bool use_system_key_slot; | 312 bool use_system_key_slot; |
313 #endif | 313 #endif |
314 | 314 |
315 // The profile this struct was populated from. It's passed as a void* to | 315 // The profile this struct was populated from. It's passed as a void* to |
316 // ensure it's not accidently used on the IO thread. Before using it on the | 316 // ensure it's not accidently used on the IO thread. Before using it on the |
317 // UI thread, call ProfileManager::IsValidProfile to ensure it's alive. | 317 // UI thread, call ProfileManager::IsValidProfile to ensure it's alive. |
318 void* profile; | 318 void* profile; |
319 }; | 319 }; |
320 | 320 |
| 321 // Declared here to allow access to ProfileParams. |
| 322 class HttpTransactionFactoryDelegate |
| 323 : public net::HttpTransactionFactoryFactory { |
| 324 public: |
| 325 HttpTransactionFactoryDelegate(const ProfileIOData* owner, |
| 326 const ProfileParams* profile_params, |
| 327 net::HttpCache::BackendFactory* main_backend) |
| 328 : owner_(owner), |
| 329 profile_params_(profile_params), |
| 330 main_backend_(main_backend) {} |
| 331 |
| 332 net::HttpTransactionFactory* Create( |
| 333 net::URLRequestContext* context) override; |
| 334 |
| 335 private: |
| 336 const ProfileIOData* owner_; |
| 337 const ProfileParams* profile_params_; |
| 338 net::HttpCache::BackendFactory* main_backend_; |
| 339 }; |
| 340 |
| 341 // Declared here to allow access to protected functions. |
| 342 class CertVerifierDelegateMainContext : public net::CertVerifierDelegate { |
| 343 public: |
| 344 CertVerifierDelegateMainContext(const ProfileIOData* owner) |
| 345 : owner_(owner) {} |
| 346 |
| 347 net::CertVerifier* Get(net::URLRequestContext* context) override; |
| 348 |
| 349 private: |
| 350 const ProfileIOData* owner_; |
| 351 }; |
| 352 |
| 353 net::CertVerifier* GetCertVerifierForMainContext( |
| 354 net::URLRequestContext* context) const; |
| 355 |
321 explicit ProfileIOData(Profile::ProfileType profile_type); | 356 explicit ProfileIOData(Profile::ProfileType profile_type); |
322 | 357 |
323 static std::string GetSSLSessionCacheShard(); | 358 static std::string GetSSLSessionCacheShard(); |
324 | 359 |
325 void InitializeOnUIThread(Profile* profile); | 360 void InitializeOnUIThread(Profile* profile); |
326 void ApplyProfileParamsToContext(net::URLRequestContext* context) const; | 361 void ApplyProfileParamsToContext(net::URLRequestContext* context) const; |
| 362 void ApplyProfileParamsToContext( |
| 363 net::URLRequestContextBuilder* context_builder) const; |
327 | 364 |
328 scoped_ptr<net::URLRequestJobFactory> SetUpJobFactoryDefaults( | 365 scoped_ptr<net::URLRequestJobFactory> SetUpJobFactoryDefaults( |
329 scoped_ptr<net::URLRequestJobFactoryImpl> job_factory, | 366 scoped_ptr<net::URLRequestJobFactoryImpl> job_factory, |
330 content::URLRequestInterceptorScopedVector request_interceptors, | 367 content::URLRequestInterceptorScopedVector request_interceptors, |
331 scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory> | 368 scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory> |
332 protocol_handler_interceptor, | 369 protocol_handler_interceptor, |
333 net::NetworkDelegate* network_delegate, | 370 net::NetworkDelegate* network_delegate, |
334 net::FtpTransactionFactory* ftp_transaction_factory) const; | 371 net::FtpTransactionFactory* ftp_transaction_factory) const; |
335 | 372 |
336 // Called when the Profile is destroyed. |context_getters| must include all | 373 // Called when the Profile is destroyed. |context_getters| must include all |
337 // URLRequestContextGetters that refer to the ProfileIOData's | 374 // URLRequestContextGetters that refer to the ProfileIOData's |
338 // URLRequestContexts. Triggers destruction of the ProfileIOData and shuts | 375 // URLRequestContexts. Triggers destruction of the ProfileIOData and shuts |
339 // down |context_getters| safely on the IO thread. | 376 // down |context_getters| safely on the IO thread. |
340 // TODO(mmenke): Passing all those URLRequestContextGetters around like this | 377 // TODO(mmenke): Passing all those URLRequestContextGetters around like this |
341 // is really silly. Can we do something cleaner? | 378 // is really silly. Can we do something cleaner? |
342 void ShutdownOnUIThread( | 379 void ShutdownOnUIThread( |
343 scoped_ptr<ChromeURLRequestContextGetterVector> context_getters); | 380 scoped_ptr<ChromeURLRequestContextGetterVector> context_getters); |
344 | 381 |
345 // A ChannelIDService object is created by a derived class of | |
346 // ProfileIOData, and the derived class calls this method to set the | |
347 // channel_id_service_ member and transfers ownership to the base | |
348 // class. | |
349 void set_channel_id_service( | |
350 net::ChannelIDService* channel_id_service) const; | |
351 | |
352 void set_data_reduction_proxy_io_data( | 382 void set_data_reduction_proxy_io_data( |
353 scoped_ptr<data_reduction_proxy::DataReductionProxyIOData> | 383 scoped_ptr<data_reduction_proxy::DataReductionProxyIOData> |
354 data_reduction_proxy_io_data) const; | 384 data_reduction_proxy_io_data) const; |
355 | 385 |
356 net::FraudulentCertificateReporter* fraudulent_certificate_reporter() const { | 386 net::FraudulentCertificateReporter* fraudulent_certificate_reporter() const; |
357 return fraudulent_certificate_reporter_.get(); | |
358 } | |
359 | 387 |
360 net::ProxyService* proxy_service() const { | 388 net::ProxyService* proxy_service() const { |
361 return proxy_service_.get(); | 389 return proxy_service_.get(); |
362 } | 390 } |
363 | 391 |
364 base::WeakPtr<net::HttpServerProperties> http_server_properties() const; | 392 base::WeakPtr<net::HttpServerProperties> http_server_properties() const; |
365 | 393 |
366 void set_http_server_properties( | 394 void set_http_server_properties( |
367 scoped_ptr<net::HttpServerProperties> http_server_properties) const; | 395 scoped_ptr<net::HttpServerProperties> http_server_properties) const; |
368 | 396 |
369 net::URLRequestContext* main_request_context() const { | 397 net::URLRequestContext* main_request_context() const { |
370 return main_request_context_.get(); | 398 return main_request_context_.get(); |
371 } | 399 } |
372 | 400 |
373 bool initialized() const { | 401 bool initialized() const { |
374 return initialized_; | 402 return initialized_; |
375 } | 403 } |
376 | 404 |
377 // Destroys the ResourceContext first, to cancel any URLRequests that are | 405 // Destroys the ResourceContext first, to cancel any URLRequests that are |
378 // using it still, before we destroy the member variables that those | 406 // using it still, before we destroy the member variables that those |
379 // URLRequests may be accessing. | 407 // URLRequests may be accessing. |
380 void DestroyResourceContext(); | 408 void DestroyResourceContext(); |
381 | 409 |
382 // Creates network session and main network transaction factory. | 410 // Creates network session and main network transaction factory. |
383 scoped_ptr<net::HttpCache> CreateMainHttpFactory( | 411 scoped_ptr<net::HttpCache> CreateMainHttpFactory( |
384 const ProfileParams* profile_params, | 412 const ProfileParams* profile_params, |
385 net::HttpCache::BackendFactory* main_backend) const; | 413 net::HttpCache::BackendFactory* main_backend, |
| 414 net::URLRequestContext* context) const; |
386 | 415 |
387 // Creates network transaction factory. | 416 // Creates network transaction factory. |
388 scoped_ptr<net::HttpCache> CreateHttpFactory( | 417 scoped_ptr<net::HttpCache> CreateHttpFactory( |
389 net::HttpNetworkSession* shared_session, | 418 net::HttpNetworkSession* shared_session, |
390 net::HttpCache::BackendFactory* backend) const; | 419 net::HttpCache::BackendFactory* backend) const; |
391 | 420 |
392 void SetCookieSettingsForTesting( | 421 void SetCookieSettingsForTesting( |
393 content_settings::CookieSettings* cookie_settings); | 422 content_settings::CookieSettings* cookie_settings); |
394 | 423 |
395 private: | 424 private: |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
427 // -------------------------------------------- | 456 // -------------------------------------------- |
428 // Virtual interface for subtypes to implement: | 457 // Virtual interface for subtypes to implement: |
429 // -------------------------------------------- | 458 // -------------------------------------------- |
430 | 459 |
431 // Does the actual initialization of the ProfileIOData subtype. Subtypes | 460 // Does the actual initialization of the ProfileIOData subtype. Subtypes |
432 // should use the static helper functions above to implement this. | 461 // should use the static helper functions above to implement this. |
433 virtual void InitializeInternal( | 462 virtual void InitializeInternal( |
434 scoped_ptr<ChromeNetworkDelegate> chrome_network_delegate, | 463 scoped_ptr<ChromeNetworkDelegate> chrome_network_delegate, |
435 ProfileParams* profile_params, | 464 ProfileParams* profile_params, |
436 content::ProtocolHandlerMap* protocol_handlers, | 465 content::ProtocolHandlerMap* protocol_handlers, |
437 content::URLRequestInterceptorScopedVector | 466 content::URLRequestInterceptorScopedVector request_interceptors, |
438 request_interceptors) const = 0; | 467 net::URLRequestContextBuilder* context_builder) const = 0; |
439 | 468 |
440 // Initializes the RequestContext for extensions. | 469 // Initializes the RequestContext for extensions. |
441 virtual void InitializeExtensionsRequestContext( | 470 virtual void InitializeExtensionsRequestContext( |
442 ProfileParams* profile_params) const = 0; | 471 ProfileParams* profile_params) const = 0; |
443 // Does an on-demand initialization of a RequestContext for the given | 472 // Does an on-demand initialization of a RequestContext for the given |
444 // isolated app. | 473 // isolated app. |
445 virtual net::URLRequestContext* InitializeAppRequestContext( | 474 virtual net::URLRequestContext* InitializeAppRequestContext( |
446 net::URLRequestContext* main_context, | 475 net::URLRequestContext* main_context, |
447 const StoragePartitionDescriptor& details, | 476 const StoragePartitionDescriptor& details, |
448 scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory> | 477 scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory> |
(...skipping 18 matching lines...) Expand all Loading... |
467 scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory> | 496 scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory> |
468 protocol_handler_interceptor, | 497 protocol_handler_interceptor, |
469 content::ProtocolHandlerMap* protocol_handlers, | 498 content::ProtocolHandlerMap* protocol_handlers, |
470 content::URLRequestInterceptorScopedVector | 499 content::URLRequestInterceptorScopedVector |
471 request_interceptors) const = 0; | 500 request_interceptors) const = 0; |
472 virtual net::URLRequestContext* | 501 virtual net::URLRequestContext* |
473 AcquireIsolatedMediaRequestContext( | 502 AcquireIsolatedMediaRequestContext( |
474 net::URLRequestContext* app_context, | 503 net::URLRequestContext* app_context, |
475 const StoragePartitionDescriptor& partition_descriptor) const = 0; | 504 const StoragePartitionDescriptor& partition_descriptor) const = 0; |
476 | 505 |
| 506 virtual void InitPostContextSetup( |
| 507 ChromeNetworkDelegate* chrome_network_delegate) const {} |
| 508 |
477 // The order *DOES* matter for the majority of these member variables, so | 509 // The order *DOES* matter for the majority of these member variables, so |
478 // don't move them around unless you know what you're doing! | 510 // don't move them around unless you know what you're doing! |
479 // General rules: | 511 // General rules: |
480 // * ResourceContext references the URLRequestContexts, so | 512 // * ResourceContext references the URLRequestContexts, so |
481 // URLRequestContexts must outlive ResourceContext, hence ResourceContext | 513 // URLRequestContexts must outlive ResourceContext, hence ResourceContext |
482 // should be destroyed first. | 514 // should be destroyed first. |
483 // * URLRequestContexts reference a whole bunch of members, so | 515 // * URLRequestContexts reference a whole bunch of members, so |
484 // URLRequestContext needs to be destroyed before them. | 516 // URLRequestContext needs to be destroyed before them. |
485 // * Therefore, ResourceContext should be listed last, and then the | 517 // * Therefore, ResourceContext should be listed last, and then the |
486 // URLRequestContexts, and then the URLRequestContext members. | 518 // URLRequestContexts, and then the URLRequestContext members. |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
528 #if defined(ENABLE_CONFIGURATION_POLICY) | 560 #if defined(ENABLE_CONFIGURATION_POLICY) |
529 // Pointed to by NetworkDelegate. | 561 // Pointed to by NetworkDelegate. |
530 mutable scoped_ptr<policy::URLBlacklistManager> url_blacklist_manager_; | 562 mutable scoped_ptr<policy::URLBlacklistManager> url_blacklist_manager_; |
531 mutable scoped_ptr<policy::PolicyHeaderIOHelper> policy_header_helper_; | 563 mutable scoped_ptr<policy::PolicyHeaderIOHelper> policy_header_helper_; |
532 #endif | 564 #endif |
533 | 565 |
534 // Pointed to by URLRequestContext. | 566 // Pointed to by URLRequestContext. |
535 #if defined(ENABLE_EXTENSIONS) | 567 #if defined(ENABLE_EXTENSIONS) |
536 mutable scoped_refptr<extensions::InfoMap> extension_info_map_; | 568 mutable scoped_refptr<extensions::InfoMap> extension_info_map_; |
537 #endif | 569 #endif |
538 mutable scoped_ptr<net::ChannelIDService> channel_id_service_; | |
539 | 570 |
540 mutable scoped_ptr<data_reduction_proxy::DataReductionProxyIOData> | 571 mutable scoped_ptr<data_reduction_proxy::DataReductionProxyIOData> |
541 data_reduction_proxy_io_data_; | 572 data_reduction_proxy_io_data_; |
542 | 573 |
543 mutable scoped_ptr<net::FraudulentCertificateReporter> | 574 mutable scoped_ptr<net::FraudulentCertificateReporter> |
544 fraudulent_certificate_reporter_; | 575 fraudulent_certificate_reporter_; |
545 mutable scoped_ptr<net::ProxyService> proxy_service_; | 576 mutable scoped_ptr<net::ProxyService> proxy_service_; |
546 mutable scoped_ptr<net::TransportSecurityState> transport_security_state_; | |
547 mutable scoped_ptr<net::HttpServerProperties> | 577 mutable scoped_ptr<net::HttpServerProperties> |
548 http_server_properties_; | 578 http_server_properties_; |
549 #if defined(OS_CHROMEOS) | 579 #if defined(OS_CHROMEOS) |
550 // Set to |cert_verifier_| if it references a PolicyCertVerifier. In that | 580 // Set to |cert_verifier_| if it references a PolicyCertVerifier. In that |
551 // case, the verifier is owned by |cert_verifier_|. Otherwise, set to NULL. | 581 // case, the verifier is owned by |cert_verifier_|. Otherwise, set to NULL. |
552 mutable policy::PolicyCertVerifier* policy_cert_verifier_; | 582 mutable policy::PolicyCertVerifier* policy_cert_verifier_; |
553 mutable scoped_ptr<net::CertVerifier> cert_verifier_; | 583 mutable scoped_ptr<net::CertVerifier> cert_verifier_; |
554 mutable std::string username_hash_; | 584 mutable std::string username_hash_; |
555 mutable bool use_system_key_slot_; | 585 mutable bool use_system_key_slot_; |
556 #endif | 586 #endif |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
593 | 623 |
594 // TODO(jhawkins): Remove once crbug.com/102004 is fixed. | 624 // TODO(jhawkins): Remove once crbug.com/102004 is fixed. |
595 bool initialized_on_UI_thread_; | 625 bool initialized_on_UI_thread_; |
596 | 626 |
597 const Profile::ProfileType profile_type_; | 627 const Profile::ProfileType profile_type_; |
598 | 628 |
599 DISALLOW_COPY_AND_ASSIGN(ProfileIOData); | 629 DISALLOW_COPY_AND_ASSIGN(ProfileIOData); |
600 }; | 630 }; |
601 | 631 |
602 #endif // CHROME_BROWSER_PROFILES_PROFILE_IO_DATA_H_ | 632 #endif // CHROME_BROWSER_PROFILES_PROFILE_IO_DATA_H_ |
OLD | NEW |