Index: chrome/browser/views/extensions/browser_action_overflow_menu_controller.cc |
=================================================================== |
--- chrome/browser/views/extensions/browser_action_overflow_menu_controller.cc (revision 41960) |
+++ chrome/browser/views/extensions/browser_action_overflow_menu_controller.cc (working copy) |
@@ -7,12 +7,14 @@ |
#include "app/gfx/canvas.h" |
#include "base/utf_string_conversions.h" |
#include "chrome/browser/browser_list.h" |
+#include "chrome/browser/extensions/extension_context_menu_model.h" |
#include "chrome/browser/profile.h" |
#include "chrome/browser/tab_contents/tab_contents.h" |
#include "chrome/browser/views/browser_actions_container.h" |
#include "chrome/browser/views/extensions/browser_action_drag_data.h" |
#include "chrome/common/extensions/extension.h" |
#include "views/controls/menu/menu_item_view.h" |
+#include "views/controls/menu/menu_2.h" |
BrowserActionOverflowMenuController::BrowserActionOverflowMenuController( |
BrowserActionsContainer* owner, |
@@ -70,7 +72,9 @@ |
menu_->RunMenuForDropAt(window, bounds, anchor); |
} else { |
menu_->RunMenuAt(window, menu_button_, bounds, anchor, false); |
- delete this; |
+ // Give the context menu (if any) a chance to execute the user-selected |
+ // command. |
+ MessageLoop::current()->DeleteSoon(FROM_HERE, this); |
} |
return true; |
} |
@@ -90,13 +94,13 @@ |
int id, |
const gfx::Point& p, |
bool is_mouse_gesture) { |
+ context_menu_contents_.reset(new ExtensionContextMenuModel( |
+ (*views_)[start_index_ + id - 1]->button()->extension(), |
+ owner_->browser(), |
+ owner_)); |
+ context_menu_menu_.reset(new views::Menu2(context_menu_contents_.get())); |
// This blocks until the user choses something or dismisses the menu. |
- owner_->GetContextMenu()->Run( |
- (*views_)[start_index_ + id - 1]->button()->extension(), |
- (*views_)[start_index_ + id - 1]->button()->extension()->browser_action(), |
- owner_, |
- owner_->profile()->GetPrefs(), |
- p); |
+ context_menu_menu_->RunContextMenuAt(p); |
// The user is done with the context menu, so we can close the underlying |
// menu. |