// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "net/base/cert_database.h" #include "base/memory/singleton.h" #include "base/observer_list_threadsafe.h" #include "net/base/x509_certificate.h" namespace net { CertDatabase::ImportCertFailure::ImportCertFailure( X509Certificate* cert, int err) : certificate(cert), net_error(err) { } CertDatabase::ImportCertFailure::~ImportCertFailure() { } // CertDatabaseNotifier notifies registered observers when new user certificates // are added to the database. class CertDatabaseNotifier { public: CertDatabaseNotifier() : observer_list_(new ObserverListThreadSafe<CertDatabase::Observer>) { } static CertDatabaseNotifier* GetInstance() { return Singleton<CertDatabaseNotifier>::get(); } friend struct DefaultSingletonTraits<CertDatabaseNotifier>; friend class CertDatabase; private: const scoped_refptr<ObserverListThreadSafe<CertDatabase::Observer> > observer_list_; }; void CertDatabase::AddObserver(Observer* observer) { CertDatabaseNotifier::GetInstance()->observer_list_->AddObserver(observer); } void CertDatabase::RemoveObserver(Observer* observer) { CertDatabaseNotifier::GetInstance()->observer_list_->RemoveObserver(observer); } void CertDatabase::NotifyObserversOfUserCertAdded(const X509Certificate* cert) { CertDatabaseNotifier::GetInstance()->observer_list_->Notify( &CertDatabase::Observer::OnUserCertAdded, make_scoped_refptr(cert)); } void CertDatabase::NotifyObserversOfCertTrustChanged( const X509Certificate* cert) { CertDatabaseNotifier::GetInstance()->observer_list_->Notify( &CertDatabase::Observer::OnCertTrustChanged, make_scoped_refptr(cert)); } } // namespace net