• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_WIN_DELEGATE_H_
6 #define CONTENT_PUBLIC_BROWSER_WEB_CONTENTS_VIEW_WIN_DELEGATE_H_
7 
8 #if defined(TOOLKIT_GTK)
9 #include <gtk/gtk.h>
10 #elif defined(OS_MACOSX)
11 #import <Cocoa/Cocoa.h>
12 #endif
13 
14 #include "content/common/content_export.h"
15 #include "ui/gfx/native_widget_types.h"
16 
17 #if defined(OS_MACOSX)
18 @protocol RenderWidgetHostViewMacDelegate;
19 #endif
20 
21 namespace gfx {
22 class Size;
23 }
24 
25 namespace ui {
26 class FocusStoreGtk;
27 }
28 
29 namespace content {
30 
31 class RenderWidgetHost;
32 class WebDragDestDelegate;
33 struct ContextMenuParams;
34 
35 // This interface allows a client to extend the functionality of the
36 // WebContentsView implementation.
37 class CONTENT_EXPORT WebContentsViewDelegate {
38  public:
~WebContentsViewDelegate()39   virtual ~WebContentsViewDelegate() {}
40 
41   // Returns a delegate to process drags not handled by content.
42   virtual WebDragDestDelegate* GetDragDestDelegate() = 0;
43 
44   // Shows a context menu.
45   virtual void ShowContextMenu(const content::ContextMenuParams& params) = 0;
46 
47 #if defined(OS_WIN) || defined(USE_AURA)
48   // These methods allow the embedder to intercept WebContentsViewWin's
49   // implementation of these WebContentsView methods. See the WebContentsView
50   // interface documentation for more information about these methods.
51   virtual void StoreFocus() = 0;
52   virtual void RestoreFocus() = 0;
53   virtual bool Focus() = 0;
54   virtual void TakeFocus(bool reverse) = 0;
55   virtual void SizeChanged(const gfx::Size& size) = 0;
56 #elif defined(TOOLKIT_GTK)
57   // Initializes the WebContentsViewDelegate.
58   virtual void Initialize(GtkWidget* expanded_container,
59                           ui::FocusStoreGtk* focus_store) = 0;
60 
61   // Returns the top widget that contains |view| passed in from WrapView. This
62   // is exposed through WebContentsViewGtk::GetNativeView() when a wrapper is
63   // supplied to a WebContentsViewGtk.
64   virtual gfx::NativeView GetNativeView() const = 0;
65 
66   // Handles a focus event from the renderer process.
67   virtual void Focus() = 0;
68 
69   // Gives the delegate a first chance at focus events from our render widget
70   // host, before the main view invokes its default behaviour. Returns TRUE if
71   // |return_value| has been set and that value should be returned to GTK+.
72   virtual gboolean OnNativeViewFocusEvent(GtkWidget* widget,
73                                           GtkDirectionType type,
74                                           gboolean* return_value) = 0;
75 #elif defined(OS_MACOSX)
76   // Returns a newly-created delegate for the RenderWidgetHostViewMac, to handle
77   // events on the responder chain.
78   virtual NSObject<RenderWidgetHostViewMacDelegate>*
79       CreateRenderWidgetHostViewDelegate(
80           RenderWidgetHost* render_widget_host) = 0;
81 #endif
82 };
83 
84 }  // namespace content
85 
86 #endif  // CONTENT_PUBLIC_BROWSER_WEB_CONTENTS_VIEW_WIN_DELEGATE_H_
87