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_RUNNER_IMPL_ADAPTER_H_
6#define UI_VIEWS_CONTROLS_MENU_MENU_RUNNER_IMPL_ADAPTER_H_
7
8#include "ui/views/controls/menu/menu_runner_impl_interface.h"
9
10namespace views {
11namespace internal {
12
13class MenuRunnerImpl;
14
15// Given a MenuModel, adapts MenuRunnerImpl which expects a MenuItemView.
16class MenuRunnerImplAdapter : public MenuRunnerImplInterface {
17 public:
18  explicit MenuRunnerImplAdapter(ui::MenuModel* menu_model);
19
20  // MenuRunnerImplInterface:
21  virtual bool IsRunning() const OVERRIDE;
22  virtual void Release() OVERRIDE;
23  virtual MenuRunner::RunResult RunMenuAt(Widget* parent,
24                                          MenuButton* button,
25                                          const gfx::Rect& bounds,
26                                          MenuAnchorPosition anchor,
27                                          int32 types) OVERRIDE;
28  virtual void Cancel() OVERRIDE;
29  virtual base::TimeDelta GetClosingEventTime() const OVERRIDE;
30
31 private:
32  virtual ~MenuRunnerImplAdapter();
33
34  scoped_ptr<MenuModelAdapter> menu_model_adapter_;
35  MenuRunnerImpl* impl_;
36
37  DISALLOW_COPY_AND_ASSIGN(MenuRunnerImplAdapter);
38};
39
40}  // namespace internal
41}  // namespace views
42
43#endif  // UI_VIEWS_CONTROLS_MENU_MENU_RUNNER_IMPL_ADAPTER_H_
44