// Copyright (c) 2010 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. #ifndef CHROME_BROWSER_CERTIFICATE_MANAGER_MODEL_H_ #define CHROME_BROWSER_CERTIFICATE_MANAGER_MODEL_H_ #include #include #include "base/ref_counted.h" #include "base/string16.h" #include "net/base/cert_database.h" // CertificateManagerModel provides the data to be displayed in the certificate // manager dialog, and processes changes from the view. class CertificateManagerModel { public: // Map from the subject organization name to the list of certs from that // organization. If a cert does not have an organization name, the // subject's CertPrincipal::GetDisplayName() value is used instead. typedef std::map OrgGroupingMap; // Enumeration of the possible columns in the certificate manager tree view. enum Column { COL_SUBJECT_NAME, COL_CERTIFICATE_STORE, COL_SERIAL_NUMBER, COL_EXPIRES_ON, COL_EMAIL_ADDRESS, }; CertificateManagerModel(); ~CertificateManagerModel(); // Refresh the list of certs. Following this call, the view should call // FilterAndBuildOrgGroupingMap as necessary to refresh its tree views. void Refresh(); // Fill |map| with the certificates matching |filter_type|. void FilterAndBuildOrgGroupingMap(net::CertType filter_type, OrgGroupingMap* map) const; // Get the data to be displayed in |column| for the given |cert|. string16 GetColumnText(const net::X509Certificate& cert, Column column) const; private: net::CertDatabase cert_db_; net::CertificateList cert_list_; DISALLOW_COPY_AND_ASSIGN(CertificateManagerModel); }; #endif // CHROME_BROWSER_CERTIFICATE_MANAGER_MODEL_H_