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 CHROME_BROWSER_UI_VIEWS_RENDERER_CONTEXT_MENU_RENDER_VIEW_CONTEXT_MENU_VIEWS_H_
6#define CHROME_BROWSER_UI_VIEWS_RENDERER_CONTEXT_MENU_RENDER_VIEW_CONTEXT_MENU_VIEWS_H_
7
8#include "base/memory/scoped_ptr.h"
9#include "base/memory/scoped_vector.h"
10#include "base/strings/string16.h"
11#include "chrome/browser/renderer_context_menu/render_view_context_menu.h"
12#include "ui/base/ui_base_types.h"
13
14namespace gfx {
15class Point;
16}
17
18namespace views {
19class MenuRunner;
20class Widget;
21}
22
23class RenderViewContextMenuViews : public RenderViewContextMenu {
24 public:
25  virtual ~RenderViewContextMenuViews();
26
27  // Factory function to create an instance.
28  static RenderViewContextMenuViews* Create(
29      content::RenderFrameHost* render_frame_host,
30      const content::ContextMenuParams& params);
31
32  void RunMenuAt(views::Widget* parent,
33                 const gfx::Point& point,
34                 ui::MenuSourceType type);
35
36  // RenderViewContextMenuDelegate implementation.
37  virtual void UpdateMenuItem(int command_id,
38                              bool enabled,
39                              bool hidden,
40                              const base::string16& title) OVERRIDE;
41
42  virtual void ExecuteCommand(int command_id, int event_flags) OVERRIDE;
43
44 protected:
45  RenderViewContextMenuViews(content::RenderFrameHost* render_frame_host,
46                             const content::ContextMenuParams& params);
47
48  // RenderViewContextMenu implementation.
49  virtual void PlatformInit() OVERRIDE;
50  virtual void PlatformCancel() OVERRIDE;
51  virtual bool GetAcceleratorForCommandId(
52      int command_id,
53      ui::Accelerator* accelerator) OVERRIDE;
54
55 private:
56  virtual void AppendPlatformEditableItems() OVERRIDE;
57  virtual bool IsCommandIdChecked(int command_id) const OVERRIDE;
58  virtual bool IsCommandIdEnabled(int command_id) const OVERRIDE;
59
60  // Model for the BiDi input submenu.
61  ui::SimpleMenuModel bidi_submenu_model_;
62
63  scoped_ptr<views::MenuRunner> menu_runner_;
64
65  DISALLOW_COPY_AND_ASSIGN(RenderViewContextMenuViews);
66};
67
68#endif  // CHROME_BROWSER_UI_VIEWS_RENDERER_CONTEXT_MENU_RENDER_VIEW_CONTEXT_MENU_VIEWS_H_
69