Index: chrome/browser/io_thread.cc |
diff --git a/chrome/browser/io_thread.cc b/chrome/browser/io_thread.cc |
index d2fcf3909fee7a2246f84c9d3bbff1745102182e..41ab267bd6ae9e046d684a841e0cac3525968394 100644 |
--- a/chrome/browser/io_thread.cc |
+++ b/chrome/browser/io_thread.cc |
@@ -40,6 +40,8 @@ |
#include "chrome/common/chrome_switches.h" |
#include "chrome/common/chrome_version_info.h" |
#include "chrome/common/pref_names.h" |
+#include "components/certificate_transparency/log_proof_fetcher.h" |
+#include "components/certificate_transparency/tree_state_tracker.h" |
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_prefs.h" |
#include "components/data_reduction_proxy/core/common/data_reduction_proxy_params.h" |
#include "components/policy/core/common/policy_service.h" |
@@ -684,26 +686,23 @@ void IOThread::Init() { |
globals_->transport_security_state.reset(new net::TransportSecurityState()); |
- // TODO(erikchen): Remove ScopedTracker below once http://crbug.com/466432 |
- // is fixed. |
- tracked_objects::ScopedTracker tracking_profile7( |
- FROM_HERE_WITH_EXPLICIT_FUNCTION( |
- "466432 IOThread::InitAsync::CreateMultiLogVerifier")); |
- net::MultiLogCTVerifier* ct_verifier = new net::MultiLogCTVerifier(); |
- globals_->cert_transparency_verifier.reset(ct_verifier); |
- |
+ // Add built-in logs |
// TODO(erikchen): Remove ScopedTracker below once http://crbug.com/466432 |
// is fixed. |
tracked_objects::ScopedTracker tracking_profile8( |
FROM_HERE_WITH_EXPLICIT_FUNCTION( |
- "466432 IOThread::InitAsync::CreateLogVerifiers::Start")); |
- // Add built-in logs |
- ct_verifier->AddLogs(net::ct::CreateLogVerifiersForKnownLogs()); |
+ "466432 IOThread::InitAsync::AddKnownLogs::Start")); |
+ ScopedVector<net::CTLogVerifier> known_logs( |
+ net::ct::CreateLogVerifiersForKnownLogs()); |
+ for (auto it = known_logs.begin(); it != known_logs.end(); ++it) |
Ryan Sleevi
2015/06/29 11:58:12
STYLE: "const auto&"
alternatively:
for (known_lo
Eran Messeri
2015/07/10 13:15:48
Done.
|
+ globals_->ct_logs.push_back(linked_ptr<net::CTLogVerifier>(*it)); |
+ known_logs.weak_clear(); |
+ |
// TODO(erikchen): Remove ScopedTracker below once http://crbug.com/466432 |
// is fixed. |
tracked_objects::ScopedTracker tracking_profile9( |
FROM_HERE_WITH_EXPLICIT_FUNCTION( |
- "466432 IOThread::InitAsync::CreateLogVerifiers::End")); |
+ "466432 IOThread::InitAsync::AddKnownLogs::End")); |
// Add logs from command line |
if (command_line.HasSwitch(switches::kCertificateTransparencyLog)) { |
@@ -729,10 +728,15 @@ void IOThread::Init() { |
log_url)); |
CHECK(external_log_verifier) << "Unable to parse CT public key."; |
VLOG(1) << "Adding log with description " << log_description; |
- ct_verifier->AddLog(external_log_verifier.Pass()); |
+ globals_->ct_logs.push_back( |
+ linked_ptr<net::CTLogVerifier>(external_log_verifier.release())); |
} |
} |
+ net::MultiLogCTVerifier* ct_verifier = new net::MultiLogCTVerifier(); |
+ ct_verifier->AddLogs(globals_->ct_logs); |
+ globals_->cert_transparency_verifier.reset(ct_verifier); |
+ |
// TODO(erikchen): Remove ScopedTracker below once http://crbug.com/466432 |
// is fixed. |
tracked_objects::ScopedTracker tracking_profile10( |
@@ -917,6 +921,7 @@ void IOThread::CleanUp() { |
// Release objects that the net::URLRequestContext could have been pointing |
// to. |
+ globals()->cert_transparency_verifier->StopNotifications(); |
// Shutdown the HistogramWatcher on the IO thread. |
net::NetworkChangeNotifier::ShutdownHistogramWatcher(); |
@@ -1243,6 +1248,21 @@ void IOThread::InitSystemRequestContextOnIOThread() { |
globals_->ssl_config_service.get()); |
globals_->system_request_context->set_http_server_properties( |
globals_->http_server_properties->GetWeakPtr()); |
+ |
+ VLOG(1) << "Creating TreeStateTracker observer on IOThread."; |
+ scoped_ptr<certificate_transparency::LogProofFetcher> proof_fetcher( |
+ new certificate_transparency::LogProofFetcher( |
+ globals_->system_request_context.get())); |
+ |
+ certificate_transparency::TreeStateTracker* scts_observer( |
+ new certificate_transparency::TreeStateTracker( |
+ proof_fetcher.Pass(), globals_->ct_logs)); |
+ globals_->cert_transparency_observer.reset(scts_observer); |
+ // The |cert_transparency_verifier| is the same one held by |
+ // the |proxy_script_fetcher_context| and |system_request_context|, |
+ // so no need to set the observer in their cert_transparency_verifiers. |
+ globals_->cert_transparency_verifier->SetObserver(scts_observer); |
+ VLOG(1) << "TreeStateTracker observer on IOThread created."; |
} |
void IOThread::UpdateDnsClientEnabled() { |