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 |