Index: ui/views/controls/menu/menu_message_loop_aura.h |
diff --git a/ui/views/controls/menu/menu_message_loop_aura.h b/ui/views/controls/menu/menu_message_loop_aura.h |
index 80485e945a6525cfc86c191a1592bdd6ff12723a..968aa5f24923675e8ebd9cda4f8da3f462700698 100644 |
--- a/ui/views/controls/menu/menu_message_loop_aura.h |
+++ b/ui/views/controls/menu/menu_message_loop_aura.h |
@@ -5,9 +5,13 @@ |
#ifndef UI_VIEWS_CONTROLS_MENU_MENU_MESSAGE_LOOP_AURA_H_ |
#define UI_VIEWS_CONTROLS_MENU_MENU_MESSAGE_LOOP_AURA_H_ |
+#include <map> |
+#include <stack> |
+ |
#include "base/callback.h" |
#include "base/compiler_specific.h" |
#include "base/memory/scoped_ptr.h" |
+#include "ui/views/controls/menu/menu_event_filter.h" |
#include "ui/views/controls/menu/menu_message_loop.h" |
namespace base { |
@@ -40,6 +44,16 @@ class MenuMessageLoopAura : public MenuMessageLoop { |
// WARNING: this may be NULL. |
Widget* owner_; |
+ scoped_ptr<MenuEventFilter> menu_event_filter_; |
+ |
+ // Maps the IDs of the created nested RunLoops to whether their corresponding |
+ // QuitNow() functions have been called or not. This is needed to avoid |
+ // calling QuitNow() multiple times while the same Runloop is running until it |
+ // actually exits. |
+ using RunLoopId = int; |
+ std::stack<RunLoopId> run_loop_ids_stack_; |
+ std::map<RunLoopId, bool> run_loops_status_; |
+ |
base::Closure message_loop_quit_; |
DISALLOW_COPY_AND_ASSIGN(MenuMessageLoopAura); |