web_contents_view_delegate.h revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
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 21namespace gfx { 22class Size; 23} 24 25namespace ui { 26class FocusStoreGtk; 27} 28 29namespace content { 30class RenderFrameHost; 31class RenderWidgetHost; 32class WebDragDestDelegate; 33struct ContextMenuParams; 34 35// This interface allows a client to extend the functionality of the 36// WebContentsView implementation. 37class 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(RenderFrameHost* render_frame_host, 46 const ContextMenuParams& params) = 0; 47 48#if defined(OS_WIN) || defined(USE_AURA) 49 // These methods allow the embedder to intercept WebContentsViewWin's 50 // implementation of these WebContentsView methods. See the WebContentsView 51 // interface documentation for more information about these methods. 52 virtual void StoreFocus() = 0; 53 virtual void RestoreFocus() = 0; 54 virtual bool Focus() = 0; 55 virtual void TakeFocus(bool reverse) = 0; 56 virtual void SizeChanged(const gfx::Size& size) = 0; 57#elif defined(TOOLKIT_GTK) 58 // Initializes the WebContentsViewDelegate. 59 virtual void Initialize(GtkWidget* expanded_container, 60 ui::FocusStoreGtk* focus_store) = 0; 61 62 // Returns the top widget that contains |view| passed in from WrapView. This 63 // is exposed through WebContentsViewGtk::GetNativeView() when a wrapper is 64 // supplied to a WebContentsViewGtk. 65 virtual gfx::NativeView GetNativeView() const = 0; 66 67 // Handles a focus event from the renderer process. 68 virtual void Focus() = 0; 69 70 // Gives the delegate a first chance at focus events from our render widget 71 // host, before the main view invokes its default behaviour. Returns TRUE if 72 // |return_value| has been set and that value should be returned to GTK+. 73 virtual gboolean OnNativeViewFocusEvent(GtkWidget* widget, 74 GtkDirectionType type, 75 gboolean* return_value) = 0; 76#elif defined(OS_MACOSX) 77 // Returns a newly-created delegate for the RenderWidgetHostViewMac, to handle 78 // events on the responder chain. 79 virtual NSObject<RenderWidgetHostViewMacDelegate>* 80 CreateRenderWidgetHostViewDelegate( 81 RenderWidgetHost* render_widget_host) = 0; 82#endif 83}; 84 85} // namespace content 86 87#endif // CONTENT_PUBLIC_BROWSER_WEB_CONTENTS_VIEW_WIN_DELEGATE_H_ 88