1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef UI_VIEWS_CONTROLS_MENU_MENU_MESSAGE_LOOP_AURA_H_ 6 #define UI_VIEWS_CONTROLS_MENU_MENU_MESSAGE_LOOP_AURA_H_ 7 8 #include "base/callback.h" 9 #include "base/compiler_specific.h" 10 #include "base/memory/scoped_ptr.h" 11 #include "ui/views/controls/menu/menu_message_loop.h" 12 13 namespace base { 14 class MessagePumpDispatcher; 15 } 16 17 namespace ui { 18 class ScopedEventDispatcher; 19 } 20 21 namespace views { 22 23 class MenuMessageLoopAura : public MenuMessageLoop { 24 public: 25 MenuMessageLoopAura(); 26 virtual ~MenuMessageLoopAura(); 27 28 // Overridden from MenuMessageLoop: 29 virtual void Run(MenuController* controller, 30 Widget* owner, 31 bool nested_menu) OVERRIDE; 32 virtual bool ShouldQuitNow() const OVERRIDE; 33 virtual void QuitNow() OVERRIDE; 34 virtual void RepostEventToWindow(const ui::LocatedEvent& event, 35 gfx::NativeWindow window, 36 const gfx::Point& screen_loc) OVERRIDE; 37 virtual void ClearOwner() OVERRIDE; 38 39 private: 40 // Owner of child windows. 41 // WARNING: this may be NULL. 42 Widget* owner_; 43 44 scoped_ptr<ui::ScopedEventDispatcher> nested_dispatcher_; 45 base::Closure message_loop_quit_; 46 47 DISALLOW_COPY_AND_ASSIGN(MenuMessageLoopAura); 48 }; 49 50 } // namespace views 51 52 #endif // UI_VIEWS_CONTROLS_MENU_MENU_MESSAGE_LOOP_AURA_H_ 53