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: 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