Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / ui / views / controls / menu / menu_runner_impl_cocoa.h
blob56f99843a209e8d1794e00c805abcf206c41c636
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;
15 namespace views {
16 namespace internal {
18 // A menu runner implementation that uses NSMenu to show a context menu.
19 class VIEWS_EXPORT MenuRunnerImplCocoa : public MenuRunnerImplInterface {
20 public:
21 explicit MenuRunnerImplCocoa(ui::MenuModel* menu);
23 bool IsRunning() const override;
24 void Release() override;
25 MenuRunner::RunResult RunMenuAt(Widget* parent,
26 MenuButton* button,
27 const gfx::Rect& bounds,
28 MenuAnchorPosition anchor,
29 int32 run_types) override;
30 void Cancel() override;
31 base::TimeDelta GetClosingEventTime() const override;
33 private:
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
49 } // namespace views
51 #endif // UI_VIEWS_CONTROLS_MENU_MENU_RUNNER_IMPL_COCOA_H_