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 COMPONENTS_RENDERER_CONTEXT_MENU_RENDER_TOOLKIT_DELEGATE_VIEWS_H_
6#define COMPONENTS_RENDERER_CONTEXT_MENU_RENDER_TOOLKIT_DELEGATE_VIEWS_H_
7
8#include "components/renderer_context_menu/render_view_context_menu_base.h"
9#include "ui/base/ui_base_types.h"
10
11namespace gfx {
12class Point;
13}
14
15namespace views {
16class MenuItemView;
17class MenuModelAdapter;
18class MenuRunner;
19class Widget;
20}
21
22namespace ui {
23class SimpleMenuModel;
24}
25
26class ToolkitDelegateViews : public RenderViewContextMenuBase::ToolkitDelegate {
27 public:
28  ToolkitDelegateViews();
29  virtual ~ToolkitDelegateViews();
30
31  void RunMenuAt(views::Widget* parent,
32                 const gfx::Point& point,
33                 ui::MenuSourceType type);
34
35 private:
36  // ToolkitDelegate:
37  virtual void Init(ui::SimpleMenuModel* menu_model) OVERRIDE;
38  virtual void Cancel() OVERRIDE;
39  virtual void UpdateMenuItem(int command_id,
40                              bool enabled,
41                              bool hidden,
42                              const base::string16& title) OVERRIDE;
43
44  scoped_ptr<views::MenuModelAdapter> menu_adapter_;
45  scoped_ptr<views::MenuRunner> menu_runner_;
46
47  // Weak. Owned by menu_runner_;
48  views::MenuItemView* menu_view_;
49
50  DISALLOW_COPY_AND_ASSIGN(ToolkitDelegateViews);
51};
52
53#endif  // COMPONENTS_RENDERER_CONTEXT_MENU_RENDER_TOOLKIT_DELEGATE_VIEWS_H_
54