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_io_data.h" | 5 #include "chrome/browser/profiles/profile_io_data.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <string> | 9 #include <string> |
10 #include <utility> | 10 #include <utility> |
(...skipping 634 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
645 for (URLRequestContextMap::const_iterator it = | 645 for (URLRequestContextMap::const_iterator it = |
646 isolated_media_request_context_map_.begin(); | 646 isolated_media_request_context_map_.begin(); |
647 current_context < kMaxCachedContexts && | 647 current_context < kMaxCachedContexts && |
648 it != isolated_media_request_context_map_.end(); | 648 it != isolated_media_request_context_map_.end(); |
649 ++it, ++current_context) { | 649 ++it, ++current_context) { |
650 media_context_cache[current_context] = it->second; | 650 media_context_cache[current_context] = it->second; |
651 memcpy(&media_context_vtable_cache[current_context], | 651 memcpy(&media_context_vtable_cache[current_context], |
652 static_cast<void*>(it->second), sizeof(void*)); | 652 static_cast<void*>(it->second), sizeof(void*)); |
653 } | 653 } |
654 | 654 |
655 // Prevent the TreeStateTracker from getting any more notifications by | 655 if (main_request_context_) { |
656 // severing the link between it and the CTVerifier and unregistering it from | 656 // Prevent the TreeStateTracker from getting any more notifications by |
657 // new STH notifications. | 657 // severing the link between it and the CTVerifier and unregistering it from |
658 // | 658 // new STH notifications. |
659 // Only do this if the |cert_transparency_verifier_| is not null. | 659 main_request_context_->cert_transparency_verifier()->SetObserver(nullptr); |
660 if (cert_transparency_verifier_) { | |
mmenke
2017/06/16 18:18:50
All of these null checks were basically checking t
| |
661 cert_transparency_verifier_->SetObserver(nullptr); | |
662 ct_tree_tracker_unregistration_.Run(); | 660 ct_tree_tracker_unregistration_.Run(); |
663 } | |
664 | 661 |
665 // Destroy certificate_report_sender_ before main_request_context_, | 662 // Destroy certificate_report_sender_ before main_request_context_, |
666 // since the former has a reference to the latter. | 663 // since the former has a reference to the latter. |
667 if (transport_security_state_) | 664 main_request_context_->transport_security_state()->SetReportSender(nullptr); |
668 transport_security_state_->SetReportSender(nullptr); | 665 certificate_report_sender_.reset(); |
669 certificate_report_sender_.reset(); | |
670 | 666 |
671 if (transport_security_state_) | 667 main_request_context_->transport_security_state()->SetExpectCTReporter( |
672 transport_security_state_->SetExpectCTReporter(nullptr); | 668 nullptr); |
673 expect_ct_reporter_.reset(); | 669 expect_ct_reporter_.reset(); |
674 | 670 |
675 if (transport_security_state_) | 671 main_request_context_->transport_security_state()->SetRequireCTDelegate( |
676 transport_security_state_->SetRequireCTDelegate(nullptr); | 672 nullptr); |
677 | 673 |
678 // And the same for the ReportingService. | 674 // And the same for the ReportingService. |
679 if (main_request_context_storage()) { | |
680 main_request_context_storage()->set_reporting_service( | 675 main_request_context_storage()->set_reporting_service( |
681 std::unique_ptr<net::ReportingService>()); | 676 std::unique_ptr<net::ReportingService>()); |
677 | |
678 // This should be shut down last, as any other requests may initiate more | |
679 // activity when the ProxyService aborts lookups. | |
680 main_request_context_->proxy_service()->OnShutdown(); | |
682 } | 681 } |
683 | 682 |
684 // This should be shut down last, as any other requests may initiate more | |
685 // activity when the ProxyService aborts lookups. | |
686 if (proxy_service_) | |
687 proxy_service_->OnShutdown(); | |
688 | |
689 // TODO(ajwong): These AssertNoURLRequests() calls are unnecessary since they | 683 // TODO(ajwong): These AssertNoURLRequests() calls are unnecessary since they |
690 // are already done in the URLRequestContext destructor. | 684 // are already done in the URLRequestContext destructor. |
691 if (main_request_context_) | 685 if (main_request_context_) |
692 main_request_context_->AssertNoURLRequests(); | 686 main_request_context_->AssertNoURLRequests(); |
693 if (extensions_request_context_) | 687 if (extensions_request_context_) |
694 extensions_request_context_->AssertNoURLRequests(); | 688 extensions_request_context_->AssertNoURLRequests(); |
695 | 689 |
696 current_context = 0; | 690 current_context = 0; |
697 for (URLRequestContextMap::iterator it = app_request_context_map_.begin(); | 691 for (URLRequestContextMap::iterator it = app_request_context_map_.begin(); |
698 it != app_request_context_map_.end(); ++it) { | 692 it != app_request_context_map_.end(); ++it) { |
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
986 // functions have been provided to assist in common operations. | 980 // functions have been provided to assist in common operations. |
987 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 981 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
988 DCHECK(!initialized_); | 982 DCHECK(!initialized_); |
989 DCHECK(profile_params_.get()); | 983 DCHECK(profile_params_.get()); |
990 | 984 |
991 IOThread* const io_thread = profile_params_->io_thread; | 985 IOThread* const io_thread = profile_params_->io_thread; |
992 IOThread::Globals* const io_thread_globals = io_thread->globals(); | 986 IOThread::Globals* const io_thread_globals = io_thread->globals(); |
993 const base::CommandLine& command_line = | 987 const base::CommandLine& command_line = |
994 *base::CommandLine::ForCurrentProcess(); | 988 *base::CommandLine::ForCurrentProcess(); |
995 | 989 |
996 // Create the common request contexts. | 990 // Create extension request context. Only used for cookies. |
991 extensions_request_context_.reset(new net::URLRequestContext()); | |
992 extensions_request_context_->set_name("extensions"); | |
993 | |
994 // Create the main request context. | |
997 main_request_context_.reset(new net::URLRequestContext()); | 995 main_request_context_.reset(new net::URLRequestContext()); |
998 main_request_context_storage_.reset( | 996 main_request_context_storage_.reset( |
999 new net::URLRequestContextStorage(main_request_context_.get())); | 997 new net::URLRequestContextStorage(main_request_context_.get())); |
1000 extensions_request_context_.reset(new net::URLRequestContext()); | |
1001 main_request_context_->set_name("main"); | 998 main_request_context_->set_name("main"); |
1002 extensions_request_context_->set_name("extensions"); | 999 |
1000 ApplyProfileParamsToContext(main_request_context_.get()); | |
1001 main_request_context_->set_net_log(io_thread->net_log()); | |
1003 | 1002 |
1004 main_request_context_->set_enable_brotli(io_thread_globals->enable_brotli); | 1003 main_request_context_->set_enable_brotli(io_thread_globals->enable_brotli); |
1005 | 1004 |
1006 std::unique_ptr<ChromeNetworkDelegate> chrome_network_delegate( | 1005 std::unique_ptr<ChromeNetworkDelegate> chrome_network_delegate( |
1007 new ChromeNetworkDelegate( | 1006 new ChromeNetworkDelegate( |
1008 #if BUILDFLAG(ENABLE_EXTENSIONS) | 1007 #if BUILDFLAG(ENABLE_EXTENSIONS) |
1009 io_thread_globals->extension_event_router_forwarder.get(), | 1008 io_thread_globals->extension_event_router_forwarder.get(), |
1010 #else | 1009 #else |
1011 NULL, | 1010 NULL, |
1012 #endif | 1011 #endif |
(...skipping 22 matching lines...) Expand all Loading... | |
1035 chrome_network_delegate->set_data_use_aggregator( | 1034 chrome_network_delegate->set_data_use_aggregator( |
1036 io_thread_globals->data_use_aggregator.get(), IsOffTheRecord()); | 1035 io_thread_globals->data_use_aggregator.get(), IsOffTheRecord()); |
1037 | 1036 |
1038 std::unique_ptr<net::NetworkDelegate> network_delegate = | 1037 std::unique_ptr<net::NetworkDelegate> network_delegate = |
1039 ConfigureNetworkDelegate(profile_params_->io_thread, | 1038 ConfigureNetworkDelegate(profile_params_->io_thread, |
1040 std::move(chrome_network_delegate)); | 1039 std::move(chrome_network_delegate)); |
1041 | 1040 |
1042 main_request_context_->set_host_resolver( | 1041 main_request_context_->set_host_resolver( |
1043 io_thread_globals->system_request_context->host_resolver()); | 1042 io_thread_globals->system_request_context->host_resolver()); |
1044 | 1043 |
1045 // NOTE: Proxy service uses the default io thread network delegate, not the | 1044 main_request_context_->set_http_auth_handler_factory( |
1046 // delegate just created. | 1045 io_thread_globals->system_request_context->http_auth_handler_factory()); |
1047 proxy_service_ = ProxyServiceFactory::CreateProxyService( | 1046 |
1048 io_thread->net_log(), main_request_context_.get(), network_delegate.get(), | 1047 main_request_context_storage_->set_proxy_service( |
1049 std::move(profile_params_->proxy_config_service), command_line, | 1048 ProxyServiceFactory::CreateProxyService( |
1050 io_thread->WpadQuickCheckEnabled(), | 1049 io_thread->net_log(), main_request_context_.get(), |
1051 io_thread->PacHttpsUrlStrippingEnabled()); | 1050 network_delegate.get(), |
1051 std::move(profile_params_->proxy_config_service), command_line, | |
1052 io_thread->WpadQuickCheckEnabled(), | |
1053 io_thread->PacHttpsUrlStrippingEnabled())); | |
1052 | 1054 |
1053 main_request_context_storage_->set_network_delegate( | 1055 main_request_context_storage_->set_network_delegate( |
1054 std::move(network_delegate)); | 1056 std::move(network_delegate)); |
1055 | 1057 |
1056 transport_security_state_.reset(new net::TransportSecurityState()); | 1058 std::unique_ptr<net::TransportSecurityState> transport_security_state( |
1059 base::MakeUnique<net::TransportSecurityState>()); | |
1057 transport_security_persister_.reset(new net::TransportSecurityPersister( | 1060 transport_security_persister_.reset(new net::TransportSecurityPersister( |
1058 transport_security_state_.get(), profile_params_->path, | 1061 transport_security_state.get(), profile_params_->path, |
1059 base::CreateSequencedTaskRunnerWithTraits( | 1062 base::CreateSequencedTaskRunnerWithTraits( |
1060 {base::MayBlock(), base::TaskPriority::BACKGROUND, | 1063 {base::MayBlock(), base::TaskPriority::BACKGROUND, |
1061 base::TaskShutdownBehavior::BLOCK_SHUTDOWN}), | 1064 base::TaskShutdownBehavior::BLOCK_SHUTDOWN}), |
1062 IsOffTheRecord())); | 1065 IsOffTheRecord())); |
1063 | 1066 |
1064 net::NetworkTrafficAnnotationTag traffic_annotation = | 1067 net::NetworkTrafficAnnotationTag traffic_annotation = |
1065 net::DefineNetworkTrafficAnnotation("domain_security_policy", R"( | 1068 net::DefineNetworkTrafficAnnotation("domain_security_policy", R"( |
1066 semantics { | 1069 semantics { |
1067 sender: "Domain Security Policy" | 1070 sender: "Domain Security Policy" |
1068 description: | 1071 description: |
(...skipping 15 matching lines...) Expand all Loading... | |
1084 } | 1087 } |
1085 policy { | 1088 policy { |
1086 cookies_allowed: false | 1089 cookies_allowed: false |
1087 setting: "This feature cannot be disabled by settings." | 1090 setting: "This feature cannot be disabled by settings." |
1088 policy_exception_justification: | 1091 policy_exception_justification: |
1089 "Not implemented, this is a feature that websites can opt into and " | 1092 "Not implemented, this is a feature that websites can opt into and " |
1090 "thus there is no Chrome-wide policy to disable it." | 1093 "thus there is no Chrome-wide policy to disable it." |
1091 })"); | 1094 })"); |
1092 certificate_report_sender_.reset( | 1095 certificate_report_sender_.reset( |
1093 new net::ReportSender(main_request_context_.get(), traffic_annotation)); | 1096 new net::ReportSender(main_request_context_.get(), traffic_annotation)); |
1094 transport_security_state_->SetReportSender(certificate_report_sender_.get()); | 1097 transport_security_state->SetReportSender(certificate_report_sender_.get()); |
1095 | 1098 |
1096 expect_ct_reporter_.reset( | 1099 expect_ct_reporter_.reset( |
1097 new ChromeExpectCTReporter(main_request_context_.get())); | 1100 new ChromeExpectCTReporter(main_request_context_.get())); |
1098 transport_security_state_->SetExpectCTReporter(expect_ct_reporter_.get()); | 1101 transport_security_state->SetExpectCTReporter(expect_ct_reporter_.get()); |
1099 | 1102 |
1100 transport_security_state_->SetRequireCTDelegate( | 1103 transport_security_state->SetRequireCTDelegate( |
1101 ct_policy_manager_->GetDelegate()); | 1104 ct_policy_manager_->GetDelegate()); |
1105 main_request_context_storage_->set_transport_security_state( | |
1106 std::move(transport_security_state)); | |
1102 | 1107 |
1103 // Take ownership over these parameters. | 1108 // Take ownership over these parameters. |
1104 cookie_settings_ = profile_params_->cookie_settings; | 1109 cookie_settings_ = profile_params_->cookie_settings; |
1105 host_content_settings_map_ = profile_params_->host_content_settings_map; | 1110 host_content_settings_map_ = profile_params_->host_content_settings_map; |
1106 #if BUILDFLAG(ENABLE_EXTENSIONS) | 1111 #if BUILDFLAG(ENABLE_EXTENSIONS) |
1107 extension_info_map_ = profile_params_->extension_info_map; | 1112 extension_info_map_ = profile_params_->extension_info_map; |
1108 #endif | 1113 #endif |
1109 | 1114 |
1110 resource_context_->host_resolver_ = | 1115 resource_context_->host_resolver_ = |
1111 io_thread_globals->system_request_context->host_resolver(); | 1116 io_thread_globals->system_request_context->host_resolver(); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1151 | 1156 |
1152 // Install the New Tab Page Interceptor. | 1157 // Install the New Tab Page Interceptor. |
1153 if (profile_params_->new_tab_page_interceptor.get()) { | 1158 if (profile_params_->new_tab_page_interceptor.get()) { |
1154 request_interceptors.push_back( | 1159 request_interceptors.push_back( |
1155 std::move(profile_params_->new_tab_page_interceptor)); | 1160 std::move(profile_params_->new_tab_page_interceptor)); |
1156 } | 1161 } |
1157 | 1162 |
1158 std::unique_ptr<net::MultiLogCTVerifier> ct_verifier( | 1163 std::unique_ptr<net::MultiLogCTVerifier> ct_verifier( |
1159 new net::MultiLogCTVerifier()); | 1164 new net::MultiLogCTVerifier()); |
1160 ct_verifier->AddLogs(io_thread_globals->ct_logs); | 1165 ct_verifier->AddLogs(io_thread_globals->ct_logs); |
1161 main_request_context_->set_cert_transparency_verifier(ct_verifier.get()); | |
1162 | 1166 |
1163 ct_tree_tracker_.reset(new certificate_transparency::TreeStateTracker( | 1167 ct_tree_tracker_.reset(new certificate_transparency::TreeStateTracker( |
1164 io_thread_globals->ct_logs, io_thread->net_log())); | 1168 io_thread_globals->ct_logs, io_thread->net_log())); |
1165 ct_verifier->SetObserver(ct_tree_tracker_.get()); | 1169 ct_verifier->SetObserver(ct_tree_tracker_.get()); |
1166 | 1170 |
1167 cert_transparency_verifier_ = std::move(ct_verifier); | 1171 main_request_context_storage_->set_cert_transparency_verifier( |
1172 std::move(ct_verifier)); | |
1173 | |
1168 io_thread->RegisterSTHObserver(ct_tree_tracker_.get()); | 1174 io_thread->RegisterSTHObserver(ct_tree_tracker_.get()); |
1169 ct_tree_tracker_unregistration_ = | 1175 ct_tree_tracker_unregistration_ = |
1170 base::Bind(&IOThread::UnregisterSTHObserver, base::Unretained(io_thread), | 1176 base::Bind(&IOThread::UnregisterSTHObserver, base::Unretained(io_thread), |
1171 ct_tree_tracker_.get()); | 1177 ct_tree_tracker_.get()); |
1172 | 1178 |
1179 main_request_context_->set_ct_policy_enforcer( | |
1180 io_thread_globals->system_request_context->ct_policy_enforcer()); | |
1181 | |
1173 InitializeInternal(profile_params_.get(), protocol_handlers, | 1182 InitializeInternal(profile_params_.get(), protocol_handlers, |
1174 std::move(request_interceptors)); | 1183 std::move(request_interceptors)); |
1175 | 1184 |
1176 profile_params_.reset(); | 1185 profile_params_.reset(); |
1177 initialized_ = true; | 1186 initialized_ = true; |
1178 } | 1187 } |
1179 | 1188 |
1180 void ProfileIOData::ApplyProfileParamsToContext( | 1189 void ProfileIOData::ApplyProfileParamsToContext( |
1181 net::URLRequestContext* context) const { | 1190 net::URLRequestContext* context) const { |
1182 context->set_http_user_agent_settings( | 1191 context->set_http_user_agent_settings( |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1352 void ProfileIOData::SetCookieSettingsForTesting( | 1361 void ProfileIOData::SetCookieSettingsForTesting( |
1353 content_settings::CookieSettings* cookie_settings) { | 1362 content_settings::CookieSettings* cookie_settings) { |
1354 DCHECK(!cookie_settings_.get()); | 1363 DCHECK(!cookie_settings_.get()); |
1355 cookie_settings_ = cookie_settings; | 1364 cookie_settings_ = cookie_settings; |
1356 } | 1365 } |
1357 | 1366 |
1358 policy::URLBlacklist::URLBlacklistState ProfileIOData::GetURLBlacklistState( | 1367 policy::URLBlacklist::URLBlacklistState ProfileIOData::GetURLBlacklistState( |
1359 const GURL& url) const { | 1368 const GURL& url) const { |
1360 return url_blacklist_manager_->GetURLBlacklistState(url); | 1369 return url_blacklist_manager_->GetURLBlacklistState(url); |
1361 } | 1370 } |
OLD | NEW |