| Index: net/cert/cert_database_nss.cc
|
| diff --git a/net/cert/cert_database_nss.cc b/net/cert/cert_database_nss.cc
|
| index 5fa272134a257ac5134e80be5376efee03c2bee1..be531ef6a0ae2b94b27736d110dc832753070806 100644
|
| --- a/net/cert/cert_database_nss.cc
|
| +++ b/net/cert/cert_database_nss.cc
|
| @@ -23,13 +23,9 @@ namespace net {
|
| // the given CertDatabase.
|
| class CertDatabase::Notifier : public NSSCertDatabase::Observer {
|
| public:
|
| - explicit Notifier(CertDatabase* cert_db) : cert_db_(cert_db) {
|
| - NSSCertDatabase::GetInstance()->AddObserver(this);
|
| - }
|
| + Notifier(CertDatabase* cert_db) : cert_db_(cert_db) {}
|
|
|
| - virtual ~Notifier() {
|
| - NSSCertDatabase::GetInstance()->RemoveObserver(this);
|
| - }
|
| + virtual ~Notifier() {}
|
|
|
| // NSSCertDatabase::Observer implementation:
|
| virtual void OnCertAdded(const X509Certificate* cert) OVERRIDE {
|
| @@ -51,10 +47,9 @@ class CertDatabase::Notifier : public NSSCertDatabase::Observer {
|
| };
|
|
|
| CertDatabase::CertDatabase()
|
| - : observer_list_(new ObserverListThreadSafe<Observer>) {
|
| - // Observe NSSCertDatabase events and forward them to observers of
|
| - // CertDatabase. This also makes sure that NSS has been initialized.
|
| - notifier_.reset(new Notifier(this));
|
| + : observer_list_(new ObserverListThreadSafe<Observer>),
|
| + notifier_(new Notifier(this)) {
|
| + crypto::EnsureNSSInit();
|
| }
|
|
|
| CertDatabase::~CertDatabase() {}
|
| @@ -109,4 +104,8 @@ int CertDatabase::AddUserCert(X509Certificate* cert_obj) {
|
| return OK;
|
| }
|
|
|
| +void CertDatabase::AddSource(NSSCertDatabase* nss_cert_db) {
|
| + nss_cert_db->AddObserver(this->notifier_.get());
|
| +}
|
| +
|
| } // namespace net
|
|
|