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

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: Fix the order of the member variables 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
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..2cf26ceb1071737a424b841b9a9efb8a345d3f35 100644
--- a/chrome/browser/ui/views/translate/translate_bubble_view.cc
+++ b/chrome/browser/ui/views/translate/translate_bubble_view.cc
@@ -6,7 +6,6 @@
#include <algorithm>
#include <string>
-#include <vector>
#include "base/i18n/string_compare.h"
#include "base/memory/singleton.h"
@@ -19,6 +18,7 @@
#include "chrome/browser/translate/translate_service.h"
#include "chrome/browser/ui/chrome_pages.h"
#include "chrome/browser/ui/translate/translate_bubble_model_impl.h"
+#include "chrome/browser/ui/translate/translate_denial_combobox_model.h"
#include "chrome/common/url_constants.h"
#include "components/translate/core/browser/translate_download_manager.h"
#include "components/translate/core/browser/translate_manager.h"
@@ -59,47 +59,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
@@ -446,8 +405,9 @@ views::View* TranslateBubbleView::CreateViewBeforeTranslate() {
base::string16 original_language_name =
model_->GetLanguageNameAt(model_->GetOriginalLanguageIndex());
- denial_combobox_ = new views::Combobox(
+ denial_combobox_model_.reset(
new TranslateDenialComboboxModel(original_language_name));
+ denial_combobox_ = new views::Combobox(denial_combobox_model_.get());
sky 2014/06/17 16:30:38 I believe you need to explicitly destroy the combo
hajimehoshi 2014/06/18 08:33:37 |denial_combobox_model_| is initialized only once
sky 2014/06/18 16:57:19 I missed the explicit RemoveAlloChildViews(true).
denial_combobox_->set_id(COMBOBOX_ID_DENIAL);
denial_combobox_->set_listener(this);
denial_combobox_->SetStyle(views::Combobox::STYLE_ACTION);

Powered by Google App Engine
This is Rietveld 408576698