Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 "chromeos/cert_loader.h" | 5 #include "chromeos/cert_loader.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/chromeos/chromeos_version.h" | 9 #include "base/chromeos/chromeos_version.h" |
| 10 #include "base/message_loop/message_loop_proxy.h" | 10 #include "base/message_loop/message_loop_proxy.h" |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 52 VLOG(1) << "CallOpenPersistentNSSDB"; | 52 VLOG(1) << "CallOpenPersistentNSSDB"; |
| 53 | 53 |
| 54 // Ensure we've opened the user's key/certificate database. | 54 // Ensure we've opened the user's key/certificate database. |
| 55 crypto::OpenPersistentNSSDB(); | 55 crypto::OpenPersistentNSSDB(); |
| 56 crypto::EnableTPMTokenForNSS(); | 56 crypto::EnableTPMTokenForNSS(); |
| 57 } | 57 } |
| 58 | 58 |
| 59 } // namespace | 59 } // namespace |
| 60 | 60 |
| 61 static CertLoader* g_cert_loader = NULL; | 61 static CertLoader* g_cert_loader = NULL; |
| 62 | |
| 62 // static | 63 // static |
| 63 void CertLoader::Initialize() { | 64 void CertLoader::Initialize() { |
| 64 CHECK(!g_cert_loader); | 65 CHECK(!g_cert_loader); |
| 65 g_cert_loader = new CertLoader(); | 66 g_cert_loader = new CertLoader(); |
| 66 g_cert_loader->Init(); | 67 g_cert_loader->Init(); |
| 67 } | 68 } |
| 68 | 69 |
| 69 // static | 70 // static |
| 70 void CertLoader::Shutdown() { | 71 void CertLoader::Shutdown() { |
| 71 CHECK(g_cert_loader); | 72 CHECK(g_cert_loader); |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 101 if (LoginState::IsInitialized()) | 102 if (LoginState::IsInitialized()) |
| 102 LoginState::Get()->AddObserver(this); | 103 LoginState::Get()->AddObserver(this); |
| 103 } | 104 } |
| 104 | 105 |
| 105 void CertLoader::SetCryptoTaskRunner( | 106 void CertLoader::SetCryptoTaskRunner( |
| 106 const scoped_refptr<base::SequencedTaskRunner>& crypto_task_runner) { | 107 const scoped_refptr<base::SequencedTaskRunner>& crypto_task_runner) { |
| 107 crypto_task_runner_ = crypto_task_runner; | 108 crypto_task_runner_ = crypto_task_runner; |
| 108 MaybeRequestCertificates(); | 109 MaybeRequestCertificates(); |
| 109 } | 110 } |
| 110 | 111 |
| 112 void CertLoader::SetSlowTaskRunnerForTest( | |
| 113 const scoped_refptr<base::SequencedTaskRunner>& task_runner) { | |
| 114 slow_task_runner_for_test_ = task_runner; | |
| 115 } | |
| 116 | |
| 111 CertLoader::~CertLoader() { | 117 CertLoader::~CertLoader() { |
| 112 net::CertDatabase::GetInstance()->RemoveObserver(this); | 118 net::CertDatabase::GetInstance()->RemoveObserver(this); |
| 113 if (LoginState::IsInitialized()) | 119 if (LoginState::IsInitialized()) |
| 114 LoginState::Get()->RemoveObserver(this); | 120 LoginState::Get()->RemoveObserver(this); |
| 115 } | 121 } |
| 116 | 122 |
| 117 void CertLoader::AddObserver(CertLoader::Observer* observer) { | 123 void CertLoader::AddObserver(CertLoader::Observer* observer) { |
| 118 observers_.AddObserver(observer); | 124 observers_.AddObserver(observer); |
| 119 } | 125 } |
| 120 | 126 |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 319 VLOG(1) << "StartLoadCertificates: " << certificates_update_running_; | 325 VLOG(1) << "StartLoadCertificates: " << certificates_update_running_; |
| 320 | 326 |
| 321 if (certificates_update_running_) { | 327 if (certificates_update_running_) { |
| 322 certificates_update_required_ = true; | 328 certificates_update_required_ = true; |
| 323 return; | 329 return; |
| 324 } | 330 } |
| 325 | 331 |
| 326 net::CertificateList* cert_list = new net::CertificateList; | 332 net::CertificateList* cert_list = new net::CertificateList; |
| 327 certificates_update_running_ = true; | 333 certificates_update_running_ = true; |
| 328 certificates_update_required_ = false; | 334 certificates_update_required_ = false; |
| 329 base::WorkerPool::GetTaskRunner(true /* task_is_slow */)-> | 335 |
| 330 PostTaskAndReply( | 336 base::TaskRunner* task_runner = |
| 331 FROM_HERE, | 337 base::WorkerPool::GetTaskRunner(true /* task is slow */); |
| 332 base::Bind(LoadNSSCertificates, cert_list), | 338 if (slow_task_runner_for_test_) |
| 333 base::Bind(&CertLoader::UpdateCertificates, | 339 task_runner = slow_task_runner_for_test_.get(); |
|
stevenjb
2013/08/05 18:28:09
Maybe else GetTaskRunner, instead of always callin
pneubeck (no reviews)
2013/08/06 07:54:14
Done.
| |
| 334 update_certificates_factory_.GetWeakPtr(), | 340 task_runner->PostTaskAndReply( |
| 335 base::Owned(cert_list))); | 341 FROM_HERE, |
| 342 base::Bind(LoadNSSCertificates, cert_list), | |
| 343 base::Bind(&CertLoader::UpdateCertificates, | |
| 344 update_certificates_factory_.GetWeakPtr(), | |
| 345 base::Owned(cert_list))); | |
| 336 } | 346 } |
| 337 | 347 |
| 338 void CertLoader::UpdateCertificates(net::CertificateList* cert_list) { | 348 void CertLoader::UpdateCertificates(net::CertificateList* cert_list) { |
| 339 CHECK(thread_checker_.CalledOnValidThread()); | 349 CHECK(thread_checker_.CalledOnValidThread()); |
| 340 DCHECK(certificates_update_running_); | 350 DCHECK(certificates_update_running_); |
| 341 VLOG(1) << "UpdateCertificates: " << cert_list->size(); | 351 VLOG(1) << "UpdateCertificates: " << cert_list->size(); |
| 342 | 352 |
| 343 // Ignore any existing certificates. | 353 // Ignore any existing certificates. |
| 344 cert_list_.swap(*cert_list); | 354 cert_list_.swap(*cert_list); |
| 345 | 355 |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 369 VLOG(1) << "OnCertRemoved"; | 379 VLOG(1) << "OnCertRemoved"; |
| 370 StartLoadCertificates(); | 380 StartLoadCertificates(); |
| 371 } | 381 } |
| 372 | 382 |
| 373 void CertLoader::LoggedInStateChanged(LoginState::LoggedInState state) { | 383 void CertLoader::LoggedInStateChanged(LoginState::LoggedInState state) { |
| 374 VLOG(1) << "LoggedInStateChanged: " << state; | 384 VLOG(1) << "LoggedInStateChanged: " << state; |
| 375 MaybeRequestCertificates(); | 385 MaybeRequestCertificates(); |
| 376 } | 386 } |
| 377 | 387 |
| 378 } // namespace chromeos | 388 } // namespace chromeos |
| OLD | NEW |