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_DELEGATE_H_ 6#define CONTENT_PUBLIC_BROWSER_WEB_CONTENTS_VIEW_DELEGATE_H_ 7 8#if defined(__OBJC__) 9#import <Cocoa/Cocoa.h> 10#endif 11 12#include "base/callback.h" 13#include "content/common/content_export.h" 14#include "ui/gfx/geometry/rect.h" 15#include "ui/gfx/native_widget_types.h" 16 17#if defined(__OBJC__) 18@protocol RenderWidgetHostViewMacDelegate; 19#endif 20 21namespace gfx { 22class Size; 23} 24 25namespace ui { 26class GestureEvent; 27class MouseEvent; 28} 29 30namespace content { 31class RenderFrameHost; 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(); 44 45 // Shows a context menu. 46 virtual void ShowContextMenu(RenderFrameHost* render_frame_host, 47 const ContextMenuParams& params); 48 49 // These methods allow the embedder to intercept a WebContentsView's 50 // implementation of these methods. See the WebContentsView interface 51 // documentation for more information about these methods. 52 virtual void StoreFocus(); 53 virtual void RestoreFocus(); 54 virtual bool Focus(); 55 virtual void TakeFocus(bool reverse); 56 virtual void SizeChanged(const gfx::Size& size); 57 58#if defined(TOOLKIT_VIEWS) || defined(USE_AURA) 59 // Shows a popup window containing the |zoomed_bitmap| of web content with 60 // more than one link, allowing the user to more easily select which link 61 // they were trying to touch. |target_rect| is the rectangle in DIPs in the 62 // coordinate system of |content| that has been scaled up in |zoomed_bitmap|. 63 // Should the popup receive any gesture events they should be translated back 64 // to the coordinate system of |content| and then provided to the |callback| 65 // for forwarding on to the original scale web content. 66 virtual void ShowDisambiguationPopup( 67 const gfx::Rect& target_rect, 68 const SkBitmap& zoomed_bitmap, 69 const gfx::NativeView content, 70 const base::Callback<void(ui::GestureEvent*)>& gesture_cb, 71 const base::Callback<void(ui::MouseEvent*)>& mouse_cb) = 0; 72 73 // Hides the link disambiguation popup window if it is showing, otherwise does 74 // nothing. 75 virtual void HideDisambiguationPopup() = 0; 76#endif 77 78 // Returns a newly-created delegate for the RenderWidgetHostViewMac, to handle 79 // events on the responder chain. 80#if defined(__OBJC__) 81 virtual NSObject<RenderWidgetHostViewMacDelegate>* 82 CreateRenderWidgetHostViewDelegate( 83 RenderWidgetHost* render_widget_host); 84#else 85 virtual void* CreateRenderWidgetHostViewDelegate( 86 RenderWidgetHost* render_widget_host); 87#endif 88}; 89 90} // namespace content 91 92#endif // CONTENT_PUBLIC_BROWSER_WEB_CONTENTS_VIEW_DELEGATE_H_ 93