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.
5 #ifndef UI_VIEWS_CONTROLS_MENU_MENU_RUNNER_IMPL_COCOA_H_
6 #define UI_VIEWS_CONTROLS_MENU_MENU_RUNNER_IMPL_COCOA_H_
8 #include "ui/views/controls/menu/menu_runner_impl_interface.h"
10 #import "base/mac/scoped_nsobject.h"
11 #include "base/time/time.h"
13 @
class MenuController
;
18 // A menu runner implementation that uses NSMenu to show a context menu.
19 class VIEWS_EXPORT MenuRunnerImplCocoa
: public MenuRunnerImplInterface
{
21 explicit MenuRunnerImplCocoa(ui::MenuModel
* menu
);
23 bool IsRunning() const override
;
24 void Release() override
;
25 MenuRunner::RunResult
RunMenuAt(Widget
* parent
,
27 const gfx::Rect
& bounds
,
28 MenuAnchorPosition anchor
,
29 int32 run_types
) override
;
30 void Cancel() override
;
31 base::TimeDelta
GetClosingEventTime() const override
;
34 ~MenuRunnerImplCocoa() override
;
36 // The Cocoa menu controller that this instance is bridging.
37 base::scoped_nsobject
<MenuController
> menu_controller_
;
39 // Set if |running_| and Release() has been invoked.
40 bool delete_after_run_
;
42 // The timestamp of the event which closed the menu - or 0.
43 base::TimeDelta closing_event_time_
;
45 DISALLOW_COPY_AND_ASSIGN(MenuRunnerImplCocoa
);
48 } // namespace internal
51 #endif // UI_VIEWS_CONTROLS_MENU_MENU_RUNNER_IMPL_COCOA_H_