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 |