Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(201)

Side by Side Diff: chrome/browser/profiles/profile_impl_io_data.cc

Issue 2986623002: Revert of Make ProfileIOData use URLRequestContextBuilder (Closed)
Patch Set: Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 #include "extensions/features/features.h" 61 #include "extensions/features/features.h"
62 #include "net/base/cache_type.h" 62 #include "net/base/cache_type.h"
63 #include "net/cookies/cookie_store.h" 63 #include "net/cookies/cookie_store.h"
64 #include "net/http/http_cache.h" 64 #include "net/http/http_cache.h"
65 #include "net/http/http_network_session.h" 65 #include "net/http/http_network_session.h"
66 #include "net/http/http_server_properties_manager.h" 66 #include "net/http/http_server_properties_manager.h"
67 #include "net/reporting/reporting_feature.h" 67 #include "net/reporting/reporting_feature.h"
68 #include "net/reporting/reporting_policy.h" 68 #include "net/reporting/reporting_policy.h"
69 #include "net/reporting/reporting_service.h" 69 #include "net/reporting/reporting_service.h"
70 #include "net/ssl/channel_id_service.h" 70 #include "net/ssl/channel_id_service.h"
71 #include "net/url_request/url_request_context_builder.h" 71 #include "net/url_request/url_request_context_storage.h"
72 #include "net/url_request/url_request_intercepting_job_factory.h" 72 #include "net/url_request/url_request_intercepting_job_factory.h"
73 #include "net/url_request/url_request_job_factory_impl.h" 73 #include "net/url_request/url_request_job_factory_impl.h"
74 #include "storage/browser/quota/special_storage_policy.h" 74 #include "storage/browser/quota/special_storage_policy.h"
75 75
76 #if defined(OS_ANDROID) 76 #if defined(OS_ANDROID)
77 #include "chrome/browser/android/offline_pages/offline_page_request_interceptor. h" 77 #include "chrome/browser/android/offline_pages/offline_page_request_interceptor. h"
78 #endif // defined(OS_ANDROID) 78 #endif // defined(OS_ANDROID)
79 79
80 namespace { 80 namespace {
81 81
82 // Returns the URLRequestContextBuilder::HttpCacheParams::Type that the disk 82 net::BackendType ChooseCacheBackendType() {
83 // cache should use.
84 net::URLRequestContextBuilder::HttpCacheParams::Type ChooseCacheType() {
85 #if !defined(OS_ANDROID) 83 #if !defined(OS_ANDROID)
86 const base::CommandLine& command_line = 84 const base::CommandLine& command_line =
87 *base::CommandLine::ForCurrentProcess(); 85 *base::CommandLine::ForCurrentProcess();
88 if (command_line.HasSwitch(switches::kUseSimpleCacheBackend)) { 86 if (command_line.HasSwitch(switches::kUseSimpleCacheBackend)) {
89 const std::string opt_value = 87 const std::string opt_value =
90 command_line.GetSwitchValueASCII(switches::kUseSimpleCacheBackend); 88 command_line.GetSwitchValueASCII(switches::kUseSimpleCacheBackend);
91 if (base::LowerCaseEqualsASCII(opt_value, "off")) 89 if (base::LowerCaseEqualsASCII(opt_value, "off"))
92 return net::URLRequestContextBuilder::HttpCacheParams::DISK_BLOCKFILE; 90 return net::CACHE_BACKEND_BLOCKFILE;
93 if (opt_value.empty() || base::LowerCaseEqualsASCII(opt_value, "on")) 91 if (opt_value.empty() || base::LowerCaseEqualsASCII(opt_value, "on"))
94 return net::URLRequestContextBuilder::HttpCacheParams::DISK_SIMPLE; 92 return net::CACHE_BACKEND_SIMPLE;
95 } 93 }
96 const std::string experiment_name = 94 const std::string experiment_name =
97 base::FieldTrialList::FindFullName("SimpleCacheTrial"); 95 base::FieldTrialList::FindFullName("SimpleCacheTrial");
98 if (base::StartsWith(experiment_name, "Disable", 96 if (base::StartsWith(experiment_name, "Disable",
99 base::CompareCase::INSENSITIVE_ASCII)) { 97 base::CompareCase::INSENSITIVE_ASCII)) {
100 return net::URLRequestContextBuilder::HttpCacheParams::DISK_BLOCKFILE; 98 return net::CACHE_BACKEND_BLOCKFILE;
101 } 99 }
102 if (base::StartsWith(experiment_name, "ExperimentYes", 100 if (base::StartsWith(experiment_name, "ExperimentYes",
103 base::CompareCase::INSENSITIVE_ASCII)) { 101 base::CompareCase::INSENSITIVE_ASCII)) {
104 return net::URLRequestContextBuilder::HttpCacheParams::DISK_SIMPLE; 102 return net::CACHE_BACKEND_SIMPLE;
105 } 103 }
106 #endif // #if !defined(OS_ANDROID) 104 #endif // #if !defined(OS_ANDROID)
107 105
108 #if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) 106 #if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
109 return net::URLRequestContextBuilder::HttpCacheParams::DISK_SIMPLE; 107 return net::CACHE_BACKEND_SIMPLE;
110 #else 108 #else
111 return net::URLRequestContextBuilder::HttpCacheParams::DISK_BLOCKFILE; 109 return net::CACHE_BACKEND_BLOCKFILE;
112 #endif 110 #endif
113 } 111 }
114 112
115 // Returns the BackendType that the disk cache should use.
116 // TODO(mmenke): Once all URLRequestContexts are set up using
117 // URLRequestContextBuilders, and the media URLRequestContext is take care of
118 // (In one way or another), this should be removed.
119 net::BackendType ChooseCacheBackendType() {
120 switch (ChooseCacheType()) {
121 case net::URLRequestContextBuilder::HttpCacheParams::DISK_BLOCKFILE:
122 return net::CACHE_BACKEND_BLOCKFILE;
123 case net::URLRequestContextBuilder::HttpCacheParams::DISK_SIMPLE:
124 return net::CACHE_BACKEND_SIMPLE;
125 case net::URLRequestContextBuilder::HttpCacheParams::DISK:
126 return net::CACHE_BACKEND_DEFAULT;
127 case net::URLRequestContextBuilder::HttpCacheParams::IN_MEMORY:
128 NOTREACHED();
129 break;
130 }
131 return net::CACHE_BACKEND_DEFAULT;
132 }
133
134 } // namespace 113 } // namespace
135 114
136 using content::BrowserThread; 115 using content::BrowserThread;
137 116
138 ProfileImplIOData::Handle::Handle(Profile* profile) 117 ProfileImplIOData::Handle::Handle(Profile* profile)
139 : io_data_(new ProfileImplIOData), 118 : io_data_(new ProfileImplIOData),
140 profile_(profile), 119 profile_(profile),
141 initialized_(false) { 120 initialized_(false) {
142 DCHECK_CURRENTLY_ON(BrowserThread::UI); 121 DCHECK_CURRENTLY_ON(BrowserThread::UI);
143 DCHECK(profile); 122 DCHECK(profile);
(...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after
473 } 452 }
474 453
475 return data_reduction_proxy_io_data()->CreateNetworkDelegate( 454 return data_reduction_proxy_io_data()->CreateNetworkDelegate(
476 io_thread->globals()->data_use_ascriber->CreateNetworkDelegate( 455 io_thread->globals()->data_use_ascriber->CreateNetworkDelegate(
477 std::move(chrome_network_delegate), 456 std::move(chrome_network_delegate),
478 io_thread->GetMetricsDataUseForwarder()), 457 io_thread->GetMetricsDataUseForwarder()),
479 true); 458 true);
480 } 459 }
481 460
482 void ProfileImplIOData::InitializeInternal( 461 void ProfileImplIOData::InitializeInternal(
483 net::URLRequestContextBuilder* builder,
484 ProfileParams* profile_params, 462 ProfileParams* profile_params,
485 content::ProtocolHandlerMap* protocol_handlers, 463 content::ProtocolHandlerMap* protocol_handlers,
486 content::URLRequestInterceptorScopedVector request_interceptors) const { 464 content::URLRequestInterceptorScopedVector request_interceptors) const {
465 net::URLRequestContext* main_context = main_request_context();
466 net::URLRequestContextStorage* main_context_storage =
467 main_request_context_storage();
468
487 IOThread* const io_thread = profile_params->io_thread; 469 IOThread* const io_thread = profile_params->io_thread;
488 IOThread::Globals* const io_thread_globals = io_thread->globals(); 470 IOThread::Globals* const io_thread_globals = io_thread->globals();
489 471
490 if (lazy_params_->http_server_properties_manager) { 472 if (lazy_params_->http_server_properties_manager) {
491 lazy_params_->http_server_properties_manager->InitializeOnNetworkSequence(); 473 lazy_params_->http_server_properties_manager->InitializeOnNetworkSequence();
492 builder->SetHttpServerProperties( 474 main_context_storage->set_http_server_properties(
493 std::move(lazy_params_->http_server_properties_manager)); 475 std::move(lazy_params_->http_server_properties_manager));
494 } 476 }
495 477
496 builder->set_network_quality_estimator( 478 main_context->set_network_quality_estimator(
497 io_thread_globals->network_quality_estimator.get()); 479 io_thread_globals->network_quality_estimator.get());
498 480
499 // Create a single task runner to use with the CookieStore and ChannelIDStore. 481 // Create a single task runner to use with the CookieStore and ChannelIDStore.
500 scoped_refptr<base::SequencedTaskRunner> cookie_background_task_runner = 482 scoped_refptr<base::SequencedTaskRunner> cookie_background_task_runner =
501 base::CreateSequencedTaskRunnerWithTraits( 483 base::CreateSequencedTaskRunnerWithTraits(
502 {base::MayBlock(), base::TaskPriority::BACKGROUND, 484 {base::MayBlock(), base::TaskPriority::BACKGROUND,
503 base::TaskShutdownBehavior::BLOCK_SHUTDOWN}); 485 base::TaskShutdownBehavior::BLOCK_SHUTDOWN});
504 486
505 // Set up server bound cert service. 487 // Set up server bound cert service.
506 DCHECK(!lazy_params_->channel_id_path.empty()); 488 DCHECK(!lazy_params_->channel_id_path.empty());
507 scoped_refptr<QuotaPolicyChannelIDStore> channel_id_db = 489 scoped_refptr<QuotaPolicyChannelIDStore> channel_id_db =
508 new QuotaPolicyChannelIDStore(lazy_params_->channel_id_path, 490 new QuotaPolicyChannelIDStore(lazy_params_->channel_id_path,
509 cookie_background_task_runner, 491 cookie_background_task_runner,
510 lazy_params_->special_storage_policy.get()); 492 lazy_params_->special_storage_policy.get());
511 std::unique_ptr<net::ChannelIDService> channel_id_service( 493 main_context_storage->set_channel_id_service(
512 base::MakeUnique<net::ChannelIDService>( 494 base::MakeUnique<net::ChannelIDService>(
513 new net::DefaultChannelIDStore(channel_id_db.get()))); 495 new net::DefaultChannelIDStore(channel_id_db.get())));
514 496
515 // Set up cookie store. 497 // Set up cookie store.
516 DCHECK(!lazy_params_->cookie_path.empty()); 498 DCHECK(!lazy_params_->cookie_path.empty());
517 499
518 content::CookieStoreConfig cookie_config( 500 content::CookieStoreConfig cookie_config(
519 lazy_params_->cookie_path, lazy_params_->session_cookie_mode, 501 lazy_params_->cookie_path, lazy_params_->session_cookie_mode,
520 lazy_params_->special_storage_policy.get(), 502 lazy_params_->special_storage_policy.get(),
521 profile_params->cookie_monster_delegate.get()); 503 profile_params->cookie_monster_delegate.get());
522 cookie_config.crypto_delegate = cookie_config::GetCookieCryptoDelegate(); 504 cookie_config.crypto_delegate = cookie_config::GetCookieCryptoDelegate();
523 cookie_config.channel_id_service = channel_id_service.get(); 505 cookie_config.channel_id_service = main_context->channel_id_service();
524 cookie_config.background_task_runner = cookie_background_task_runner; 506 cookie_config.background_task_runner = cookie_background_task_runner;
525 std::unique_ptr<net::CookieStore> cookie_store( 507 main_context_storage->set_cookie_store(
526 content::CreateCookieStore(cookie_config)); 508 content::CreateCookieStore(cookie_config));
527 509
528 cookie_store->SetChannelIDServiceID(channel_id_service->GetUniqueID()); 510 main_context->cookie_store()->SetChannelIDServiceID(
511 main_context->channel_id_service()->GetUniqueID());
529 512
530 builder->SetCookieAndChannelIdStores(std::move(cookie_store), 513 std::unique_ptr<net::HttpCache::BackendFactory> main_backend(
531 std::move(channel_id_service)); 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)));
532 522
533 net::URLRequestContextBuilder::HttpCacheParams cache_params; 523 std::unique_ptr<net::URLRequestJobFactoryImpl> main_job_factory(
534 cache_params.type = ChooseCacheType(); 524 new net::URLRequestJobFactoryImpl());
535 cache_params.path = lazy_params_->cache_path; 525 InstallProtocolHandlers(main_job_factory.get(), protocol_handlers);
536 cache_params.max_size = lazy_params_->cache_max_size;
537 builder->EnableHttpCache(cache_params);
538 builder->SetCacheThreadTaskRunner(
539 BrowserThread::GetTaskRunnerForThread(BrowserThread::CACHE));
540
541 AddProtocolHandlersToBuilder(builder, protocol_handlers);
542 526
543 // Install the Offline Page Interceptor. 527 // Install the Offline Page Interceptor.
544 #if defined(OS_ANDROID) 528 #if defined(OS_ANDROID)
545 request_interceptors.push_back( 529 request_interceptors.push_back(
546 base::MakeUnique<offline_pages::OfflinePageRequestInterceptor>( 530 base::MakeUnique<offline_pages::OfflinePageRequestInterceptor>(
547 previews_io_data())); 531 previews_io_data()));
548 #endif 532 #endif
549 533
550 // The data reduction proxy interceptor should be as close to the network 534 // The data reduction proxy interceptor should be as close to the network
551 // as possible. 535 // as possible.
552 request_interceptors.insert( 536 request_interceptors.insert(
553 request_interceptors.begin(), 537 request_interceptors.begin(),
554 data_reduction_proxy_io_data()->CreateInterceptor()); 538 data_reduction_proxy_io_data()->CreateInterceptor());
555 data_reduction_proxy_io_data()->SetDataUseAscriber( 539 data_reduction_proxy_io_data()->SetDataUseAscriber(
556 io_thread_globals->data_use_ascriber.get()); 540 io_thread_globals->data_use_ascriber.get());
557 SetUpJobFactoryDefaultsForBuilder( 541 main_context_storage->set_job_factory(SetUpJobFactoryDefaults(
558 builder, std::move(request_interceptors), 542 std::move(main_job_factory), std::move(request_interceptors),
559 std::move(profile_params->protocol_handler_interceptor), 543 std::move(profile_params->protocol_handler_interceptor),
560 io_thread_globals->system_request_context->host_resolver()); 544 main_context->network_delegate(),
561 545 io_thread_globals->system_request_context->host_resolver()));
562 builder->set_reporting_policy(MaybeCreateReportingPolicy());
563 }
564
565 void ProfileImplIOData::OnMainRequestContextCreated(
566 ProfileParams* profile_params) const {
567 DCHECK(lazy_params_);
568 546
569 #if BUILDFLAG(ENABLE_EXTENSIONS) 547 #if BUILDFLAG(ENABLE_EXTENSIONS)
570 InitializeExtensionsRequestContext(profile_params); 548 InitializeExtensionsRequestContext(profile_params);
571 #endif 549 #endif
572 550
551 main_context_storage->set_reporting_service(
552 MaybeCreateReportingService(main_context));
553
573 // Create a media request context based on the main context, but using a 554 // Create a media request context based on the main context, but using a
574 // media cache. It shares the same job factory as the main context. 555 // media cache. It shares the same job factory as the main context.
575 StoragePartitionDescriptor details(profile_path_, false); 556 StoragePartitionDescriptor details(profile_path_, false);
576 media_request_context_.reset(InitializeMediaRequestContext( 557 media_request_context_.reset(
577 main_request_context(), details, "main_media")); 558 InitializeMediaRequestContext(main_context, details, "main_media"));
578 lazy_params_.reset(); 559 lazy_params_.reset();
579 } 560 }
580 561
581 void ProfileImplIOData:: 562 void ProfileImplIOData::
582 InitializeExtensionsRequestContext(ProfileParams* profile_params) const { 563 InitializeExtensionsRequestContext(ProfileParams* profile_params) const {
583 // The extensions context only serves to hold onto the extensions cookie 564 // The extensions context only serves to hold onto the extensions cookie
584 // store. 565 // store.
585 net::URLRequestContext* extensions_context = extensions_request_context(); 566 net::URLRequestContext* extensions_context = extensions_request_context();
586 567
587 content::CookieStoreConfig cookie_config( 568 content::CookieStoreConfig cookie_config(
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
655 cookie_config.channel_id_service = channel_id_service.get(); 636 cookie_config.channel_id_service = channel_id_service.get();
656 cookie_config.background_task_runner = cookie_background_task_runner; 637 cookie_config.background_task_runner = cookie_background_task_runner;
657 cookie_store = content::CreateCookieStore(cookie_config); 638 cookie_store = content::CreateCookieStore(cookie_config);
658 cookie_store->SetChannelIDServiceID(channel_id_service->GetUniqueID()); 639 cookie_store->SetChannelIDServiceID(channel_id_service->GetUniqueID());
659 640
660 // Build a new HttpNetworkSession that uses the new ChannelIDService. 641 // Build a new HttpNetworkSession that uses the new ChannelIDService.
661 // TODO(mmenke): It's weird to combine state from 642 // TODO(mmenke): It's weird to combine state from
662 // main_request_context_storage() objects and the argumet to this method, 643 // main_request_context_storage() objects and the argumet to this method,
663 // |main_context|. Remove |main_context| as an argument, and just use 644 // |main_context|. Remove |main_context| as an argument, and just use
664 // main_context() instead. 645 // main_context() instead.
665 net::HttpNetworkSession* network_session = 646 net::HttpNetworkSession::Context session_context =
666 main_context->http_transaction_factory()->GetSession(); 647 main_request_context_storage()->http_network_session()->context();
667 net::HttpNetworkSession::Context session_context = network_session->context();
668 session_context.channel_id_service = channel_id_service.get(); 648 session_context.channel_id_service = channel_id_service.get();
669 std::unique_ptr<net::HttpNetworkSession> http_network_session( 649 std::unique_ptr<net::HttpNetworkSession> http_network_session(
670 new net::HttpNetworkSession(network_session->params(), session_context)); 650 new net::HttpNetworkSession(
651 main_request_context_storage()->http_network_session()->params(),
652 session_context));
671 std::unique_ptr<net::HttpCache> app_http_cache = 653 std::unique_ptr<net::HttpCache> app_http_cache =
672 CreateMainHttpFactory(http_network_session.get(), std::move(app_backend)); 654 CreateMainHttpFactory(http_network_session.get(), std::move(app_backend));
673 655
674 // Transfer ownership of the ChannelIDStore and the HttpNetworkSession to the 656 // Transfer ownership of the ChannelIDStore and the HttpNetworkSession to the
675 // AppRequestContext. 657 // AppRequestContext.
676 context->SetChannelIDService(std::move(channel_id_service)); 658 context->SetChannelIDService(std::move(channel_id_service));
677 context->SetHttpNetworkSession(std::move(http_network_session)); 659 context->SetHttpNetworkSession(std::move(http_network_session));
678 660
679 // Transfer ownership of the cookies and cache to AppRequestContext. 661 // Transfer ownership of the cookies and cache to AppRequestContext.
680 context->SetCookieStore(std::move(cookie_store)); 662 context->SetCookieStore(std::move(cookie_store));
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
782 return media_request_context; 764 return media_request_context;
783 } 765 }
784 766
785 chrome_browser_net::Predictor* ProfileImplIOData::GetPredictor() { 767 chrome_browser_net::Predictor* ProfileImplIOData::GetPredictor() {
786 return predictor_.get(); 768 return predictor_.get();
787 } 769 }
788 770
789 std::unique_ptr<net::ReportingService> 771 std::unique_ptr<net::ReportingService>
790 ProfileImplIOData::MaybeCreateReportingService( 772 ProfileImplIOData::MaybeCreateReportingService(
791 net::URLRequestContext* url_request_context) const { 773 net::URLRequestContext* url_request_context) const {
792 std::unique_ptr<net::ReportingPolicy> reporting_policy( 774 if (!base::FeatureList::IsEnabled(features::kReporting))
793 MaybeCreateReportingPolicy());
794 if (!reporting_policy)
795 return std::unique_ptr<net::ReportingService>(); 775 return std::unique_ptr<net::ReportingService>();
796 776
797 return net::ReportingService::Create(*reporting_policy, url_request_context); 777 return net::ReportingService::Create(net::ReportingPolicy(),
798 } 778 url_request_context);
799
800 std::unique_ptr<net::ReportingPolicy>
801 ProfileImplIOData::MaybeCreateReportingPolicy() {
802 if (!base::FeatureList::IsEnabled(features::kReporting))
803 return std::unique_ptr<net::ReportingPolicy>();
804
805 return base::MakeUnique<net::ReportingPolicy>();
806 } 779 }
807 780
808 void ProfileImplIOData::ClearNetworkingHistorySinceOnIOThread( 781 void ProfileImplIOData::ClearNetworkingHistorySinceOnIOThread(
809 base::Time time, 782 base::Time time,
810 const base::Closure& completion) { 783 const base::Closure& completion) {
811 DCHECK_CURRENTLY_ON(BrowserThread::IO); 784 DCHECK_CURRENTLY_ON(BrowserThread::IO);
812 DCHECK(initialized()); 785 DCHECK(initialized());
813 786
814 // Completes synchronously. 787 // Completes synchronously.
815 main_request_context()->transport_security_state()->DeleteAllDynamicDataSince( 788 main_request_context()->transport_security_state()->DeleteAllDynamicDataSince(
816 time); 789 time);
817 DCHECK(http_server_properties_manager_); 790 DCHECK(http_server_properties_manager_);
818 http_server_properties_manager_->Clear(completion); 791 http_server_properties_manager_->Clear(completion);
819 } 792 }
OLDNEW
« no previous file with comments | « chrome/browser/profiles/profile_impl_io_data.h ('k') | chrome/browser/profiles/profile_io_data.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698