Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1742)

Unified Diff: chrome/browser/chromeos/options/vpn_config_view.cc

Issue 10050030: chromeos: Stop leaking combobox models in VPNConfigView dialog. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/options/vpn_config_view.cc
diff --git a/chrome/browser/chromeos/options/vpn_config_view.cc b/chrome/browser/chromeos/options/vpn_config_view.cc
index af149baa43784237e072042c0d81dbbe83f9376a..13fd6836d3df2c113e17245e6f5d44193f8cf452 100644
--- a/chrome/browser/chromeos/options/vpn_config_view.cc
+++ b/chrome/browser/chromeos/options/vpn_config_view.cc
@@ -52,21 +52,16 @@ string16 ProviderTypeToString(chromeos::ProviderType type) {
} // namespace
-namespace chromeos {
+namespace internal {
class ProviderTypeComboboxModel : public ui::ComboboxModel {
public:
- ProviderTypeComboboxModel() {}
- virtual ~ProviderTypeComboboxModel() {}
+ ProviderTypeComboboxModel();
+ virtual ~ProviderTypeComboboxModel();
// Overridden from ui::ComboboxModel:
- virtual int GetItemCount() const OVERRIDE {
- return chromeos::PROVIDER_TYPE_MAX;
- }
- virtual string16 GetItemAt(int index) OVERRIDE {
- ProviderType type = static_cast<ProviderType>(index);
- return ProviderTypeToString(type);
- }
+ virtual int GetItemCount() const OVERRIDE;
+ virtual string16 GetItemAt(int index) OVERRIDE;
private:
DISALLOW_COPY_AND_ASSIGN(ProviderTypeComboboxModel);
@@ -74,68 +69,114 @@ class ProviderTypeComboboxModel : public ui::ComboboxModel {
class ServerCACertComboboxModel : public ui::ComboboxModel {
public:
- explicit ServerCACertComboboxModel(CertLibrary* cert_library)
- : cert_library_(cert_library) {
- }
- virtual ~ServerCACertComboboxModel() {}
+ explicit ServerCACertComboboxModel(chromeos::CertLibrary* cert_library);
+ virtual ~ServerCACertComboboxModel();
// Overridden from ui::ComboboxModel:
- virtual int GetItemCount() const OVERRIDE {
- if (cert_library_->CertificatesLoading())
- return 1; // "Loading"
- // "Default" + certs.
- return cert_library_->GetCACertificates().Size() + 1;
- }
- virtual string16 GetItemAt(int index) OVERRIDE {
- if (cert_library_->CertificatesLoading())
- return l10n_util::GetStringUTF16(
- IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_CERT_LOADING);
- if (index == 0)
- return l10n_util::GetStringUTF16(
- IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_CERT_SERVER_CA_DEFAULT);
- int cert_index = index - 1;
- return cert_library_->GetCACertificates().GetDisplayStringAt(cert_index);
- }
+ virtual int GetItemCount() const OVERRIDE;
+ virtual string16 GetItemAt(int index) OVERRIDE;
private:
- CertLibrary* cert_library_;
+ chromeos::CertLibrary* cert_library_;
DISALLOW_COPY_AND_ASSIGN(ServerCACertComboboxModel);
};
class UserCertComboboxModel : public ui::ComboboxModel {
public:
- explicit UserCertComboboxModel(CertLibrary* cert_library)
- : cert_library_(cert_library) {
- }
- virtual ~UserCertComboboxModel() {}
+ explicit UserCertComboboxModel(chromeos::CertLibrary* cert_library);
+ virtual ~UserCertComboboxModel();
// Overridden from ui::ComboboxModel:
- virtual int GetItemCount() const OVERRIDE {
- if (cert_library_->CertificatesLoading())
- return 1; // "Loading"
- int num_certs = cert_library_->GetUserCertificates().Size();
- if (num_certs == 0)
- return 1; // "None installed"
- return num_certs;
- }
- virtual string16 GetItemAt(int index) OVERRIDE {
- if (cert_library_->CertificatesLoading()) {
- return l10n_util::GetStringUTF16(
- IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_CERT_LOADING);
- }
- if (cert_library_->GetUserCertificates().Size() == 0) {
- return l10n_util::GetStringUTF16(
- IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_USER_CERT_NONE_INSTALLED);
- }
- return cert_library_->GetUserCertificates().GetDisplayStringAt(index);
- }
+ virtual int GetItemCount() const OVERRIDE;
+ virtual string16 GetItemAt(int index) OVERRIDE;
private:
- CertLibrary* cert_library_;
+ chromeos::CertLibrary* cert_library_;
+
DISALLOW_COPY_AND_ASSIGN(UserCertComboboxModel);
};
+// ProviderTypeComboboxModel ---------------------------------------------------
+
+ProviderTypeComboboxModel::ProviderTypeComboboxModel() {
+}
+
+ProviderTypeComboboxModel::~ProviderTypeComboboxModel() {
+}
+
+int ProviderTypeComboboxModel::GetItemCount() const {
+ return chromeos::PROVIDER_TYPE_MAX;
+}
+
+string16 ProviderTypeComboboxModel::GetItemAt(int index) {
+ chromeos::ProviderType type = static_cast<chromeos::ProviderType>(index);
+ return ProviderTypeToString(type);
+}
+
+// ServerCACertComboboxModel ---------------------------------------------------
+
+ServerCACertComboboxModel::ServerCACertComboboxModel(
+ chromeos::CertLibrary* cert_library)
+ : cert_library_(cert_library) {
+}
+
+ServerCACertComboboxModel::~ServerCACertComboboxModel() {
+}
+
+int ServerCACertComboboxModel::GetItemCount() const {
+ if (cert_library_->CertificatesLoading())
+ return 1; // "Loading"
+ // "Default" + certs.
+ return cert_library_->GetCACertificates().Size() + 1;
+}
+
+string16 ServerCACertComboboxModel::GetItemAt(int index) {
+ if (cert_library_->CertificatesLoading())
+ return l10n_util::GetStringUTF16(
+ IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_CERT_LOADING);
+ if (index == 0)
+ return l10n_util::GetStringUTF16(
+ IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_CERT_SERVER_CA_DEFAULT);
+ int cert_index = index - 1;
+ return cert_library_->GetCACertificates().GetDisplayStringAt(cert_index);
+}
+
+// UserCertComboboxModel -------------------------------------------------------
+
+UserCertComboboxModel::UserCertComboboxModel(
+ chromeos::CertLibrary* cert_library)
+ : cert_library_(cert_library) {
+}
+
+UserCertComboboxModel::~UserCertComboboxModel() {
+}
+
+int UserCertComboboxModel::GetItemCount() const {
+ if (cert_library_->CertificatesLoading())
+ return 1; // "Loading"
+ int num_certs = cert_library_->GetUserCertificates().Size();
+ if (num_certs == 0)
+ return 1; // "None installed"
+ return num_certs;
+}
+
+string16 UserCertComboboxModel::GetItemAt(int index) {
+ if (cert_library_->CertificatesLoading()) {
+ return l10n_util::GetStringUTF16(
+ IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_CERT_LOADING);
+ }
+ if (cert_library_->GetUserCertificates().Size() == 0) {
+ return l10n_util::GetStringUTF16(
+ IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_USER_CERT_NONE_INSTALLED);
+ }
+ return cert_library_->GetUserCertificates().GetDisplayStringAt(index);
+}
+
+} // namespace internal
+
+namespace chromeos {
+
VPNConfigView::VPNConfigView(NetworkConfigView* parent, VirtualNetwork* vpn)
: ChildNetworkConfigView(parent, vpn),
cert_library_(NULL) {
@@ -478,8 +519,10 @@ void VPNConfigView::Init(VirtualNetwork* vpn) {
layout->AddView(new views::Label(l10n_util::GetStringUTF16(
IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_VPN_PROVIDER_TYPE)));
if (!vpn) {
- provider_type_combobox_ =
- new views::Combobox(new ProviderTypeComboboxModel());
+ provider_type_combobox_model_.reset(
+ new internal::ProviderTypeComboboxModel);
+ provider_type_combobox_ = new views::Combobox(
+ provider_type_combobox_model_.get());
provider_type_combobox_->set_listener(this);
layout->AddView(provider_type_combobox_);
provider_type_text_label_ = NULL;
@@ -518,9 +561,10 @@ void VPNConfigView::Init(VirtualNetwork* vpn) {
new views::Label(l10n_util::GetStringUTF16(
IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_CERT_SERVER_CA));
layout->AddView(server_ca_cert_label_);
- ServerCACertComboboxModel* server_ca_cert_model =
- new ServerCACertComboboxModel(cert_library_);
- server_ca_cert_combobox_ = new views::Combobox(server_ca_cert_model);
+ server_ca_cert_combobox_model_.reset(
+ new internal::ServerCACertComboboxModel(cert_library_));
+ server_ca_cert_combobox_ = new views::Combobox(
+ server_ca_cert_combobox_model_.get());
layout->AddView(server_ca_cert_combobox_);
layout->AddView(new ControlledSettingIndicatorView(ca_cert_ui_data_));
layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
@@ -535,9 +579,9 @@ void VPNConfigView::Init(VirtualNetwork* vpn) {
user_cert_label_ = new views::Label(l10n_util::GetStringUTF16(
IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_VPN_USER_CERT));
layout->AddView(user_cert_label_);
- UserCertComboboxModel* user_cert_model =
- new UserCertComboboxModel(cert_library_);
- user_cert_combobox_ = new views::Combobox(user_cert_model);
+ user_cert_combobox_model_.reset(
+ new internal::UserCertComboboxModel(cert_library_));
+ user_cert_combobox_ = new views::Combobox(user_cert_combobox_model_.get());
user_cert_combobox_->set_listener(this);
layout->AddView(user_cert_combobox_);
layout->AddView(new ControlledSettingIndicatorView(user_cert_ui_data_));

Powered by Google App Engine
This is Rietveld 408576698