15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifndef CONTENT_PUBLIC_BROWSER_WEB_CONTENTS_VIEW_DELEGATE_H_ 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define CONTENT_PUBLIC_BROWSER_WEB_CONTENTS_VIEW_DELEGATE_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(__OBJC__) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#import <Cocoa/Cocoa.h> 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/callback.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/content_export.h" 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "ui/gfx/geometry/rect.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/native_widget_types.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(__OBJC__) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@protocol RenderWidgetHostViewMacDelegate; 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace gfx { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Size; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ui { 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass GestureEvent; 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass MouseEvent; 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class RenderFrameHost; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RenderWidgetHost; 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebDragDestDelegate; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ContextMenuParams; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This interface allows a client to extend the functionality of the 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// WebContentsView implementation. 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CONTENT_EXPORT WebContentsViewDelegate { 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual ~WebContentsViewDelegate(); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns a delegate to process drags not handled by content. 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual WebDragDestDelegate* GetDragDestDelegate(); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shows a context menu. 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void ShowContextMenu(RenderFrameHost* render_frame_host, 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ContextMenuParams& params); 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // These methods allow the embedder to intercept a WebContentsView's 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // implementation of these methods. See the WebContentsView interface 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // documentation for more information about these methods. 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void StoreFocus(); 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void RestoreFocus(); 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual bool Focus(); 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void TakeFocus(bool reverse); 561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void SizeChanged(const gfx::Size& size); 571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(TOOLKIT_VIEWS) || defined(USE_AURA) 591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Shows a popup window containing the |zoomed_bitmap| of web content with 601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // more than one link, allowing the user to more easily select which link 611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // they were trying to touch. |target_rect| is the rectangle in DIPs in the 621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // coordinate system of |content| that has been scaled up in |zoomed_bitmap|. 631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Should the popup receive any gesture events they should be translated back 641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // to the coordinate system of |content| and then provided to the |callback| 651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // for forwarding on to the original scale web content. 661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void ShowDisambiguationPopup( 671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const gfx::Rect& target_rect, 681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const SkBitmap& zoomed_bitmap, 691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const gfx::NativeView content, 701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const base::Callback<void(ui::GestureEvent*)>& gesture_cb, 711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const base::Callback<void(ui::MouseEvent*)>& mouse_cb) = 0; 721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Hides the link disambiguation popup window if it is showing, otherwise does 741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // nothing. 751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void HideDisambiguationPopup() = 0; 761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif 771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns a newly-created delegate for the RenderWidgetHostViewMac, to handle 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // events on the responder chain. 801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(__OBJC__) 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual NSObject<RenderWidgetHostViewMacDelegate>* 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CreateRenderWidgetHostViewDelegate( 831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci RenderWidgetHost* render_widget_host); 841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#else 851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void* CreateRenderWidgetHostViewDelegate( 861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci RenderWidgetHost* render_widget_host); 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace content 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif // CONTENT_PUBLIC_BROWSER_WEB_CONTENTS_VIEW_DELEGATE_H_ 93