diff options
Diffstat (limited to 'chromium/net/cert/cert_database_nss.cc')
-rw-r--r-- | chromium/net/cert/cert_database_nss.cc | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/chromium/net/cert/cert_database_nss.cc b/chromium/net/cert/cert_database_nss.cc index a1677fe85a1..9819dded6cb 100644 --- a/chromium/net/cert/cert_database_nss.cc +++ b/chromium/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); - } + explicit 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::ObserveNSSCertDatabase(NSSCertDatabase* source) { + source->AddObserver(this->notifier_.get()); +} + } // namespace net |