Chromium Code Reviews| Index: chrome/browser/profiles/profile_impl_io_data.cc |
| diff --git a/chrome/browser/profiles/profile_impl_io_data.cc b/chrome/browser/profiles/profile_impl_io_data.cc |
| index e308fd6a82bf1a928ef1c85fb018731b6fe82710..933bd1a54b2e33222e972a84bcadc74f54ccbbdf 100644 |
| --- a/chrome/browser/profiles/profile_impl_io_data.cc |
| +++ b/chrome/browser/profiles/profile_impl_io_data.cc |
| @@ -68,7 +68,7 @@ |
| #include "net/reporting/reporting_policy.h" |
| #include "net/reporting/reporting_service.h" |
| #include "net/ssl/channel_id_service.h" |
| -#include "net/url_request/url_request_context_storage.h" |
| +#include "net/url_request/url_request_context_builder.h" |
| #include "net/url_request/url_request_intercepting_job_factory.h" |
| #include "net/url_request/url_request_job_factory_impl.h" |
| #include "storage/browser/quota/special_storage_policy.h" |
| @@ -79,7 +79,9 @@ |
| namespace { |
| -net::BackendType ChooseCacheBackendType() { |
| +// Returns the URLRequestContextBuilder::HttpCacheParams::Type that the disk |
| +// cache should use. |
| +net::URLRequestContextBuilder::HttpCacheParams::Type ChooseCacheType() { |
| #if !defined(OS_ANDROID) |
| const base::CommandLine& command_line = |
| *base::CommandLine::ForCurrentProcess(); |
| @@ -87,29 +89,48 @@ net::BackendType ChooseCacheBackendType() { |
| const std::string opt_value = |
| command_line.GetSwitchValueASCII(switches::kUseSimpleCacheBackend); |
| if (base::LowerCaseEqualsASCII(opt_value, "off")) |
| - return net::CACHE_BACKEND_BLOCKFILE; |
| + return net::URLRequestContextBuilder::HttpCacheParams::DISK_BLOCKFILE; |
| if (opt_value.empty() || base::LowerCaseEqualsASCII(opt_value, "on")) |
| - return net::CACHE_BACKEND_SIMPLE; |
| + return net::URLRequestContextBuilder::HttpCacheParams::DISK_SIMPLE; |
| } |
| const std::string experiment_name = |
| base::FieldTrialList::FindFullName("SimpleCacheTrial"); |
| if (base::StartsWith(experiment_name, "Disable", |
| base::CompareCase::INSENSITIVE_ASCII)) { |
| - return net::CACHE_BACKEND_BLOCKFILE; |
| + return net::URLRequestContextBuilder::HttpCacheParams::DISK_BLOCKFILE; |
| } |
| if (base::StartsWith(experiment_name, "ExperimentYes", |
| base::CompareCase::INSENSITIVE_ASCII)) { |
| - return net::CACHE_BACKEND_SIMPLE; |
| + return net::URLRequestContextBuilder::HttpCacheParams::DISK_SIMPLE; |
| } |
| #endif // #if !defined(OS_ANDROID) |
| #if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) |
| - return net::CACHE_BACKEND_SIMPLE; |
| + return net::URLRequestContextBuilder::HttpCacheParams::DISK_SIMPLE; |
| #else |
| - return net::CACHE_BACKEND_BLOCKFILE; |
| + return net::URLRequestContextBuilder::HttpCacheParams::DISK_BLOCKFILE; |
| #endif |
| } |
| +// Returns the BackendType that the disk cache should use. Once all |
|
Randy Smith (Not in Mondays)
2017/07/14 21:37:09
Stick a TODO(mmenke) at the beginning of the secon
mmenke
2017/07/14 22:45:37
Done. Not sure why I didn't do that initially on
|
| +// URLRequestContexts are set up using URLRequestContextBuilders, and the media |
| +// URLRequestContext is take care of (In one way or another), this can be |
| +// removed. |
| +net::BackendType ChooseCacheBackendType() { |
| + switch (ChooseCacheType()) { |
| + case net::URLRequestContextBuilder::HttpCacheParams::DISK_BLOCKFILE: |
| + return net::CACHE_BACKEND_BLOCKFILE; |
| + case net::URLRequestContextBuilder::HttpCacheParams::DISK_SIMPLE: |
| + return net::CACHE_BACKEND_SIMPLE; |
| + case net::URLRequestContextBuilder::HttpCacheParams::DISK: |
| + return net::CACHE_BACKEND_DEFAULT; |
| + case net::URLRequestContextBuilder::HttpCacheParams::IN_MEMORY: |
| + NOTREACHED(); |
| + break; |
| + } |
| + return net::CACHE_BACKEND_DEFAULT; |
| +} |
| + |
| } // namespace |
| using content::BrowserThread; |
| @@ -459,23 +480,20 @@ ProfileImplIOData::ConfigureNetworkDelegate( |
| } |
| void ProfileImplIOData::InitializeInternal( |
| + net::URLRequestContextBuilder* builder, |
| ProfileParams* profile_params, |
| content::ProtocolHandlerMap* protocol_handlers, |
| content::URLRequestInterceptorScopedVector request_interceptors) const { |
| - net::URLRequestContext* main_context = main_request_context(); |
| - net::URLRequestContextStorage* main_context_storage = |
| - main_request_context_storage(); |
| - |
| IOThread* const io_thread = profile_params->io_thread; |
| IOThread::Globals* const io_thread_globals = io_thread->globals(); |
| if (lazy_params_->http_server_properties_manager) { |
| lazy_params_->http_server_properties_manager->InitializeOnNetworkSequence(); |
| - main_context_storage->set_http_server_properties( |
| + builder->SetHttpServerProperties( |
| std::move(lazy_params_->http_server_properties_manager)); |
| } |
| - main_context->set_network_quality_estimator( |
| + builder->set_network_quality_estimator( |
| io_thread_globals->network_quality_estimator.get()); |
| // Create a single task runner to use with the CookieStore and ChannelIDStore. |
| @@ -490,7 +508,7 @@ void ProfileImplIOData::InitializeInternal( |
| new QuotaPolicyChannelIDStore(lazy_params_->channel_id_path, |
| cookie_background_task_runner, |
| lazy_params_->special_storage_policy.get()); |
| - main_context_storage->set_channel_id_service( |
| + std::unique_ptr<net::ChannelIDService> channel_id_service( |
| base::MakeUnique<net::ChannelIDService>( |
| new net::DefaultChannelIDStore(channel_id_db.get()))); |
| @@ -502,27 +520,25 @@ void ProfileImplIOData::InitializeInternal( |
| lazy_params_->special_storage_policy.get(), |
| profile_params->cookie_monster_delegate.get()); |
| cookie_config.crypto_delegate = cookie_config::GetCookieCryptoDelegate(); |
| - cookie_config.channel_id_service = main_context->channel_id_service(); |
| + cookie_config.channel_id_service = channel_id_service.get(); |
| cookie_config.background_task_runner = cookie_background_task_runner; |
| - main_context_storage->set_cookie_store( |
| + std::unique_ptr<net::CookieStore> cookie_store( |
| content::CreateCookieStore(cookie_config)); |
| - main_context->cookie_store()->SetChannelIDServiceID( |
| - main_context->channel_id_service()->GetUniqueID()); |
| + cookie_store->SetChannelIDServiceID(channel_id_service->GetUniqueID()); |
| + |
| + builder->SetCookieAndChannelIdStores(std::move(cookie_store), |
| + std::move(channel_id_service)); |
| - std::unique_ptr<net::HttpCache::BackendFactory> main_backend( |
| - new net::HttpCache::DefaultBackend( |
| - net::DISK_CACHE, ChooseCacheBackendType(), lazy_params_->cache_path, |
| - lazy_params_->cache_max_size, |
| - BrowserThread::GetTaskRunnerForThread(BrowserThread::CACHE))); |
| - main_context_storage->set_http_network_session( |
| - CreateHttpNetworkSession(*profile_params)); |
| - main_context_storage->set_http_transaction_factory(CreateMainHttpFactory( |
| - main_context_storage->http_network_session(), std::move(main_backend))); |
| + net::URLRequestContextBuilder::HttpCacheParams cache_params; |
| + cache_params.type = ChooseCacheType(); |
| + cache_params.path = lazy_params_->cache_path; |
| + cache_params.max_size = lazy_params_->cache_max_size; |
| + builder->EnableHttpCache(cache_params); |
| + builder->SetCacheThreadTaskRunner( |
| + BrowserThread::GetTaskRunnerForThread(BrowserThread::CACHE)); |
| - std::unique_ptr<net::URLRequestJobFactoryImpl> main_job_factory( |
| - new net::URLRequestJobFactoryImpl()); |
| - InstallProtocolHandlers(main_job_factory.get(), protocol_handlers); |
| + AddProtocolHandlersToBuilder(builder, protocol_handlers); |
| // Install the Offline Page Interceptor. |
| #if defined(OS_ANDROID) |
| @@ -538,24 +554,27 @@ void ProfileImplIOData::InitializeInternal( |
| data_reduction_proxy_io_data()->CreateInterceptor()); |
| data_reduction_proxy_io_data()->SetDataUseAscriber( |
| io_thread_globals->data_use_ascriber.get()); |
| - main_context_storage->set_job_factory(SetUpJobFactoryDefaults( |
| - std::move(main_job_factory), std::move(request_interceptors), |
| + SetUpJobFactoryDefaultsForBuilder( |
| + builder, std::move(request_interceptors), |
| std::move(profile_params->protocol_handler_interceptor), |
| - main_context->network_delegate(), |
| - io_thread_globals->system_request_context->host_resolver())); |
| + io_thread_globals->system_request_context->host_resolver()); |
| + |
| + builder->set_reporting_policy(MaybeCreateReportingPolicy()); |
| +} |
| + |
| +void ProfileImplIOData::OnMainRequestContextCreated( |
| + ProfileParams* profile_params) const { |
| + DCHECK(lazy_params_); |
| #if BUILDFLAG(ENABLE_EXTENSIONS) |
| InitializeExtensionsRequestContext(profile_params); |
| #endif |
| - main_context_storage->set_reporting_service( |
| - MaybeCreateReportingService(main_context)); |
| - |
| // Create a media request context based on the main context, but using a |
| // media cache. It shares the same job factory as the main context. |
| StoragePartitionDescriptor details(profile_path_, false); |
| - media_request_context_.reset( |
| - InitializeMediaRequestContext(main_context, details, "main_media")); |
| + media_request_context_.reset(InitializeMediaRequestContext( |
| + main_request_context(), details, "main_media")); |
| lazy_params_.reset(); |
| } |
| @@ -643,13 +662,12 @@ net::URLRequestContext* ProfileImplIOData::InitializeAppRequestContext( |
| // main_request_context_storage() objects and the argumet to this method, |
| // |main_context|. Remove |main_context| as an argument, and just use |
| // main_context() instead. |
| - net::HttpNetworkSession::Context session_context = |
| - main_request_context_storage()->http_network_session()->context(); |
| + net::HttpNetworkSession* network_session = |
| + main_context->http_transaction_factory()->GetSession(); |
| + net::HttpNetworkSession::Context session_context = network_session->context(); |
| session_context.channel_id_service = channel_id_service.get(); |
| std::unique_ptr<net::HttpNetworkSession> http_network_session( |
| - new net::HttpNetworkSession( |
| - main_request_context_storage()->http_network_session()->params(), |
| - session_context)); |
| + new net::HttpNetworkSession(network_session->params(), session_context)); |
| std::unique_ptr<net::HttpCache> app_http_cache = |
| CreateMainHttpFactory(http_network_session.get(), std::move(app_backend)); |
| @@ -771,11 +789,20 @@ chrome_browser_net::Predictor* ProfileImplIOData::GetPredictor() { |
| std::unique_ptr<net::ReportingService> |
|
Randy Smith (Not in Mondays)
2017/07/14 21:37:09
nit, suggestion: TODO for removal when app context
mmenke
2017/07/14 22:45:37
There's already a TODO in the header.
|
| ProfileImplIOData::MaybeCreateReportingService( |
| net::URLRequestContext* url_request_context) const { |
| - if (!base::FeatureList::IsEnabled(features::kReporting)) |
| + std::unique_ptr<net::ReportingPolicy> reporting_policy( |
| + MaybeCreateReportingPolicy()); |
| + if (!reporting_policy) |
| return std::unique_ptr<net::ReportingService>(); |
| - return net::ReportingService::Create(net::ReportingPolicy(), |
| - url_request_context); |
| + return net::ReportingService::Create(*reporting_policy, url_request_context); |
| +} |
| + |
| +std::unique_ptr<net::ReportingPolicy> |
| +ProfileImplIOData::MaybeCreateReportingPolicy() { |
| + if (!base::FeatureList::IsEnabled(features::kReporting)) |
| + return std::unique_ptr<net::ReportingPolicy>(); |
| + |
| + return base::MakeUnique<net::ReportingPolicy>(); |
| } |
| void ProfileImplIOData::ClearNetworkingHistorySinceOnIOThread( |