Chromium Code Reviews| Index: net/cert/nss_cert_database_chromeos.cc |
| diff --git a/net/cert/nss_cert_database_chromeos.cc b/net/cert/nss_cert_database_chromeos.cc |
| index 936287c2204fa75f5b350540d4363d910952760e..ac7117c2d3b74916fdd8d05af857556a06042232 100644 |
| --- a/net/cert/nss_cert_database_chromeos.cc |
| +++ b/net/cert/nss_cert_database_chromeos.cc |
| @@ -7,6 +7,12 @@ |
| #include <cert.h> |
| #include <pk11pub.h> |
| +#include <algorithm> |
| + |
| +#include "base/bind.h" |
| +#include "base/callback.h" |
| +#include "base/location.h" |
| +#include "base/task_runner.h" |
| #include "net/base/crypto_module.h" |
| #include "net/cert/x509_certificate.h" |
| @@ -22,18 +28,21 @@ NSSCertDatabaseChromeOS::NSSCertDatabaseChromeOS( |
| NSSCertDatabaseChromeOS::~NSSCertDatabaseChromeOS() {} |
| -void NSSCertDatabaseChromeOS::ListCerts(CertificateList* certs) { |
| - NSSCertDatabase::ListCerts(certs); |
| +void NSSCertDatabaseChromeOS::ListCertsSync(CertificateList* certs) { |
| + ListCertsImpl(profile_filter_, certs); |
| +} |
| - size_t pre_size = certs->size(); |
| - certs->erase(std::remove_if( |
| - certs->begin(), |
| - certs->end(), |
| - NSSProfileFilterChromeOS::CertNotAllowedForProfilePredicate( |
| - profile_filter_)), |
| - certs->end()); |
| - DVLOG(1) << "filtered " << pre_size - certs->size() << " of " << pre_size |
| - << " certs"; |
| +void NSSCertDatabaseChromeOS::ListCerts( |
| + const base::Callback<void(scoped_ptr<CertificateList> certs)>& callback) { |
| + scoped_ptr<CertificateList> certs(new CertificateList()); |
| + CertificateList* raw_certs = certs.get(); |
|
stevenjb
2014/02/04 22:28:42
nit: unnecessary.
|
| + |
| + GetSlowTaskRunner()->PostTaskAndReply( |
| + FROM_HERE, |
| + base::Bind(&NSSCertDatabaseChromeOS::ListCertsImpl, |
| + profile_filter_, |
| + base::Unretained(raw_certs)), |
| + base::Bind(callback, base::Passed(&certs))); |
| } |
| crypto::ScopedPK11Slot NSSCertDatabaseChromeOS::GetPublicSlot() const { |
| @@ -62,4 +71,20 @@ void NSSCertDatabaseChromeOS::ListModules(CryptoModuleList* modules, |
| << " modules"; |
| } |
| +void NSSCertDatabaseChromeOS::ListCertsImpl( |
| + const NSSProfileFilterChromeOS& profile_filter, |
| + CertificateList* certs) { |
| + NSSCertDatabase::ListCertsImpl(certs); |
| + |
| + size_t pre_size = certs->size(); |
| + certs->erase(std::remove_if( |
| + certs->begin(), |
| + certs->end(), |
| + NSSProfileFilterChromeOS::CertNotAllowedForProfilePredicate( |
| + profile_filter)), |
| + certs->end()); |
| + DVLOG(1) << "filtered " << pre_size - certs->size() << " of " << pre_size |
| + << " certs"; |
| +} |
| + |
| } // namespace net |