// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CONTENT_PUBLIC_BROWSER_WEB_CONTENTS_VIEW_WIN_DELEGATE_H_ #define CONTENT_PUBLIC_BROWSER_WEB_CONTENTS_VIEW_WIN_DELEGATE_H_ #if defined(TOOLKIT_GTK) #include #elif defined(OS_MACOSX) #import #endif #include "content/common/content_export.h" #include "ui/gfx/native_widget_types.h" #if defined(OS_MACOSX) @protocol RenderWidgetHostViewMacDelegate; #endif namespace gfx { class Size; } namespace ui { class FocusStoreGtk; } namespace content { class RenderWidgetHost; class WebDragDestDelegate; struct ContextMenuParams; // This interface allows a client to extend the functionality of the // WebContentsView implementation. class CONTENT_EXPORT WebContentsViewDelegate { public: virtual ~WebContentsViewDelegate() {} // Returns a delegate to process drags not handled by content. virtual WebDragDestDelegate* GetDragDestDelegate() = 0; // Shows a context menu. virtual void ShowContextMenu(const content::ContextMenuParams& params) = 0; #if defined(OS_WIN) || defined(USE_AURA) // These methods allow the embedder to intercept WebContentsViewWin's // implementation of these WebContentsView methods. See the WebContentsView // interface documentation for more information about these methods. virtual void StoreFocus() = 0; virtual void RestoreFocus() = 0; virtual bool Focus() = 0; virtual void TakeFocus(bool reverse) = 0; virtual void SizeChanged(const gfx::Size& size) = 0; #elif defined(TOOLKIT_GTK) // Initializes the WebContentsViewDelegate. virtual void Initialize(GtkWidget* expanded_container, ui::FocusStoreGtk* focus_store) = 0; // Returns the top widget that contains |view| passed in from WrapView. This // is exposed through WebContentsViewGtk::GetNativeView() when a wrapper is // supplied to a WebContentsViewGtk. virtual gfx::NativeView GetNativeView() const = 0; // Handles a focus event from the renderer process. virtual void Focus() = 0; // Gives the delegate a first chance at focus events from our render widget // host, before the main view invokes its default behaviour. Returns TRUE if // |return_value| has been set and that value should be returned to GTK+. virtual gboolean OnNativeViewFocusEvent(GtkWidget* widget, GtkDirectionType type, gboolean* return_value) = 0; #elif defined(OS_MACOSX) // Returns a newly-created delegate for the RenderWidgetHostViewMac, to handle // events on the responder chain. virtual NSObject* CreateRenderWidgetHostViewDelegate( RenderWidgetHost* render_widget_host) = 0; #endif }; } // namespace content #endif // CONTENT_PUBLIC_BROWSER_WEB_CONTENTS_VIEW_WIN_DELEGATE_H_