1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file. 4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#ifndef UI_VIEWS_CONTROLS_MENU_MENU_RUNNER_IMPL_COCOA_H_ 6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define UI_VIEWS_CONTROLS_MENU_MENU_RUNNER_IMPL_COCOA_H_ 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "ui/views/controls/menu/menu_runner_impl_interface.h" 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#import "base/mac/scoped_nsobject.h" 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/time/time.h" 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch@class MenuController; 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace views { 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace internal { 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// A menu runner implementation that uses NSMenu to show a context menu. 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass VIEWS_EXPORT MenuRunnerImplCocoa : public MenuRunnerImplInterface { 20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public: 21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch explicit MenuRunnerImplCocoa(ui::MenuModel* menu); 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual bool IsRunning() const OVERRIDE; 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void Release() OVERRIDE; 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual MenuRunner::RunResult RunMenuAt(Widget* parent, 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch MenuButton* button, 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const gfx::Rect& bounds, 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch MenuAnchorPosition anchor, 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch int32 run_types) OVERRIDE; 30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void Cancel() OVERRIDE; 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual base::TimeDelta GetClosingEventTime() const OVERRIDE; 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private: 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual ~MenuRunnerImplCocoa(); 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // The Cocoa menu controller that this instance is bridging. 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch base::scoped_nsobject<MenuController> menu_controller_; 38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Set if |running_| and Release() has been invoked. 40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch bool delete_after_run_; 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // The timestamp of the event which closed the menu - or 0. 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch base::TimeDelta closing_event_time_; 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DISALLOW_COPY_AND_ASSIGN(MenuRunnerImplCocoa); 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}; 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace internal 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace views 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif // UI_VIEWS_CONTROLS_MENU_MENU_RUNNER_IMPL_COCOA_H_ 52