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/io_thread.h" | 5 #include "chrome/browser/io_thread.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/base64.h" | 10 #include "base/base64.h" |
(...skipping 529 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
540 std::move(data_use_amortizer))); | 540 std::move(data_use_amortizer))); |
541 | 541 |
542 #if defined(OS_ANDROID) | 542 #if defined(OS_ANDROID) |
543 globals_->external_data_use_observer.reset( | 543 globals_->external_data_use_observer.reset( |
544 new chrome::android::ExternalDataUseObserver( | 544 new chrome::android::ExternalDataUseObserver( |
545 globals_->data_use_aggregator.get(), | 545 globals_->data_use_aggregator.get(), |
546 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO), | 546 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO), |
547 BrowserThread::GetTaskRunnerForThread(BrowserThread::UI))); | 547 BrowserThread::GetTaskRunnerForThread(BrowserThread::UI))); |
548 #endif // defined(OS_ANDROID) | 548 #endif // defined(OS_ANDROID) |
549 | 549 |
550 globals_->host_resolver = CreateGlobalHostResolver(net_log_); | |
551 | |
552 std::map<std::string, std::string> network_quality_estimator_params; | 550 std::map<std::string, std::string> network_quality_estimator_params; |
553 variations::GetVariationParams(kNetworkQualityEstimatorFieldTrialName, | 551 variations::GetVariationParams(kNetworkQualityEstimatorFieldTrialName, |
554 &network_quality_estimator_params); | 552 &network_quality_estimator_params); |
555 | 553 |
556 if (command_line.HasSwitch(switches::kForceEffectiveConnectionType)) { | 554 if (command_line.HasSwitch(switches::kForceEffectiveConnectionType)) { |
557 const std::string force_ect_value = | 555 const std::string force_ect_value = |
558 base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( | 556 base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( |
559 switches::kForceEffectiveConnectionType); | 557 switches::kForceEffectiveConnectionType); |
560 | 558 |
561 if (!force_ect_value.empty()) { | 559 if (!force_ect_value.empty()) { |
562 // If the effective connection type is forced using command line switch, | 560 // If the effective connection type is forced using command line switch, |
563 // it overrides the one set by field trial. | 561 // it overrides the one set by field trial. |
564 network_quality_estimator_params[net::kForceEffectiveConnectionType] = | 562 network_quality_estimator_params[net::kForceEffectiveConnectionType] = |
565 force_ect_value; | 563 force_ect_value; |
566 } | 564 } |
567 } | 565 } |
568 | 566 |
569 std::unique_ptr<net::ExternalEstimateProvider> external_estimate_provider; | 567 std::unique_ptr<net::ExternalEstimateProvider> external_estimate_provider; |
570 #if defined(OS_ANDROID) | 568 #if defined(OS_ANDROID) |
571 external_estimate_provider.reset( | 569 external_estimate_provider.reset( |
572 new chrome::android::ExternalEstimateProviderAndroid()); | 570 new chrome::android::ExternalEstimateProviderAndroid()); |
573 #endif // defined(OS_ANDROID) | 571 #endif // defined(OS_ANDROID) |
574 // Pass ownership. | 572 // Pass ownership. |
575 globals_->network_quality_estimator.reset(new net::NetworkQualityEstimator( | 573 globals_->network_quality_estimator.reset(new net::NetworkQualityEstimator( |
576 std::move(external_estimate_provider), network_quality_estimator_params, | 574 std::move(external_estimate_provider), network_quality_estimator_params, |
577 net_log_)); | 575 net_log_)); |
578 globals_->network_quality_observer = content::CreateNetworkQualityObserver( | 576 globals_->network_quality_observer = content::CreateNetworkQualityObserver( |
579 globals_->network_quality_estimator.get()); | 577 globals_->network_quality_estimator.get()); |
580 | 578 |
581 UpdateDnsClientEnabled(); | |
582 #if defined(OS_CHROMEOS) | |
583 // Creates a CertVerifyProc that doesn't allow any profile-provided certs. | |
584 globals_->cert_verifier = base::MakeUnique<net::CachingCertVerifier>( | |
585 base::MakeUnique<net::MultiThreadedCertVerifier>( | |
586 new chromeos::CertVerifyProcChromeOS())); | |
587 #else | |
588 globals_->cert_verifier = IgnoreErrorsCertVerifier::MaybeWrapCertVerifier( | |
589 command_line, net::CertVerifier::CreateDefault()); | |
590 UMA_HISTOGRAM_BOOLEAN( | |
591 "Net.Certificate.IgnoreCertificateErrorsSPKIListPresent", | |
592 command_line.HasSwitch(switches::kIgnoreCertificateErrorsSPKIList)); | |
593 #endif | |
594 | |
595 std::vector<scoped_refptr<const net::CTLogVerifier>> ct_logs( | 579 std::vector<scoped_refptr<const net::CTLogVerifier>> ct_logs( |
596 net::ct::CreateLogVerifiersForKnownLogs()); | 580 net::ct::CreateLogVerifiersForKnownLogs()); |
597 | 581 |
598 globals_->ct_logs.assign(ct_logs.begin(), ct_logs.end()); | 582 globals_->ct_logs.assign(ct_logs.begin(), ct_logs.end()); |
599 | 583 |
600 net::MultiLogCTVerifier* ct_verifier = new net::MultiLogCTVerifier(); | |
601 globals_->cert_transparency_verifier.reset(ct_verifier); | |
602 // Add built-in logs | |
603 ct_verifier->AddLogs(globals_->ct_logs); | |
604 | |
605 ct_tree_tracker_.reset(new certificate_transparency::TreeStateTracker( | 584 ct_tree_tracker_.reset(new certificate_transparency::TreeStateTracker( |
606 globals_->ct_logs, net_log_)); | 585 globals_->ct_logs, net_log_)); |
607 // Register the ct_tree_tracker_ as observer for new STHs. | 586 // Register the ct_tree_tracker_ as observer for new STHs. |
608 RegisterSTHObserver(ct_tree_tracker_.get()); | 587 RegisterSTHObserver(ct_tree_tracker_.get()); |
609 // Register the ct_tree_tracker_ as observer for verified SCTs. | |
610 globals_->cert_transparency_verifier->SetObserver(ct_tree_tracker_.get()); | |
611 | 588 |
612 CreateDefaultAuthHandlerFactory(); | |
613 globals_->dns_probe_service.reset(new chrome_browser_net::DnsProbeService()); | 589 globals_->dns_probe_service.reset(new chrome_browser_net::DnsProbeService()); |
614 globals_->host_mapping_rules.reset(new net::HostMappingRules()); | 590 globals_->host_mapping_rules.reset(new net::HostMappingRules()); |
615 if (command_line.HasSwitch(switches::kHostRules)) { | 591 if (command_line.HasSwitch(switches::kHostRules)) { |
616 TRACE_EVENT_BEGIN0("startup", "IOThread::InitAsync:SetRulesFromString"); | 592 TRACE_EVENT_BEGIN0("startup", "IOThread::InitAsync:SetRulesFromString"); |
617 globals_->host_mapping_rules->SetRulesFromString( | 593 globals_->host_mapping_rules->SetRulesFromString( |
618 command_line.GetSwitchValueASCII(switches::kHostRules)); | 594 command_line.GetSwitchValueASCII(switches::kHostRules)); |
619 TRACE_EVENT_END0("startup", "IOThread::InitAsync:SetRulesFromString"); | 595 TRACE_EVENT_END0("startup", "IOThread::InitAsync:SetRulesFromString"); |
620 } | 596 } |
621 | 597 |
622 session_params_.host_mapping_rules = *globals_->host_mapping_rules.get(); | 598 session_params_.host_mapping_rules = *globals_->host_mapping_rules.get(); |
(...skipping 24 matching lines...) Expand all Loading... |
647 #endif | 623 #endif |
648 | 624 |
649 #if defined(OS_ANDROID) && defined(ARCH_CPU_ARMEL) | 625 #if defined(OS_ANDROID) && defined(ARCH_CPU_ARMEL) |
650 // Record how common CPUs with broken NEON units are. See | 626 // Record how common CPUs with broken NEON units are. See |
651 // https://crbug.com/341598. | 627 // https://crbug.com/341598. |
652 crypto::EnsureOpenSSLInit(); | 628 crypto::EnsureOpenSSLInit(); |
653 UMA_HISTOGRAM_BOOLEAN("Net.HasBrokenNEON", CRYPTO_has_broken_NEON()); | 629 UMA_HISTOGRAM_BOOLEAN("Net.HasBrokenNEON", CRYPTO_has_broken_NEON()); |
654 #endif | 630 #endif |
655 | 631 |
656 ConstructSystemRequestContext(); | 632 ConstructSystemRequestContext(); |
| 633 |
| 634 UpdateDnsClientEnabled(); |
657 } | 635 } |
658 | 636 |
659 void IOThread::CleanUp() { | 637 void IOThread::CleanUp() { |
660 base::debug::LeakTracker<SafeBrowsingURLRequestContext>::CheckForLeaks(); | 638 base::debug::LeakTracker<SafeBrowsingURLRequestContext>::CheckForLeaks(); |
661 | 639 |
662 #if defined(USE_NSS_CERTS) | 640 #if defined(USE_NSS_CERTS) |
663 net::ShutdownNSSHttpIO(); | 641 net::ShutdownNSSHttpIO(); |
664 #endif | 642 #endif |
665 | 643 |
666 system_url_request_context_getter_ = NULL; | 644 system_url_request_context_getter_ = NULL; |
667 | 645 |
668 // Unlink the ct_tree_tracker_ from the global cert_transparency_verifier | 646 // Unlink the ct_tree_tracker_ from the global cert_transparency_verifier |
669 // and unregister it from new STH notifications so it will take no actions | 647 // and unregister it from new STH notifications so it will take no actions |
670 // on anything observed during CleanUp process. | 648 // on anything observed during CleanUp process. |
671 // | 649 // |
672 // Null checks are just for tests that use TestingIOThreadState. | 650 // Null checks are just for tests that use TestingIOThreadState. |
673 if (globals()->cert_transparency_verifier) | 651 if (globals()->system_request_context) { |
674 globals()->cert_transparency_verifier->SetObserver(nullptr); | 652 globals() |
| 653 ->system_request_context->cert_transparency_verifier() |
| 654 ->SetObserver(nullptr); |
| 655 } |
675 if (ct_tree_tracker_.get()) { | 656 if (ct_tree_tracker_.get()) { |
676 UnregisterSTHObserver(ct_tree_tracker_.get()); | 657 UnregisterSTHObserver(ct_tree_tracker_.get()); |
677 ct_tree_tracker_.reset(); | 658 ct_tree_tracker_.reset(); |
678 } | 659 } |
679 | 660 |
680 if (globals_->system_request_context) | 661 if (globals_->system_request_context) |
681 globals_->system_request_context->proxy_service()->OnShutdown(); | 662 globals_->system_request_context->proxy_service()->OnShutdown(); |
682 | 663 |
683 // Release objects that the net::URLRequestContext could have been pointing | 664 // Release objects that the net::URLRequestContext could have been pointing |
684 // to. | 665 // to. |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
735 void IOThread::UpdateNegotiateDisableCnameLookup() { | 716 void IOThread::UpdateNegotiateDisableCnameLookup() { |
736 globals_->http_auth_preferences->set_negotiate_disable_cname_lookup( | 717 globals_->http_auth_preferences->set_negotiate_disable_cname_lookup( |
737 negotiate_disable_cname_lookup_.GetValue()); | 718 negotiate_disable_cname_lookup_.GetValue()); |
738 } | 719 } |
739 | 720 |
740 void IOThread::UpdateNegotiateEnablePort() { | 721 void IOThread::UpdateNegotiateEnablePort() { |
741 globals_->http_auth_preferences->set_negotiate_enable_port( | 722 globals_->http_auth_preferences->set_negotiate_enable_port( |
742 negotiate_enable_port_.GetValue()); | 723 negotiate_enable_port_.GetValue()); |
743 } | 724 } |
744 | 725 |
745 void IOThread::CreateDefaultAuthHandlerFactory() { | 726 std::unique_ptr<net::HttpAuthHandlerFactory> |
| 727 IOThread::CreateDefaultAuthHandlerFactory(net::HostResolver* host_resolver) { |
746 std::vector<std::string> supported_schemes = base::SplitString( | 728 std::vector<std::string> supported_schemes = base::SplitString( |
747 auth_schemes_, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY); | 729 auth_schemes_, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY); |
748 globals_->http_auth_preferences.reset(new net::HttpAuthPreferences( | 730 globals_->http_auth_preferences.reset(new net::HttpAuthPreferences( |
749 supported_schemes | 731 supported_schemes |
750 #if defined(OS_POSIX) && !defined(OS_ANDROID) | 732 #if defined(OS_POSIX) && !defined(OS_ANDROID) |
751 , | 733 , |
752 gssapi_library_name_ | 734 gssapi_library_name_ |
753 #endif | 735 #endif |
754 #if defined(OS_CHROMEOS) | 736 #if defined(OS_CHROMEOS) |
755 , | 737 , |
756 allow_gssapi_library_load_ | 738 allow_gssapi_library_load_ |
757 #endif | 739 #endif |
758 )); | 740 )); |
759 UpdateServerWhitelist(); | 741 UpdateServerWhitelist(); |
760 UpdateDelegateWhitelist(); | 742 UpdateDelegateWhitelist(); |
761 UpdateNegotiateDisableCnameLookup(); | 743 UpdateNegotiateDisableCnameLookup(); |
762 UpdateNegotiateEnablePort(); | 744 UpdateNegotiateEnablePort(); |
763 #if defined(OS_ANDROID) | 745 #if defined(OS_ANDROID) |
764 UpdateAndroidAuthNegotiateAccountType(); | 746 UpdateAndroidAuthNegotiateAccountType(); |
765 #endif | 747 #endif |
766 globals_->http_auth_handler_factory = | 748 |
767 net::HttpAuthHandlerRegistryFactory::Create( | 749 return net::HttpAuthHandlerRegistryFactory::Create( |
768 globals_->http_auth_preferences.get(), globals_->host_resolver.get()); | 750 globals_->http_auth_preferences.get(), host_resolver); |
769 } | 751 } |
770 | 752 |
771 void IOThread::ClearHostCache( | 753 void IOThread::ClearHostCache( |
772 const base::Callback<bool(const std::string&)>& host_filter) { | 754 const base::Callback<bool(const std::string&)>& host_filter) { |
773 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 755 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
774 | 756 |
775 net::HostCache* host_cache = globals_->host_resolver->GetHostCache(); | 757 if (!globals_->system_request_context) |
| 758 return; |
| 759 |
| 760 net::HostCache* host_cache = |
| 761 globals_->system_request_context->host_resolver()->GetHostCache(); |
776 if (host_cache) | 762 if (host_cache) |
777 host_cache->ClearForHosts(host_filter); | 763 host_cache->ClearForHosts(host_filter); |
778 } | 764 } |
779 | 765 |
780 const net::HttpNetworkSession::Params& IOThread::NetworkSessionParams() const { | 766 const net::HttpNetworkSession::Params& IOThread::NetworkSessionParams() const { |
781 return session_params_; | 767 return session_params_; |
782 } | 768 } |
783 | 769 |
784 void IOThread::DisableQuic() { | 770 void IOThread::DisableQuic() { |
785 session_params_.enable_quic = false; | 771 session_params_.enable_quic = false; |
(...skipping 13 matching lines...) Expand all Loading... |
799 | 785 |
800 void IOThread::ChangedToOnTheRecordOnIOThread() { | 786 void IOThread::ChangedToOnTheRecordOnIOThread() { |
801 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 787 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
802 | 788 |
803 // Clear the host cache to avoid showing entries from the OTR session | 789 // Clear the host cache to avoid showing entries from the OTR session |
804 // in about:net-internals. | 790 // in about:net-internals. |
805 ClearHostCache(base::Callback<bool(const std::string&)>()); | 791 ClearHostCache(base::Callback<bool(const std::string&)>()); |
806 } | 792 } |
807 | 793 |
808 void IOThread::UpdateDnsClientEnabled() { | 794 void IOThread::UpdateDnsClientEnabled() { |
809 globals()->host_resolver->SetDnsClientEnabled(*dns_client_enabled_); | 795 globals()->system_request_context->host_resolver()->SetDnsClientEnabled( |
| 796 *dns_client_enabled_); |
810 } | 797 } |
811 | 798 |
812 void IOThread::RegisterSTHObserver(net::ct::STHObserver* observer) { | 799 void IOThread::RegisterSTHObserver(net::ct::STHObserver* observer) { |
813 chrome_browser_net::GetGlobalSTHDistributor()->RegisterObserver(observer); | 800 chrome_browser_net::GetGlobalSTHDistributor()->RegisterObserver(observer); |
814 } | 801 } |
815 | 802 |
816 void IOThread::UnregisterSTHObserver(net::ct::STHObserver* observer) { | 803 void IOThread::UnregisterSTHObserver(net::ct::STHObserver* observer) { |
817 chrome_browser_net::GetGlobalSTHDistributor()->UnregisterObserver(observer); | 804 chrome_browser_net::GetGlobalSTHDistributor()->UnregisterObserver(observer); |
818 } | 805 } |
819 | 806 |
820 bool IOThread::WpadQuickCheckEnabled() const { | 807 bool IOThread::WpadQuickCheckEnabled() const { |
821 return quick_check_enabled_.GetValue(); | 808 return quick_check_enabled_.GetValue(); |
822 } | 809 } |
823 | 810 |
824 bool IOThread::PacHttpsUrlStrippingEnabled() const { | 811 bool IOThread::PacHttpsUrlStrippingEnabled() const { |
825 return pac_https_url_stripping_enabled_.GetValue(); | 812 return pac_https_url_stripping_enabled_.GetValue(); |
826 } | 813 } |
827 | 814 |
828 void IOThread::ConstructSystemRequestContext() { | 815 void IOThread::ConstructSystemRequestContext() { |
| 816 const base::CommandLine& command_line = |
| 817 *base::CommandLine::ForCurrentProcess(); |
| 818 |
829 globals_->system_request_context = | 819 globals_->system_request_context = |
830 base::MakeUnique<SystemURLRequestContext>(); | 820 base::MakeUnique<SystemURLRequestContext>(); |
831 net::URLRequestContext* context = globals_->system_request_context.get(); | 821 net::URLRequestContext* context = globals_->system_request_context.get(); |
832 globals_->system_request_context_storage = | 822 globals_->system_request_context_storage = |
833 base::MakeUnique<net::URLRequestContextStorage>(context); | 823 base::MakeUnique<net::URLRequestContextStorage>(context); |
834 net::URLRequestContextStorage* context_storage = | 824 net::URLRequestContextStorage* context_storage = |
835 globals_->system_request_context_storage.get(); | 825 globals_->system_request_context_storage.get(); |
836 | 826 |
837 context->set_network_quality_estimator( | 827 context->set_network_quality_estimator( |
838 globals_->network_quality_estimator.get()); | 828 globals_->network_quality_estimator.get()); |
839 context->set_enable_brotli(globals_->enable_brotli); | 829 context->set_enable_brotli(globals_->enable_brotli); |
840 context->set_name("system"); | 830 context->set_name("system"); |
841 | 831 |
842 context_storage->set_http_user_agent_settings( | 832 context_storage->set_http_user_agent_settings( |
843 base::MakeUnique<net::StaticHttpUserAgentSettings>(std::string(), | 833 base::MakeUnique<net::StaticHttpUserAgentSettings>(std::string(), |
844 GetUserAgent())); | 834 GetUserAgent())); |
845 std::unique_ptr<ChromeNetworkDelegate> chrome_network_delegate( | 835 std::unique_ptr<ChromeNetworkDelegate> chrome_network_delegate( |
846 new ChromeNetworkDelegate(extension_event_router_forwarder(), | 836 new ChromeNetworkDelegate(extension_event_router_forwarder(), |
847 &system_enable_referrers_)); | 837 &system_enable_referrers_)); |
848 // By default, data usage is considered off the record. | 838 // By default, data usage is considered off the record. |
849 chrome_network_delegate->set_data_use_aggregator( | 839 chrome_network_delegate->set_data_use_aggregator( |
850 globals_->data_use_aggregator.get(), | 840 globals_->data_use_aggregator.get(), |
851 true /* is_data_usage_off_the_record */); | 841 true /* is_data_usage_off_the_record */); |
852 context_storage->set_network_delegate( | 842 context_storage->set_network_delegate( |
853 globals_->data_use_ascriber->CreateNetworkDelegate( | 843 globals_->data_use_ascriber->CreateNetworkDelegate( |
854 std::move(chrome_network_delegate), GetMetricsDataUseForwarder())); | 844 std::move(chrome_network_delegate), GetMetricsDataUseForwarder())); |
855 context->set_net_log(net_log_); | 845 context->set_net_log(net_log_); |
856 context->set_host_resolver(globals_->host_resolver.get()); | 846 context_storage->set_host_resolver(CreateGlobalHostResolver(net_log_)); |
857 | 847 |
858 context_storage->set_ssl_config_service(GetSSLConfigService()); | 848 context_storage->set_ssl_config_service(GetSSLConfigService()); |
859 context->set_http_auth_handler_factory( | 849 context_storage->set_http_auth_handler_factory( |
860 globals_->http_auth_handler_factory.get()); | 850 CreateDefaultAuthHandlerFactory(context->host_resolver())); |
861 | 851 |
862 // In-memory cookie store. | 852 // In-memory cookie store. |
863 context_storage->set_cookie_store( | 853 context_storage->set_cookie_store( |
864 content::CreateCookieStore(content::CookieStoreConfig())); | 854 content::CreateCookieStore(content::CookieStoreConfig())); |
865 // In-memory channel ID store. | 855 // In-memory channel ID store. |
866 context_storage->set_channel_id_service( | 856 context_storage->set_channel_id_service( |
867 base::MakeUnique<net::ChannelIDService>( | 857 base::MakeUnique<net::ChannelIDService>( |
868 new net::DefaultChannelIDStore(nullptr))); | 858 new net::DefaultChannelIDStore(nullptr))); |
869 context->cookie_store()->SetChannelIDServiceID( | 859 context->cookie_store()->SetChannelIDServiceID( |
870 context->channel_id_service()->GetUniqueID()); | 860 context->channel_id_service()->GetUniqueID()); |
871 | 861 |
872 context_storage->set_transport_security_state( | 862 context_storage->set_transport_security_state( |
873 base::MakeUnique<net::TransportSecurityState>()); | 863 base::MakeUnique<net::TransportSecurityState>()); |
874 | 864 |
875 context_storage->set_http_server_properties( | 865 context_storage->set_http_server_properties( |
876 base::MakeUnique<net::HttpServerPropertiesImpl>()); | 866 base::MakeUnique<net::HttpServerPropertiesImpl>()); |
877 | 867 |
878 context->set_cert_verifier(globals_->cert_verifier.get()); | 868 #if defined(OS_CHROMEOS) |
879 context->set_cert_transparency_verifier( | 869 // Creates a CertVerifyProc that doesn't allow any profile-provided certs. |
880 globals_->cert_transparency_verifier.get()); | 870 context_storage->set_cert_verifier(base::MakeUnique<net::CachingCertVerifier>( |
| 871 base::MakeUnique<net::MultiThreadedCertVerifier>( |
| 872 new chromeos::CertVerifyProcChromeOS()))); |
| 873 #else |
| 874 context_storage->set_cert_verifier( |
| 875 IgnoreErrorsCertVerifier::MaybeWrapCertVerifier( |
| 876 command_line, net::CertVerifier::CreateDefault())); |
| 877 UMA_HISTOGRAM_BOOLEAN( |
| 878 "Net.Certificate.IgnoreCertificateErrorsSPKIListPresent", |
| 879 command_line.HasSwitch(switches::kIgnoreCertificateErrorsSPKIList)); |
| 880 #endif |
| 881 |
| 882 std::unique_ptr<net::MultiLogCTVerifier> ct_verifier = |
| 883 base::MakeUnique<net::MultiLogCTVerifier>(); |
| 884 // Add built-in logs |
| 885 ct_verifier->AddLogs(globals_->ct_logs); |
| 886 |
| 887 // Register the ct_tree_tracker_ as observer for verified SCTs. |
| 888 ct_verifier->SetObserver(ct_tree_tracker_.get()); |
| 889 |
| 890 context_storage->set_cert_transparency_verifier(std::move(ct_verifier)); |
881 | 891 |
882 context_storage->set_ct_policy_enforcer( | 892 context_storage->set_ct_policy_enforcer( |
883 base::MakeUnique<net::CTPolicyEnforcer>()); | 893 base::MakeUnique<net::CTPolicyEnforcer>()); |
884 | 894 |
885 const base::CommandLine& command_line = | |
886 *base::CommandLine::ForCurrentProcess(); | |
887 context_storage->set_proxy_service(ProxyServiceFactory::CreateProxyService( | 895 context_storage->set_proxy_service(ProxyServiceFactory::CreateProxyService( |
888 net_log_, context, context->network_delegate(), | 896 net_log_, context, context->network_delegate(), |
889 std::move(system_proxy_config_service_), command_line, | 897 std::move(system_proxy_config_service_), command_line, |
890 WpadQuickCheckEnabled(), PacHttpsUrlStrippingEnabled())); | 898 WpadQuickCheckEnabled(), PacHttpsUrlStrippingEnabled())); |
891 | 899 |
892 net::HttpNetworkSession::Context session_context; | 900 net::HttpNetworkSession::Context session_context; |
893 net::URLRequestContextBuilder::SetHttpNetworkSessionComponents( | 901 net::URLRequestContextBuilder::SetHttpNetworkSessionComponents( |
894 context, &session_context); | 902 context, &session_context); |
895 | 903 |
896 context_storage->set_http_network_session( | 904 context_storage->set_http_network_session( |
(...skipping 10 matching lines...) Expand all Loading... |
907 base::MakeUnique<net::DataProtocolHandler>()); | 915 base::MakeUnique<net::DataProtocolHandler>()); |
908 job_factory->SetProtocolHandler( | 916 job_factory->SetProtocolHandler( |
909 url::kFileScheme, | 917 url::kFileScheme, |
910 base::MakeUnique<net::FileProtocolHandler>( | 918 base::MakeUnique<net::FileProtocolHandler>( |
911 base::CreateTaskRunnerWithTraits( | 919 base::CreateTaskRunnerWithTraits( |
912 {base::MayBlock(), base::TaskPriority::USER_VISIBLE, | 920 {base::MayBlock(), base::TaskPriority::USER_VISIBLE, |
913 base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}))); | 921 base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}))); |
914 #if !BUILDFLAG(DISABLE_FTP_SUPPORT) | 922 #if !BUILDFLAG(DISABLE_FTP_SUPPORT) |
915 job_factory->SetProtocolHandler( | 923 job_factory->SetProtocolHandler( |
916 url::kFtpScheme, | 924 url::kFtpScheme, |
917 net::FtpProtocolHandler::Create(globals_->host_resolver.get())); | 925 net::FtpProtocolHandler::Create(context->host_resolver())); |
918 #endif | 926 #endif |
919 | 927 |
920 context_storage->set_job_factory(std::move(job_factory)); | 928 context_storage->set_job_factory(std::move(job_factory)); |
921 } | 929 } |
922 | 930 |
923 // static | 931 // static |
924 void IOThread::ConfigureParamsFromFieldTrialsAndCommandLine( | 932 void IOThread::ConfigureParamsFromFieldTrialsAndCommandLine( |
925 const base::CommandLine& command_line, | 933 const base::CommandLine& command_line, |
926 bool is_quic_allowed_by_policy, | 934 bool is_quic_allowed_by_policy, |
927 bool http_09_on_non_default_ports_enabled, | 935 bool http_09_on_non_default_ports_enabled, |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1010 GetSwitchValueAsInt(command_line, switches::kTestingFixedHttpsPort); | 1018 GetSwitchValueAsInt(command_line, switches::kTestingFixedHttpsPort); |
1011 } | 1019 } |
1012 | 1020 |
1013 params->http_09_on_non_default_ports_enabled = | 1021 params->http_09_on_non_default_ports_enabled = |
1014 http_09_on_non_default_ports_enabled; | 1022 http_09_on_non_default_ports_enabled; |
1015 } | 1023 } |
1016 | 1024 |
1017 metrics::UpdateUsagePrefCallbackType IOThread::GetMetricsDataUseForwarder() { | 1025 metrics::UpdateUsagePrefCallbackType IOThread::GetMetricsDataUseForwarder() { |
1018 return base::Bind(&UpdateMetricsUsagePrefsOnUIThread); | 1026 return base::Bind(&UpdateMetricsUsagePrefsOnUIThread); |
1019 } | 1027 } |
OLD | NEW |