web_contents_view_delegate.h revision 7d4cd473f85ac64c3747c96c277f9e506a0d2246
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 "content/public/common/context_menu_source_type.h" 16#include "ui/gfx/native_widget_types.h" 17 18#if defined(OS_MACOSX) 19@protocol RenderWidgetHostViewMacDelegate; 20#endif 21 22namespace gfx { 23class Size; 24} 25 26namespace ui { 27class FocusStoreGtk; 28} 29 30namespace content { 31 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() = 0; 44 45 // Shows a context menu. 46 virtual void ShowContextMenu(const content::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