web_contents_view_delegate.h revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
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_PUBLIC_BROWSER_WEB_CONTENTS_VIEW_DELEGATE_H_
6#define CONTENT_PUBLIC_BROWSER_WEB_CONTENTS_VIEW_DELEGATE_H_
7
8#if defined(__OBJC__)
9#import <Cocoa/Cocoa.h>
10#endif
11
12#include "base/callback.h"
13#include "content/common/content_export.h"
14#include "ui/gfx/geometry/rect.h"
15#include "ui/gfx/native_widget_types.h"
16
17#if defined(__OBJC__)
18@protocol RenderWidgetHostViewMacDelegate;
19#endif
20
21namespace gfx {
22class Size;
23}
24
25namespace ui {
26class GestureEvent;
27class MouseEvent;
28}
29
30namespace content {
31class RenderFrameHost;
32class RenderWidgetHost;
33class WebDragDestDelegate;
34struct ContextMenuParams;
35
36// This interface allows a client to extend the functionality of the
37// WebContentsView implementation.
38class CONTENT_EXPORT WebContentsViewDelegate {
39 public:
40  virtual ~WebContentsViewDelegate();
41
42  // Returns a delegate to process drags not handled by content.
43  virtual WebDragDestDelegate* GetDragDestDelegate();
44
45  // Shows a context menu.
46  virtual void ShowContextMenu(RenderFrameHost* render_frame_host,
47                               const ContextMenuParams& params);
48
49  // These methods allow the embedder to intercept a WebContentsView's
50  // implementation of these methods. See the WebContentsView interface
51  // documentation for more information about these methods.
52  virtual void StoreFocus();
53  virtual void RestoreFocus();
54  virtual bool Focus();
55  virtual void TakeFocus(bool reverse);
56  virtual void SizeChanged(const gfx::Size& size);
57
58#if defined(TOOLKIT_VIEWS) || defined(USE_AURA)
59  // Shows a popup window containing the |zoomed_bitmap| of web content with
60  // more than one link, allowing the user to more easily select which link
61  // they were trying to touch. |target_rect| is the rectangle in DIPs in the
62  // coordinate system of |content| that has been scaled up in |zoomed_bitmap|.
63  // Should the popup receive any gesture events they should be translated back
64  // to the coordinate system of |content| and then provided to the |callback|
65  // for forwarding on to the original scale web content.
66  virtual void ShowDisambiguationPopup(
67      const gfx::Rect& target_rect,
68      const SkBitmap& zoomed_bitmap,
69      const gfx::NativeView content,
70      const base::Callback<void(ui::GestureEvent*)>& gesture_cb,
71      const base::Callback<void(ui::MouseEvent*)>& mouse_cb) = 0;
72
73  // Hides the link disambiguation popup window if it is showing, otherwise does
74  // nothing.
75  virtual void HideDisambiguationPopup() = 0;
76#endif
77
78  // Returns a newly-created delegate for the RenderWidgetHostViewMac, to handle
79  // events on the responder chain.
80#if defined(__OBJC__)
81  virtual NSObject<RenderWidgetHostViewMacDelegate>*
82      CreateRenderWidgetHostViewDelegate(
83          RenderWidgetHost* render_widget_host);
84#else
85  virtual void* CreateRenderWidgetHostViewDelegate(
86      RenderWidgetHost* render_widget_host);
87#endif
88};
89
90}  // namespace content
91
92#endif  // CONTENT_PUBLIC_BROWSER_WEB_CONTENTS_VIEW_DELEGATE_H_
93