| 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 #include "chrome/browser/profiles/profile_impl_io_data.h" | 5 #include "chrome/browser/profiles/profile_impl_io_data.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <set> | 8 #include <set> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 462 ProfileParams* profile_params, | 462 ProfileParams* profile_params, |
| 463 content::ProtocolHandlerMap* protocol_handlers, | 463 content::ProtocolHandlerMap* protocol_handlers, |
| 464 content::URLRequestInterceptorScopedVector request_interceptors) const { | 464 content::URLRequestInterceptorScopedVector request_interceptors) const { |
| 465 net::URLRequestContext* main_context = main_request_context(); | 465 net::URLRequestContext* main_context = main_request_context(); |
| 466 net::URLRequestContextStorage* main_context_storage = | 466 net::URLRequestContextStorage* main_context_storage = |
| 467 main_request_context_storage(); | 467 main_request_context_storage(); |
| 468 | 468 |
| 469 IOThread* const io_thread = profile_params->io_thread; | 469 IOThread* const io_thread = profile_params->io_thread; |
| 470 IOThread::Globals* const io_thread_globals = io_thread->globals(); | 470 IOThread::Globals* const io_thread_globals = io_thread->globals(); |
| 471 | 471 |
| 472 if (lazy_params_->http_server_properties_manager) { | |
| 473 lazy_params_->http_server_properties_manager->InitializeOnNetworkSequence(); | |
| 474 main_context_storage->set_http_server_properties( | |
| 475 std::move(lazy_params_->http_server_properties_manager)); | |
| 476 } | |
| 477 | |
| 478 main_context->set_network_quality_estimator( | |
| 479 io_thread_globals->network_quality_estimator.get()); | |
| 480 | |
| 481 // Create a single task runner to use with the CookieStore and ChannelIDStore. | |
| 482 scoped_refptr<base::SequencedTaskRunner> cookie_background_task_runner = | |
| 483 base::CreateSequencedTaskRunnerWithTraits( | |
| 484 {base::MayBlock(), base::TaskPriority::BACKGROUND, | |
| 485 base::TaskShutdownBehavior::BLOCK_SHUTDOWN}); | |
| 486 | |
| 487 // Set up server bound cert service. | |
| 488 DCHECK(!lazy_params_->channel_id_path.empty()); | |
| 489 scoped_refptr<QuotaPolicyChannelIDStore> channel_id_db = | |
| 490 new QuotaPolicyChannelIDStore(lazy_params_->channel_id_path, | |
| 491 cookie_background_task_runner, | |
| 492 lazy_params_->special_storage_policy.get()); | |
| 493 main_context_storage->set_channel_id_service( | |
| 494 base::MakeUnique<net::ChannelIDService>( | |
| 495 new net::DefaultChannelIDStore(channel_id_db.get()))); | |
| 496 | |
| 497 // Set up cookie store. | |
| 498 DCHECK(!lazy_params_->cookie_path.empty()); | |
| 499 | |
| 500 content::CookieStoreConfig cookie_config( | |
| 501 lazy_params_->cookie_path, lazy_params_->session_cookie_mode, | |
| 502 lazy_params_->special_storage_policy.get(), | |
| 503 profile_params->cookie_monster_delegate.get()); | |
| 504 cookie_config.crypto_delegate = cookie_config::GetCookieCryptoDelegate(); | |
| 505 cookie_config.channel_id_service = main_context->channel_id_service(); | |
| 506 cookie_config.background_task_runner = cookie_background_task_runner; | |
| 507 main_context_storage->set_cookie_store( | |
| 508 content::CreateCookieStore(cookie_config)); | |
| 509 | |
| 510 main_context->cookie_store()->SetChannelIDServiceID( | |
| 511 main_context->channel_id_service()->GetUniqueID()); | |
| 512 | |
| 513 std::unique_ptr<net::HttpCache::BackendFactory> main_backend( | |
| 514 new net::HttpCache::DefaultBackend( | |
| 515 net::DISK_CACHE, ChooseCacheBackendType(), lazy_params_->cache_path, | |
| 516 lazy_params_->cache_max_size, | |
| 517 BrowserThread::GetTaskRunnerForThread(BrowserThread::CACHE))); | |
| 518 main_context_storage->set_http_network_session( | |
| 519 CreateHttpNetworkSession(*profile_params)); | |
| 520 main_context_storage->set_http_transaction_factory(CreateMainHttpFactory( | |
| 521 main_context_storage->http_network_session(), std::move(main_backend))); | |
| 522 | |
| 523 std::unique_ptr<net::URLRequestJobFactoryImpl> main_job_factory( | |
| 524 new net::URLRequestJobFactoryImpl()); | |
| 525 InstallProtocolHandlers(main_job_factory.get(), protocol_handlers); | |
| 526 | |
| 527 // Install the Offline Page Interceptor. | 472 // Install the Offline Page Interceptor. |
| 528 #if defined(OS_ANDROID) | 473 #if defined(OS_ANDROID) |
| 529 request_interceptors.push_back( | 474 request_interceptors.push_back( |
| 530 base::MakeUnique<offline_pages::OfflinePageRequestInterceptor>( | 475 base::MakeUnique<offline_pages::OfflinePageRequestInterceptor>( |
| 531 previews_io_data())); | 476 previews_io_data())); |
| 532 #endif | 477 #endif |
| 533 | 478 |
| 534 // The data reduction proxy interceptor should be as close to the network | 479 // The data reduction proxy interceptor should be as close to the network |
| 535 // as possible. | 480 // as possible. |
| 536 request_interceptors.insert( | 481 request_interceptors.insert( |
| (...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 748 content::URLRequestInterceptorScopedVector request_interceptors) const { | 693 content::URLRequestInterceptorScopedVector request_interceptors) const { |
| 749 // We create per-app contexts on demand, unlike the others above. | 694 // We create per-app contexts on demand, unlike the others above. |
| 750 net::URLRequestContext* app_request_context = InitializeAppRequestContext( | 695 net::URLRequestContext* app_request_context = InitializeAppRequestContext( |
| 751 main_context, partition_descriptor, | 696 main_context, partition_descriptor, |
| 752 std::move(protocol_handler_interceptor), protocol_handlers, | 697 std::move(protocol_handler_interceptor), protocol_handlers, |
| 753 std::move(request_interceptors)); | 698 std::move(request_interceptors)); |
| 754 DCHECK(app_request_context); | 699 DCHECK(app_request_context); |
| 755 return app_request_context; | 700 return app_request_context; |
| 756 } | 701 } |
| 757 | 702 |
| 703 std::unique_ptr<net::HttpServerProperties> |
| 704 ProfileImplIOData::GetHttpServerProperties() const { |
| 705 if (!lazy_params_->http_server_properties_manager) |
| 706 return base::MakeUnique<net::HttpServerPropertiesImpl>(); |
| 707 lazy_params_->http_server_properties_manager->InitializeOnNetworkSequence(); |
| 708 return std::move(lazy_params_->http_server_properties_manager); |
| 709 } |
| 710 |
| 711 void ProfileImplIOData::GetCookieAndChannelIDStores( |
| 712 std::unique_ptr<net::CookieStore>* cookie_store, |
| 713 std::unique_ptr<net::ChannelIDService>* channel_id_service) const { |
| 714 // Create a single task runner to use with the CookieStore and ChannelIDStore. |
| 715 scoped_refptr<base::SequencedTaskRunner> cookie_background_task_runner = |
| 716 base::CreateSequencedTaskRunnerWithTraits( |
| 717 {base::MayBlock(), base::TaskPriority::BACKGROUND, |
| 718 base::TaskShutdownBehavior::BLOCK_SHUTDOWN}); |
| 719 |
| 720 // Set up server bound cert service. |
| 721 DCHECK(!lazy_params_->channel_id_path.empty()); |
| 722 scoped_refptr<QuotaPolicyChannelIDStore> channel_id_db = |
| 723 new QuotaPolicyChannelIDStore(lazy_params_->channel_id_path, |
| 724 cookie_background_task_runner, |
| 725 lazy_params_->special_storage_policy.get()); |
| 726 *channel_id_service = base::MakeUnique<net::ChannelIDService>( |
| 727 new net::DefaultChannelIDStore(channel_id_db.get())); |
| 728 |
| 729 // Set up cookie store. |
| 730 DCHECK(!lazy_params_->cookie_path.empty()); |
| 731 |
| 732 content::CookieStoreConfig cookie_config( |
| 733 lazy_params_->cookie_path, lazy_params_->session_cookie_mode, |
| 734 lazy_params_->special_storage_policy.get(), |
| 735 profile_params()->cookie_monster_delegate.get()); |
| 736 cookie_config.crypto_delegate = cookie_config::GetCookieCryptoDelegate(); |
| 737 cookie_config.channel_id_service = channel_id_service->get(); |
| 738 cookie_config.background_task_runner = cookie_background_task_runner; |
| 739 *cookie_store = content::CreateCookieStore(cookie_config); |
| 740 } |
| 741 |
| 742 bool ProfileImplIOData::UseNetworkQualityEstimator() const { |
| 743 return true; |
| 744 } |
| 745 |
| 746 std::unique_ptr<net::HttpCache::BackendFactory> ProfileImplIOData::GetCacheBacke
ndFactory() const { |
| 747 return base::MakeUnique<net::HttpCache::DefaultBackend>( |
| 748 net::DISK_CACHE, ChooseCacheBackendType(), lazy_params_->cache_path, |
| 749 lazy_params_->cache_max_size, |
| 750 BrowserThread::GetTaskRunnerForThread(BrowserThread::CACHE)); |
| 751 } |
| 752 |
| 758 net::URLRequestContext* | 753 net::URLRequestContext* |
| 759 ProfileImplIOData::AcquireIsolatedMediaRequestContext( | 754 ProfileImplIOData::AcquireIsolatedMediaRequestContext( |
| 760 net::URLRequestContext* app_context, | 755 net::URLRequestContext* app_context, |
| 761 const StoragePartitionDescriptor& partition_descriptor) const { | 756 const StoragePartitionDescriptor& partition_descriptor) const { |
| 762 // We create per-app media contexts on demand, unlike the others above. | 757 // We create per-app media contexts on demand, unlike the others above. |
| 763 net::URLRequestContext* media_request_context = InitializeMediaRequestContext( | 758 net::URLRequestContext* media_request_context = InitializeMediaRequestContext( |
| 764 app_context, partition_descriptor, "isolated_media"); | 759 app_context, partition_descriptor, "isolated_media"); |
| 765 DCHECK(media_request_context); | 760 DCHECK(media_request_context); |
| 766 return media_request_context; | 761 return media_request_context; |
| 767 } | 762 } |
| (...skipping 17 matching lines...) Expand all Loading... |
| 785 const base::Closure& completion) { | 780 const base::Closure& completion) { |
| 786 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 781 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 787 DCHECK(initialized()); | 782 DCHECK(initialized()); |
| 788 | 783 |
| 789 // Completes synchronously. | 784 // Completes synchronously. |
| 790 main_request_context()->transport_security_state()->DeleteAllDynamicDataSince( | 785 main_request_context()->transport_security_state()->DeleteAllDynamicDataSince( |
| 791 time); | 786 time); |
| 792 DCHECK(http_server_properties_manager_); | 787 DCHECK(http_server_properties_manager_); |
| 793 http_server_properties_manager_->Clear(completion); | 788 http_server_properties_manager_->Clear(completion); |
| 794 } | 789 } |
| OLD | NEW |