103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// found in the LICENSE file.
403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#ifndef EXTENSIONS_BROWSER_GUEST_VIEW_WEB_VIEW_WEB_VIEW_GUEST_DELEGATE_H_
603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#define EXTENSIONS_BROWSER_GUEST_VIEW_WEB_VIEW_WEB_VIEW_GUEST_DELEGATE_H_
703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "extensions/browser/guest_view/guest_view_base.h"
903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
1003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)namespace content {
1103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class RenderViewHost;
1203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class WebContents;
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}  // namespace content
1403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
1503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)namespace extensions {
1603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass WebViewGuest;
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)namespace api {
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace web_view_internal {
2103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
2203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)struct ContextMenuItem;
2303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)}  // namespace web_view_internal
2403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)}  // namespace api
2503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
2603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// A delegate class of WebViewGuest that are not a part of chrome.
2703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class WebViewGuestDelegate {
2803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) public :
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual ~WebViewGuestDelegate() {}
3003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
3103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  typedef std::vector<linked_ptr<api::web_view_internal::ContextMenuItem> >
3203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)      MenuItemVector;
3303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
3403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  // Returns the current zoom factor.
3503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  virtual double GetZoom() = 0;
3603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
3703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  // Called when context menu operation was handled.
3803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  virtual bool HandleContextMenu(const content::ContextMenuParams& params) = 0;
3903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
4003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  // Called to attach helpers just after additional initialization is performed.
4103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  virtual void OnAttachWebViewHelpers(content::WebContents* contents) = 0;
4203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Called to perform some cleanup prior to destruction.
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual void OnEmbedderDestroyed() = 0;
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Called after the guest has been attached to an embedder and suspended
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // resource loads have been resumed.
481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual void OnDidAttachToEmbedder() = 0;
491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
5003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  // Called when the guest WebContents commits a provisional load in any frame.
5103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  virtual void OnDidCommitProvisionalLoadForFrame(bool is_main_frame) = 0;
5203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
5303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  // Called just after additional initialization is performed.
5403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  virtual void OnDidInitialize() = 0;
5503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
5603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  virtual void OnDocumentLoadedInFrame(
5703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)      content::RenderFrameHost* render_frame_host) = 0;
5803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
5903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  // Called immediately after the guest WebContents has been destroyed.
6003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  virtual void OnGuestDestroyed() = 0;
6103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
6203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  // Called when to set the zoom factor.
6303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  virtual void OnSetZoom(double zoom_factor) = 0;
6403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
6503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  // Shows the context menu for the guest.
6603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  // |items| acts as a filter. This restricts the current context's default
6703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  // menu items to contain only the items from |items|.
6803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  // |items| == NULL means no filtering will be applied.
6903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  virtual void OnShowContextMenu(
7003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)      int request_id,
7103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)      const MenuItemVector* items) = 0;
7203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)};
7303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
7403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)}  // namespace extensions
7503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
7603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#endif  // EXTENSIONS_BROWSER_GUEST_VIEW_WEB_VIEW_WEB_VIEW_GUEST_DELEGATE_H_
77