Index: chrome/browser/ui/views/menu_test_base.cc |
diff --git a/chrome/browser/ui/views/menu_test_base.cc b/chrome/browser/ui/views/menu_test_base.cc |
index da9ecdb66b8f78b9143c4fcf0f243a3091f4b7d7..c06ebfe1e3670dcb1b3fe8b9c0229c6105ab90c5 100644 |
--- a/chrome/browser/ui/views/menu_test_base.cc |
+++ b/chrome/browser/ui/views/menu_test_base.cc |
@@ -37,18 +37,26 @@ void MenuTestBase::KeyPress(ui::KeyboardCode keycode, |
false, false, next); |
} |
+int MenuTestBase::GetMenuRunnerFlags() { |
+ return views::MenuRunner::HAS_MNEMONICS; |
+} |
+ |
void MenuTestBase::SetUp() { |
button_ = new views::MenuButton( |
NULL, base::ASCIIToUTF16("Menu Test"), this, true); |
menu_ = new views::MenuItemView(this); |
BuildMenu(menu_); |
- menu_runner_.reset( |
- new views::MenuRunner(menu_, views::MenuRunner::HAS_MNEMONICS)); |
+ menu_runner_.reset(new views::MenuRunner(menu_, GetMenuRunnerFlags())); |
ViewEventTestBase::SetUp(); |
} |
void MenuTestBase::TearDown() { |
+ // We cancel the menu first because certain operations (like a menu opened |
+ // with views::MenuRunner::FOR_DROP) don't take kindly to simply pulling the |
+ // runner out from under them. |
+ menu_runner_->Cancel(); |
+ |
menu_runner_.reset(); |
menu_ = NULL; |
ViewEventTestBase::TearDown(); |