| 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/certificate_manager_model.h" | 5 #include "chrome/browser/certificate_manager_model.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/i18n/time_formatting.h" | 10 #include "base/i18n/time_formatting.h" |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 76 | 76 |
| 77 std::unique_ptr<chromeos::CertificateProvider> extension_certificate_provider; | 77 std::unique_ptr<chromeos::CertificateProvider> extension_certificate_provider; |
| 78 #if defined(OS_CHROMEOS) | 78 #if defined(OS_CHROMEOS) |
| 79 chromeos::CertificateProviderService* service = | 79 chromeos::CertificateProviderService* service = |
| 80 chromeos::CertificateProviderServiceFactory::GetForBrowserContext( | 80 chromeos::CertificateProviderServiceFactory::GetForBrowserContext( |
| 81 browser_context); | 81 browser_context); |
| 82 extension_certificate_provider = service->CreateCertificateProvider(); | 82 extension_certificate_provider = service->CreateCertificateProvider(); |
| 83 #endif | 83 #endif |
| 84 | 84 |
| 85 BrowserThread::PostTask( | 85 BrowserThread::PostTask( |
| 86 BrowserThread::IO, | 86 BrowserThread::IO, FROM_HERE, |
| 87 FROM_HERE, | 87 base::BindOnce(&CertificateManagerModel::GetCertDBOnIOThread, |
| 88 base::Bind(&CertificateManagerModel::GetCertDBOnIOThread, | 88 browser_context->GetResourceContext(), observer, |
| 89 browser_context->GetResourceContext(), | 89 base::Passed(&extension_certificate_provider), callback)); |
| 90 observer, | |
| 91 base::Passed(&extension_certificate_provider), | |
| 92 callback)); | |
| 93 } | 90 } |
| 94 | 91 |
| 95 CertificateManagerModel::CertificateManagerModel( | 92 CertificateManagerModel::CertificateManagerModel( |
| 96 net::NSSCertDatabase* nss_cert_database, | 93 net::NSSCertDatabase* nss_cert_database, |
| 97 bool is_user_db_available, | 94 bool is_user_db_available, |
| 98 bool is_tpm_available, | 95 bool is_tpm_available, |
| 99 Observer* observer, | 96 Observer* observer, |
| 100 std::unique_ptr<chromeos::CertificateProvider> | 97 std::unique_ptr<chromeos::CertificateProvider> |
| 101 extension_certificate_provider) | 98 extension_certificate_provider) |
| 102 : cert_db_(nss_cert_database), | 99 : cert_db_(nss_cert_database), |
| (...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 293 const CreationCallback& callback, | 290 const CreationCallback& callback, |
| 294 net::NSSCertDatabase* cert_db) { | 291 net::NSSCertDatabase* cert_db) { |
| 295 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 292 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 296 | 293 |
| 297 bool is_user_db_available = !!cert_db->GetPublicSlot(); | 294 bool is_user_db_available = !!cert_db->GetPublicSlot(); |
| 298 bool is_tpm_available = false; | 295 bool is_tpm_available = false; |
| 299 #if defined(OS_CHROMEOS) | 296 #if defined(OS_CHROMEOS) |
| 300 is_tpm_available = crypto::IsTPMTokenEnabledForNSS(); | 297 is_tpm_available = crypto::IsTPMTokenEnabledForNSS(); |
| 301 #endif | 298 #endif |
| 302 BrowserThread::PostTask( | 299 BrowserThread::PostTask( |
| 303 BrowserThread::UI, | 300 BrowserThread::UI, FROM_HERE, |
| 304 FROM_HERE, | 301 base::BindOnce(&CertificateManagerModel::DidGetCertDBOnUIThread, cert_db, |
| 305 base::Bind(&CertificateManagerModel::DidGetCertDBOnUIThread, | 302 is_user_db_available, is_tpm_available, observer, |
| 306 cert_db, | 303 base::Passed(&extension_certificate_provider), callback)); |
| 307 is_user_db_available, | |
| 308 is_tpm_available, | |
| 309 observer, | |
| 310 base::Passed(&extension_certificate_provider), | |
| 311 callback)); | |
| 312 } | 304 } |
| 313 | 305 |
| 314 // static | 306 // static |
| 315 void CertificateManagerModel::GetCertDBOnIOThread( | 307 void CertificateManagerModel::GetCertDBOnIOThread( |
| 316 content::ResourceContext* context, | 308 content::ResourceContext* context, |
| 317 CertificateManagerModel::Observer* observer, | 309 CertificateManagerModel::Observer* observer, |
| 318 std::unique_ptr<chromeos::CertificateProvider> | 310 std::unique_ptr<chromeos::CertificateProvider> |
| 319 extension_certificate_provider, | 311 extension_certificate_provider, |
| 320 const CreationCallback& callback) { | 312 const CreationCallback& callback) { |
| 321 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 313 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 322 | 314 |
| 323 auto did_get_cert_db_callback = base::Bind( | 315 auto did_get_cert_db_callback = base::Bind( |
| 324 &CertificateManagerModel::DidGetCertDBOnIOThread, observer, | 316 &CertificateManagerModel::DidGetCertDBOnIOThread, observer, |
| 325 base::Passed(&extension_certificate_provider), callback); | 317 base::Passed(&extension_certificate_provider), callback); |
| 326 | 318 |
| 327 net::NSSCertDatabase* cert_db = GetNSSCertDatabaseForResourceContext( | 319 net::NSSCertDatabase* cert_db = GetNSSCertDatabaseForResourceContext( |
| 328 context, did_get_cert_db_callback); | 320 context, did_get_cert_db_callback); |
| 329 | 321 |
| 330 // The callback is run here instead of the actual function call because of | 322 // The callback is run here instead of the actual function call because of |
| 331 // extension_certificate_provider ownership semantics, ie. ownership can only | 323 // extension_certificate_provider ownership semantics, ie. ownership can only |
| 332 // be released once. The callback will only be run once (either inside the | 324 // be released once. The callback will only be run once (either inside the |
| 333 // function above or here). | 325 // function above or here). |
| 334 if (cert_db) | 326 if (cert_db) |
| 335 did_get_cert_db_callback.Run(cert_db); | 327 did_get_cert_db_callback.Run(cert_db); |
| 336 } | 328 } |
| OLD | NEW |