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

Unified Diff: chrome/browser/ui/views/translate/translate_bubble_view.cc

Issue 330443004: Bug fix: Translate: leak of a ComboboxModel (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: sky's review (2) Created 6 years, 6 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
« no previous file with comments | « chrome/browser/ui/views/translate/translate_bubble_view.h ('k') | ui/base/models/simple_combobox_model.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/views/translate/translate_bubble_view.cc
diff --git a/chrome/browser/ui/views/translate/translate_bubble_view.cc b/chrome/browser/ui/views/translate/translate_bubble_view.cc
index b72959369e3761ce6b56130fe1514920109f715d..a22b4dadd9e599a90fbf497cde8afdb99e5c8592 100644
--- a/chrome/browser/ui/views/translate/translate_bubble_view.cc
+++ b/chrome/browser/ui/views/translate/translate_bubble_view.cc
@@ -27,6 +27,7 @@
#include "grit/generated_resources.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/models/combobox_model.h"
+#include "ui/base/models/simple_combobox_model.h"
#include "ui/base/resource/resource_bundle.h"
#include "ui/views/controls/button/checkbox.h"
#include "ui/views/controls/button/label_button.h"
@@ -40,6 +41,12 @@
namespace {
+enum DenialComboboxIndexes {
+ INDEX_NOPE = 0,
+ INDEX_NEVER_TRANSLATE_LANGUAGE = 2,
+ INDEX_NEVER_TRANSLATE_SITE = 4,
+};
+
views::LabelButton* CreateLabelButton(views::ButtonListener* listener,
const base::string16& label,
int id) {
@@ -59,47 +66,6 @@ views::Link* CreateLink(views::LinkListener* listener,
return link;
}
-class TranslateDenialComboboxModel : public ui::ComboboxModel {
- public:
- enum {
- INDEX_NOPE = 0,
- INDEX_NEVER_TRANSLATE_LANGUAGE = 2,
- INDEX_NEVER_TRANSLATE_SITE = 4,
- };
-
- explicit TranslateDenialComboboxModel(
- const base::string16& original_language_name) {
- items_.push_back(l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_DENY));
- items_.push_back(base::string16());
- items_.push_back(l10n_util::GetStringFUTF16(
- IDS_TRANSLATE_BUBBLE_NEVER_TRANSLATE_LANG,
- original_language_name));
- items_.push_back(base::string16());
- items_.push_back(l10n_util::GetStringUTF16(
- IDS_TRANSLATE_BUBBLE_NEVER_TRANSLATE_SITE));
- }
- virtual ~TranslateDenialComboboxModel() {}
-
- private:
- // Overridden from ui::ComboboxModel:
- virtual int GetItemCount() const OVERRIDE {
- return items_.size();
- }
- virtual base::string16 GetItemAt(int index) OVERRIDE {
- return items_[index];
- }
- virtual bool IsItemSeparatorAt(int index) OVERRIDE {
- return items_[index].empty();
- }
- virtual int GetDefaultIndex() const OVERRIDE {
- return 0;
- }
-
- std::vector<base::string16> items_;
-
- DISALLOW_COPY_AND_ASSIGN(TranslateDenialComboboxModel);
-};
-
} // namespace
// static
@@ -395,12 +361,12 @@ void TranslateBubbleView::HandleComboboxPerformAction(
denial_button_clicked_ = true;
int index = denial_combobox_->selected_index();
switch (index) {
- case TranslateDenialComboboxModel::INDEX_NOPE:
+ case INDEX_NOPE:
break;
- case TranslateDenialComboboxModel::INDEX_NEVER_TRANSLATE_LANGUAGE:
+ case INDEX_NEVER_TRANSLATE_LANGUAGE:
model_->SetNeverTranslateLanguage(true);
break;
- case TranslateDenialComboboxModel::INDEX_NEVER_TRANSLATE_SITE:
+ case INDEX_NEVER_TRANSLATE_SITE:
model_->SetNeverTranslateSite(true);
break;
default:
@@ -446,8 +412,19 @@ views::View* TranslateBubbleView::CreateViewBeforeTranslate() {
base::string16 original_language_name =
model_->GetLanguageNameAt(model_->GetOriginalLanguageIndex());
- denial_combobox_ = new views::Combobox(
- new TranslateDenialComboboxModel(original_language_name));
+
+ std::vector<base::string16> items;
+ items.push_back(l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_DENY));
+ items.push_back(base::string16());
+ items.push_back(l10n_util::GetStringFUTF16(
+ IDS_TRANSLATE_BUBBLE_NEVER_TRANSLATE_LANG,
+ original_language_name));
+ items.push_back(base::string16());
+ items.push_back(l10n_util::GetStringUTF16(
+ IDS_TRANSLATE_BUBBLE_NEVER_TRANSLATE_SITE));
+
+ denial_combobox_model_.reset(new ui::SimpleComboboxModel(items));
+ denial_combobox_ = new views::Combobox(denial_combobox_model_.get());
denial_combobox_->set_id(COMBOBOX_ID_DENIAL);
denial_combobox_->set_listener(this);
denial_combobox_->SetStyle(views::Combobox::STYLE_ACTION);
« no previous file with comments | « chrome/browser/ui/views/translate/translate_bubble_view.h ('k') | ui/base/models/simple_combobox_model.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698