render_view_host_delegate_view.h revision 010d83a9304c5a91596085d917d248abff47903a
1// Copyright (c) 2012 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 CONTENT_BROWSER_RENDERER_HOST_RENDER_VIEW_HOST_DELEGATE_VIEW_H_
6#define CONTENT_BROWSER_RENDERER_HOST_RENDER_VIEW_HOST_DELEGATE_VIEW_H_
7
8#include <vector>
9
10#include "base/basictypes.h"
11#include "content/common/content_export.h"
12#include "content/common/drag_event_source_info.h"
13#include "third_party/WebKit/public/web/WebDragOperation.h"
14
15class SkBitmap;
16
17namespace gfx {
18class ImageSkia;
19class Rect;
20class Vector2d;
21}
22
23namespace content {
24class RenderFrameHost;
25struct ContextMenuParams;
26struct DropData;
27struct MenuItem;
28
29// This class provides a way for the RenderViewHost to reach out to its
30// delegate's view. It only needs to be implemented by embedders if they don't
31// use the default WebContentsView implementations.
32class CONTENT_EXPORT RenderViewHostDelegateView {
33 public:
34  // A context menu should be shown, to be built using the context information
35  // provided in the supplied params.
36  virtual void ShowContextMenu(RenderFrameHost* render_frame_host,
37                               const ContextMenuParams& params) {}
38
39  // Shows a popup menu with the specified items.
40  // This method should call RenderViewHost::DidSelectPopupMenuItem[s]() or
41  // RenderViewHost::DidCancelPopupMenu() based on the user action.
42  virtual void ShowPopupMenu(const gfx::Rect& bounds,
43                             int item_height,
44                             double item_font_size,
45                             int selected_item,
46                             const std::vector<MenuItem>& items,
47                             bool right_aligned,
48                             bool allow_multiple_selection) {};
49
50  // Hides a popup menu opened by ShowPopupMenu().
51  virtual void HidePopupMenu() {};
52
53  // The user started dragging content of the specified type within the
54  // RenderView. Contextual information about the dragged content is supplied
55  // by DropData. If the delegate's view cannot start the drag for /any/
56  // reason, it must inform the renderer that the drag has ended; otherwise,
57  // this results in bugs like http://crbug.com/157134.
58  virtual void StartDragging(const DropData& drop_data,
59                             blink::WebDragOperationsMask allowed_ops,
60                             const gfx::ImageSkia& image,
61                             const gfx::Vector2d& image_offset,
62                             const DragEventSourceInfo& event_info) {}
63
64  // The page wants to update the mouse cursor during a drag & drop operation.
65  // |operation| describes the current operation (none, move, copy, link.)
66  virtual void UpdateDragCursor(blink::WebDragOperation operation) {}
67
68  // Notification that view for this delegate got the focus.
69  virtual void GotFocus() {}
70
71  // Callback to inform the browser that the page is returning the focus to
72  // the browser's chrome. If reverse is true, it means the focus was
73  // retrieved by doing a Shift-Tab.
74  virtual void TakeFocus(bool reverse) {}
75
76 protected:
77  virtual ~RenderViewHostDelegateView() {}
78};
79
80}  // namespace content
81
82#endif  // CONTENT_BROWSER_RENDERER_HOST_RENDER_VIEW_HOST_DELEGATE_VIEW_H_
83