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