render_view_host_delegate_view.h revision 010d83a9304c5a91596085d917d248abff47903a
16a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com// Copyright (c) 2012 The Chromium Authors. All rights reserved. 26a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com// Use of this source code is governed by a BSD-style license that can be 36a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com// found in the LICENSE file. 46a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com 56a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com#ifndef CONTENT_BROWSER_RENDERER_HOST_RENDER_VIEW_HOST_DELEGATE_VIEW_H_ 66a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com#define CONTENT_BROWSER_RENDERER_HOST_RENDER_VIEW_HOST_DELEGATE_VIEW_H_ 76a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com 86a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com#include <vector> 96a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com 106a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com#include "base/basictypes.h" 116a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com#include "content/common/content_export.h" 126a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com#include "content/common/drag_event_source_info.h" 136a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com#include "third_party/WebKit/public/web/WebDragOperation.h" 146a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com 156a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.comclass SkBitmap; 166a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com 176a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.comnamespace gfx { 186a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.comclass ImageSkia; 196a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.comclass Rect; 206a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.comclass Vector2d; 216a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com} 226a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com 236a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.comnamespace content { 246a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.comclass RenderFrameHost; 256a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.comstruct ContextMenuParams; 266a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.comstruct DropData; 276a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.comstruct MenuItem; 286a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com 296a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com// This class provides a way for the RenderViewHost to reach out to its 306a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com// delegate's view. It only needs to be implemented by embedders if they don't 316a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com// use the default WebContentsView implementations. 326a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.comclass CONTENT_EXPORT RenderViewHostDelegateView { 336a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com public: 346a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com // A context menu should be shown, to be built using the context information 356a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com // provided in the supplied params. 366a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com virtual void ShowContextMenu(RenderFrameHost* render_frame_host, 376a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com const ContextMenuParams& params) {} 386a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com 396a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com // Shows a popup menu with the specified items. 406a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com // This method should call RenderViewHost::DidSelectPopupMenuItem[s]() or 416a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com // RenderViewHost::DidCancelPopupMenu() based on the user action. 426a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com virtual void ShowPopupMenu(const gfx::Rect& bounds, 436a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com int item_height, 446a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com double item_font_size, 456a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com int selected_item, 466a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com const std::vector<MenuItem>& items, 476a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com bool right_aligned, 486a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com bool allow_multiple_selection) {}; 496a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com 506a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com // Hides a popup menu opened by ShowPopupMenu(). 516a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com virtual void HidePopupMenu() {}; 526a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com 536a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com // The user started dragging content of the specified type within the 546a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com // RenderView. Contextual information about the dragged content is supplied 556a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com // by DropData. If the delegate's view cannot start the drag for /any/ 566a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com // reason, it must inform the renderer that the drag has ended; otherwise, 576a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com // this results in bugs like http://crbug.com/157134. 586a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com virtual void StartDragging(const DropData& drop_data, 596a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com blink::WebDragOperationsMask allowed_ops, 606a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com const gfx::ImageSkia& image, 616a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com const gfx::Vector2d& image_offset, 626a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com const DragEventSourceInfo& event_info) {} 636a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com 646a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com // The page wants to update the mouse cursor during a drag & drop operation. 656a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com // |operation| describes the current operation (none, move, copy, link.) 666a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com virtual void UpdateDragCursor(blink::WebDragOperation operation) {} 676a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com 686a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com // Notification that view for this delegate got the focus. 696a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com virtual void GotFocus() {} 706a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com 716a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com // Callback to inform the browser that the page is returning the focus to 726a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com // the browser's chrome. If reverse is true, it means the focus was 736a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com // retrieved by doing a Shift-Tab. 746a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com virtual void TakeFocus(bool reverse) {} 756a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com 766a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com protected: 776a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com virtual ~RenderViewHostDelegateView() {} 786a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com}; 796a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com 806a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com} // namespace content 816a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com 826a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com#endif // CONTENT_BROWSER_RENDERER_HOST_RENDER_VIEW_HOST_DELEGATE_VIEW_H_ 836a98b8c0b5ffe1a23902cdf7e692f702b703eaebborenet@google.com