Index: ui/views/controls/menu/menu_runner.h |
diff --git a/ui/views/controls/menu/menu_runner.h b/ui/views/controls/menu/menu_runner.h |
index 277ffd5334a41005ec75d84762cc579fadb4c6d5..6b46362f18e76431451d4a786190e05a6b69be7a 100644 |
--- a/ui/views/controls/menu/menu_runner.h |
+++ b/ui/views/controls/menu/menu_runner.h |
@@ -18,6 +18,7 @@ namespace views { |
class MenuButton; |
class MenuModelAdapter; |
+class MenuRunnerHandler; |
class Widget; |
namespace internal { |
@@ -25,6 +26,10 @@ class DisplayChangeListener; |
class MenuRunnerImpl; |
} |
+namespace test { |
+class MenuRunnerTestAPI; |
+} |
+ |
// MenuRunner is responsible for showing (running) the menu and additionally |
// owning the MenuItemView. RunMenuAt() runs a nested message loop. It is safe |
// to delete MenuRunner at any point, but MenuRunner internally only deletes the |
@@ -112,10 +117,19 @@ class VIEWS_EXPORT MenuRunner { |
base::TimeDelta closing_event_time() const; |
private: |
+ friend class test::MenuRunnerTestAPI; |
+ |
+ // Sets an implementation of RunMenuAt. This is intended to be used at test. |
+ void SetRunnerHandler(scoped_ptr<MenuRunnerHandler> runner_handler); |
+ |
scoped_ptr<MenuModelAdapter> menu_model_adapter_; |
internal::MenuRunnerImpl* holder_; |
+ // An implementation of RunMenuAt. This is usually NULL and ignored. If this |
+ // is not NULL, this implementation will be used. |
+ scoped_ptr<MenuRunnerHandler> runner_handler_; |
+ |
scoped_ptr<internal::DisplayChangeListener> display_change_listener_; |
DISALLOW_COPY_AND_ASSIGN(MenuRunner); |