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

Unified Diff: chrome/browser/chromeos/status/memory_menu_button.cc

Issue 7720012: Moves ownership of MenuItemView to MenuRunner as well as responbility (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix unit test Created 9 years, 4 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/status/memory_menu_button.cc
diff --git a/chrome/browser/chromeos/status/memory_menu_button.cc b/chrome/browser/chromeos/status/memory_menu_button.cc
index 02f3495cde1920af5e290368b7ba1fdc3b832b2b..291fa6742f6444822080444b92f8e9f937d27060 100644
--- a/chrome/browser/chromeos/status/memory_menu_button.cc
+++ b/chrome/browser/chromeos/status/memory_menu_button.cc
@@ -15,6 +15,7 @@
#include "content/common/notification_service.h"
#include "grit/generated_resources.h"
#include "ui/base/l10n/l10n_util.h"
+#include "views/controls/menu/menu_runner.h"
#include "views/widget/widget.h"
#if defined(USE_TCMALLOC)
@@ -211,38 +212,35 @@ void MemoryMenuButton::RunMenu(views::View* source, const gfx::Point& pt) {
// View passed in must be a views::MenuButton, i.e. the MemoryMenuButton.
DCHECK_EQ(source, this);
- EnsureMenu();
-
+ views::MenuRunner menu_runner(CreateMenu());
gfx::Point screen_location;
views::View::ConvertPointToScreen(source, &screen_location);
gfx::Rect bounds(screen_location, source->size());
- menu_->RunMenuAt(
- source->GetWidget()->GetTopLevelWidget(),
- this,
- bounds,
- views::MenuItemView::TOPRIGHT,
- true);
+ if (menu_runner.RunMenuAt(
+ source->GetWidget()->GetTopLevelWidget(), this, bounds,
+ views::MenuItemView::TOPRIGHT, views::MenuRunner::HAS_MNEMONICS) ==
+ views::MenuRunner::MENU_DELETED)
+ return;
}
-// MemoryMenuButton, views::View implementation:
-
-void MemoryMenuButton::EnsureMenu() {
+views::MenuItemView* MemoryMenuButton::CreateMenu() {
// Just rebuild the menu each time to ensure the labels are up-to-date.
- menu_.reset(new views::MenuItemView(this));
+ views::MenuItemView* menu = new views::MenuItemView(this);
// Text for these items will be set by GetLabel().
- menu_->AppendDelegateMenuItem(MEM_TOTAL_ITEM);
- menu_->AppendDelegateMenuItem(MEM_FREE_ITEM);
- menu_->AppendDelegateMenuItem(MEM_BUFFERS_ITEM);
- menu_->AppendDelegateMenuItem(MEM_CACHE_ITEM);
- menu_->AppendDelegateMenuItem(SHMEM_ITEM);
- menu_->AppendSeparator();
- menu_->AppendDelegateMenuItem(PURGE_MEMORY_ITEM);
+ menu->AppendDelegateMenuItem(MEM_TOTAL_ITEM);
+ menu->AppendDelegateMenuItem(MEM_FREE_ITEM);
+ menu->AppendDelegateMenuItem(MEM_BUFFERS_ITEM);
+ menu->AppendDelegateMenuItem(MEM_CACHE_ITEM);
+ menu->AppendDelegateMenuItem(SHMEM_ITEM);
+ menu->AppendSeparator();
+ menu->AppendDelegateMenuItem(PURGE_MEMORY_ITEM);
#if defined(USE_TCMALLOC)
- menu_->AppendSeparator();
- menu_->AppendDelegateMenuItem(TOGGLE_PROFILING_ITEM);
+ menu->AppendSeparator();
+ menu->AppendDelegateMenuItem(TOGGLE_PROFILING_ITEM);
if (IsHeapProfilerRunning())
- menu_->AppendDelegateMenuItem(DUMP_PROFILING_ITEM);
+ menu->AppendDelegateMenuItem(DUMP_PROFILING_ITEM);
#endif
+ return menu;
}
/////////////////////////////////////////////////////////////////////////////

Powered by Google App Engine
This is Rietveld 408576698