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)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CONTENT_BROWSER_WEB_CONTENTS_WEB_CONTENTS_IMPL_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CONTENT_BROWSER_WEB_CONTENTS_WEB_CONTENTS_IMPL_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <map>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <set>
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/gtest_prod_util.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/observer_list.h"
16a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch#include "base/process/process.h"
17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/values.h"
181e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "content/browser/frame_host/frame_tree.h"
191e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "content/browser/frame_host/navigation_controller_delegate.h"
201e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "content/browser/frame_host/navigation_controller_impl.h"
21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "content/browser/frame_host/navigator_delegate.h"
22a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "content/browser/frame_host/render_frame_host_delegate.h"
23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "content/browser/frame_host/render_frame_host_manager.h"
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/browser/renderer_host/render_view_host_delegate.h"
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/browser/renderer_host/render_widget_host_delegate.h"
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/content_export.h"
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_observer.h"
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_registrar.h"
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/web_contents.h"
301e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "content/public/common/page_transition_types.h"
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/common/renderer_preferences.h"
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/common/three_d_api_types.h"
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/base/load_states.h"
347d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebDragOperation.h"
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/rect_f.h"
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/size.h"
37ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "webkit/common/resource_type.h"
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct BrowserPluginHostMsg_ResizeGuest_Params;
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct ViewHostMsg_DateTimeDialogValue_Params;
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ViewMsg_PostMessage_Params;
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BrowserPluginEmbedder;
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BrowserPluginGuest;
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class BrowserPluginGuestManager;
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ColorChooser;
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class DateTimeChooserAndroid;
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DownloadItem;
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class InterstitialPageImpl;
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class JavaBridgeDispatcherHostManager;
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class JavaScriptDialogManager;
53ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochclass PowerSaveBlocker;
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RenderViewHost;
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RenderViewHostDelegateView;
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RenderViewHostImpl;
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RenderWidgetHostImpl;
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class RenderWidgetHostViewPort;
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SavePackage;
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SessionStorageNamespaceImpl;
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SiteInstance;
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TestWebContents;
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebContentsDelegate;
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebContentsImpl;
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebContentsObserver;
662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class WebContentsViewPort;
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebContentsViewDelegate;
68a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)struct ColorSuggestion;
692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct FaviconURL;
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct LoadNotificationDetails;
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Factory function for the implementations that content knows about. Takes
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ownership of |delegate|.
742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)WebContentsViewPort* CreateWebContentsView(
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    WebContentsImpl* web_contents,
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    WebContentsViewDelegate* delegate,
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    RenderViewHostDelegateView** render_view_host_delegate_view);
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CONTENT_EXPORT WebContentsImpl
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    : public NON_EXPORTED_BASE(WebContents),
81a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      public NON_EXPORTED_BASE(RenderFrameHostDelegate),
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      public RenderViewHostDelegate,
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      public RenderWidgetHostDelegate,
84f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      public RenderFrameHostManager::Delegate,
851e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      public NotificationObserver,
86f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      public NON_EXPORTED_BASE(NavigationControllerDelegate),
87f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      public NON_EXPORTED_BASE(NavigatorDelegate) {
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~WebContentsImpl();
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static WebContentsImpl* CreateWithOpener(
922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const WebContents::CreateParams& params,
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebContentsImpl* opener);
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Returns the opener WebContentsImpl, if any. This can be set to null if the
962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // opener is closed or the page clears its window.opener.
972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  WebContentsImpl* opener() const { return opener_; }
982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Creates a WebContents to be used as a browser plugin guest.
1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  static BrowserPluginGuest* CreateGuest(
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      BrowserContext* browser_context,
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      content::SiteInstance* site_instance,
103eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      int guest_instance_id,
104eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      scoped_ptr<base::DictionaryValue> extra_params);
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Creates a swapped out RenderView. This is used by the browser plugin to
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // create a swapped out RenderView in the embedder render process for the
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // guest, to expose the guest's window object to the embedder.
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // This returns the routing ID of the newly created swapped out RenderView.
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int CreateSwappedOutRenderView(SiteInstance* instance);
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Complex initialization here. Specifically needed to avoid having
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // members call back into our virtual functions in the constructor.
1142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void Init(const WebContents::CreateParams& params);
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns the SavePackage which manages the page saving job. May be NULL.
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SavePackage* save_package() const { return save_package_.get(); }
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1197d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#if defined(OS_ANDROID)
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  JavaBridgeDispatcherHostManager* java_bridge_dispatcher_host_manager() const {
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return java_bridge_dispatcher_host_manager_.get();
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
1243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // In Android WebView, the RenderView needs created even there is no
1253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // navigation entry, this allows Android WebViews to use
1263551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // javascript: URLs that load into the DOMWindow before the first page
1273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // load. This is not safe to do in any context that a web page could get a
1283551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // reference to the DOMWindow before the first page load.
1293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  bool CreateRenderViewForInitialEmptyDocument();
1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Expose the render manager for testing.
133f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  RenderFrameHostManager* GetRenderManagerForTesting();
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns guest browser plugin object, or NULL if this WebContents is not a
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // guest.
1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  BrowserPluginGuest* GetBrowserPluginGuest() const;
138eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
139eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // Sets a BrowserPluginGuest object for this WebContents. If this WebContents
140eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // has a BrowserPluginGuest then that implies that it is being hosted by
141eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // a BrowserPlugin object in an embedder renderer process.
142eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  void SetBrowserPluginGuest(BrowserPluginGuest* guest);
143eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns embedder browser plugin object, or NULL if this WebContents is not
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // an embedder.
1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  BrowserPluginEmbedder* GetBrowserPluginEmbedder() const;
147eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Returns the BrowserPluginGuestManager object, or NULL if this web contents
1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // does not have a BrowserPluginGuestManager.
1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  BrowserPluginGuestManager* GetBrowserPluginGuestManager() const;
1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Gets the current fullscreen render widget's routing ID. Returns
1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // MSG_ROUTING_NONE when there is no fullscreen render widget.
1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int GetFullscreenWidgetRoutingID() const;
1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Invoked when visible SSL state (as defined by SSLStatus) changes.
1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void DidChangeVisibleSSLState();
1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
159c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Informs the render view host and the BrowserPluginEmbedder, if present, of
160c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // a Drag Source End.
161c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void DragSourceEndedAt(int client_x, int client_y, int screen_x,
162f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      int screen_y, blink::WebDragOperation operation);
163c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
164c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Informs the render view host and the BrowserPluginEmbedder, if present, of
165c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // a Drag Source Move.
166c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void DragSourceMovedTo(int client_x, int client_y,
167c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                         int screen_x, int screen_y);
168c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // WebContents ------------------------------------------------------
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebContentsDelegate* GetDelegate() OVERRIDE;
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetDelegate(WebContentsDelegate* delegate) OVERRIDE;
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual NavigationControllerImpl& GetController() OVERRIDE;
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual const NavigationControllerImpl& GetController() const OVERRIDE;
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual BrowserContext* GetBrowserContext() const OVERRIDE;
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual RenderProcessHost* GetRenderProcessHost() const OVERRIDE;
176a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  virtual RenderFrameHost* GetMainFrame() OVERRIDE;
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual RenderViewHost* GetRenderViewHost() const OVERRIDE;
1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void GetRenderViewHostAtPosition(
1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      int x,
1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      int y,
1812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const GetRenderViewHostCallback& callback) OVERRIDE;
1822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual WebContents* GetEmbedderWebContents() const OVERRIDE;
1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual int GetEmbeddedInstanceID() const OVERRIDE;
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int GetRoutingID() const OVERRIDE;
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual RenderWidgetHostView* GetRenderWidgetHostView() const OVERRIDE;
186d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  virtual RenderWidgetHostView* GetFullscreenRenderWidgetHostView() const
187d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)      OVERRIDE;
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebContentsView* GetView() const OVERRIDE;
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebUI* CreateWebUI(const GURL& url) OVERRIDE;
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebUI* GetWebUI() const OVERRIDE;
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebUI* GetCommittedWebUI() const OVERRIDE;
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetUserAgentOverride(const std::string& override) OVERRIDE;
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual const std::string& GetUserAgentOverride() const OVERRIDE;
194c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#if defined(OS_WIN) && defined(USE_AURA)
195c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void SetParentNativeViewAccessible(
196c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      gfx::NativeViewAccessible accessible_parent) OVERRIDE;
197c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif
198a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  virtual const base::string16& GetTitle() const OVERRIDE;
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int32 GetMaxPageID() OVERRIDE;
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int32 GetMaxPageIDForSiteInstance(
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      SiteInstance* site_instance) OVERRIDE;
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual SiteInstance* GetSiteInstance() const OVERRIDE;
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual SiteInstance* GetPendingSiteInstance() const OVERRIDE;
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsLoading() const OVERRIDE;
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsWaitingForResponse() const OVERRIDE;
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual const net::LoadStateWithParam& GetLoadState() const OVERRIDE;
207a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  virtual const base::string16& GetLoadStateHost() const OVERRIDE;
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual uint64 GetUploadSize() const OVERRIDE;
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual uint64 GetUploadPosition() const OVERRIDE;
2107d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  virtual std::set<GURL> GetSitesInTab() const OVERRIDE;
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual const std::string& GetEncoding() const OVERRIDE;
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool DisplayedInsecureContent() const OVERRIDE;
2132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void IncrementCapturerCount() OVERRIDE;
2142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void DecrementCapturerCount() OVERRIDE;
215ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  virtual int GetCapturerCount() const OVERRIDE;
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsCrashed() const OVERRIDE;
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetIsCrashed(base::TerminationStatus status,
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            int error_code) OVERRIDE;
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual base::TerminationStatus GetCrashedStatus() const OVERRIDE;
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsBeingDestroyed() const OVERRIDE;
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void NotifyNavigationStateChanged(unsigned changed_flags) OVERRIDE;
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual base::TimeTicks GetLastSelectedTime() const OVERRIDE;
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void WasShown() OVERRIDE;
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void WasHidden() OVERRIDE;
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool NeedToFireBeforeUnload() OVERRIDE;
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Stop() OVERRIDE;
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebContents* Clone() OVERRIDE;
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void FocusThroughTabTraversal(bool reverse) OVERRIDE;
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool ShowingInterstitialPage() const OVERRIDE;
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual InterstitialPage* GetInterstitialPage() const OVERRIDE;
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsSavable() OVERRIDE;
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnSavePage() OVERRIDE;
2332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool SavePage(const base::FilePath& main_file,
2342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                        const base::FilePath& dir_path,
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        SavePageType save_type) OVERRIDE;
236ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  virtual void SaveFrame(const GURL& url,
237ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch                         const Referrer& referrer) OVERRIDE;
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GenerateMHTML(
2392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const base::FilePath& file,
240424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)      const base::Callback<void(int64)>& callback)
2412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          OVERRIDE;
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsActiveEntry(int32 page_id) OVERRIDE;
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual const std::string& GetContentsMimeType() const OVERRIDE;
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool WillNotifyDisconnection() const OVERRIDE;
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetOverrideEncoding(const std::string& encoding) OVERRIDE;
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ResetOverrideEncoding() OVERRIDE;
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual RendererPreferences* GetMutableRendererPrefs() OVERRIDE;
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Close() OVERRIDE;
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SystemDragEnded() OVERRIDE;
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void UserGestureDone() OVERRIDE;
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetClosedByUserGesture(bool value) OVERRIDE;
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool GetClosedByUserGesture() const OVERRIDE;
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual double GetZoomLevel() const OVERRIDE;
2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int GetZoomPercent(bool* enable_increment,
2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                             bool* enable_decrement) const OVERRIDE;
2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ViewSource() OVERRIDE;
2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ViewFrameSource(const GURL& url,
25990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                               const PageState& page_state) OVERRIDE;
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int GetMinimumZoomPercent() const OVERRIDE;
2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int GetMaximumZoomPercent() const OVERRIDE;
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual gfx::Size GetPreferredSize() const OVERRIDE;
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool GotResponseToLockMouseRequest(bool allowed) OVERRIDE;
2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool HasOpener() const OVERRIDE;
26590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  virtual void DidChooseColorInColorChooser(SkColor color) OVERRIDE;
26690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  virtual void DidEndColorChooser() OVERRIDE;
267c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual int DownloadImage(const GURL& url,
268c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                            bool is_favicon,
269d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)                            uint32_t max_bitmap_size,
270c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                            const ImageDownloadCallback& callback) OVERRIDE;
2714e4e753d5cd2290fa40ed922142a29a98128a209Ben Murdoch  virtual void SetZoomLevel(double level) OVERRIDE;
272a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#if defined(OS_ANDROID)
273a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  virtual base::android::ScopedJavaLocalRef<jobject> GetJavaWebContents()
274a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      OVERRIDE;
275a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#endif
2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Implementation of PageNavigator.
2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebContents* OpenURL(const OpenURLParams& params) OVERRIDE;
2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Implementation of IPC::Sender.
2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool Send(IPC::Message* message) OVERRIDE;
2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
283a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // RenderFrameHostDelegate ---------------------------------------------------
284a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  virtual bool OnMessageReceived(RenderFrameHost* render_frame_host,
285a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                                 const IPC::Message& message) OVERRIDE;
286a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  virtual void RenderFrameCreated(RenderFrameHost* render_frame_host) OVERRIDE;
287a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  virtual void RenderFrameDeleted(RenderFrameHost* render_frame_host) OVERRIDE;
2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
289a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // RenderViewHostDelegate ----------------------------------------------------
2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual RenderViewHostDelegateView* GetDelegateView() OVERRIDE;
2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual RenderViewHostDelegate::RendererManagement*
2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      GetRendererManagementDelegate() OVERRIDE;
2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool OnMessageReceived(RenderViewHost* render_view_host,
2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 const IPC::Message& message) OVERRIDE;
2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual const GURL& GetURL() const OVERRIDE;
296ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  virtual const GURL& GetVisibleURL() const OVERRIDE;
29790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  virtual const GURL& GetLastCommittedURL() const OVERRIDE;
2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebContents* GetAsWebContents() OVERRIDE;
2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual gfx::Rect GetRootWindowResizerRect() const OVERRIDE;
3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RenderViewCreated(RenderViewHost* render_view_host) OVERRIDE;
3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RenderViewReady(RenderViewHost* render_view_host) OVERRIDE;
302c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void RenderViewTerminated(RenderViewHost* render_view_host,
303c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                    base::TerminationStatus status,
304c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                    int error_code) OVERRIDE;
3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RenderViewDeleted(RenderViewHost* render_view_host) OVERRIDE;
3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DidRedirectProvisionalLoad(
3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      RenderViewHost* render_view_host,
3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int32 page_id,
3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const GURL& source_url,
3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const GURL& target_url) OVERRIDE;
3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DidFailProvisionalLoadWithError(
3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      RenderViewHost* render_view_host,
3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const ViewHostMsg_DidFailProvisionalLoadWithError_Params& params)
3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          OVERRIDE;
31558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual void DidGetResourceResponseStart(
31658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      const ResourceRequestDetails& details) OVERRIDE;
31758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual void DidGetRedirectForResourceRequest(
31858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      const ResourceRedirectDetails& details) OVERRIDE;
3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DidNavigate(
3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      RenderViewHost* render_view_host,
3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const ViewHostMsg_FrameNavigate_Params& params) OVERRIDE;
3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void UpdateState(RenderViewHost* render_view_host,
3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           int32 page_id,
32490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                           const PageState& page_state) OVERRIDE;
3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void UpdateTitle(RenderViewHost* render_view_host,
3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           int32 page_id,
327a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                           const base::string16& title,
3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           base::i18n::TextDirection title_direction) OVERRIDE;
3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void UpdateEncoding(RenderViewHost* render_view_host,
3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              const std::string& encoding) OVERRIDE;
3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void UpdateTargetURL(int32 page_id, const GURL& url) OVERRIDE;
3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Close(RenderViewHost* render_view_host) OVERRIDE;
3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RequestMove(const gfx::Rect& new_bounds) OVERRIDE;
3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SwappedOut(RenderViewHost* render_view_host) OVERRIDE;
3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DidStartLoading(RenderViewHost* render_view_host) OVERRIDE;
3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DidStopLoading(RenderViewHost* render_view_host) OVERRIDE;
3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DidCancelLoading() OVERRIDE;
3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DidChangeLoadProgress(double progress) OVERRIDE;
3392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void DidDisownOpener(RenderViewHost* rvh) OVERRIDE;
340868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  virtual void DidAccessInitialDocument() OVERRIDE;
3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DocumentAvailableInMainFrame(
3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      RenderViewHost* render_view_host) OVERRIDE;
3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DocumentOnLoadCompletedInMainFrame(
3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      RenderViewHost* render_view_host,
3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int32 page_id) OVERRIDE;
3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RequestOpenURL(RenderViewHost* rvh,
3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              const GURL& url,
3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              const Referrer& referrer,
3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              WindowOpenDisposition disposition,
3502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              int64 source_frame_id,
351ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch                              bool should_replace_current_entry,
3527dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                              bool user_gesture) OVERRIDE;
3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RequestTransferURL(
3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const GURL& url,
3551e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      const std::vector<GURL>& redirect_chain,
3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const Referrer& referrer,
3571e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      PageTransition page_transition,
3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WindowOpenDisposition disposition,
3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int64 source_frame_id,
3602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const GlobalRequestID& transferred_global_request_id,
361ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch      bool should_replace_current_entry,
3627dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch      bool user_gesture) OVERRIDE;
3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RouteCloseEvent(RenderViewHost* rvh) OVERRIDE;
3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RouteMessageEvent(
3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      RenderViewHost* rvh,
3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const ViewMsg_PostMessage_Params& params) OVERRIDE;
3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RunJavaScriptMessage(RenderViewHost* rvh,
368a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                                    const base::string16& message,
369a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                                    const base::string16& default_prompt,
3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    const GURL& frame_url,
3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    JavaScriptMessageType type,
3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    IPC::Message* reply_msg,
3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    bool* did_suppress_message) OVERRIDE;
3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RunBeforeUnloadConfirm(RenderViewHost* rvh,
375a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                                      const base::string16& message,
3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      bool is_reload,
3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      IPC::Message* reply_msg) OVERRIDE;
3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool AddMessageToConsole(int32 level,
379a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                                   const base::string16& message,
3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   int32 line_no,
381a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                                   const base::string16& source_id) OVERRIDE;
3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual RendererPreferences GetRendererPrefs(
3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      BrowserContext* browser_context) const OVERRIDE;
384c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual WebPreferences GetWebkitPrefs() OVERRIDE;
3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnUserGesture() OVERRIDE;
3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnIgnoredUIEvent() OVERRIDE;
3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RendererUnresponsive(RenderViewHost* render_view_host,
3883551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)                                    bool is_during_beforeunload,
3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    bool is_during_unload) OVERRIDE;
3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RendererResponsive(RenderViewHost* render_view_host) OVERRIDE;
3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void LoadStateChanged(const GURL& url,
3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                const net::LoadStateWithParam& load_state,
3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                uint64 upload_position,
3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                uint64 upload_size) OVERRIDE;
3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void WorkerCrashed() OVERRIDE;
3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Activate() OVERRIDE;
3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Deactivate() OVERRIDE;
3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void LostCapture() OVERRIDE;
3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void HandleMouseDown() OVERRIDE;
4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void HandleMouseUp() OVERRIDE;
4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void HandlePointerActivate() OVERRIDE;
4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void HandleGestureBegin() OVERRIDE;
4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void HandleGestureEnd() OVERRIDE;
4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RunFileChooser(
4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      RenderViewHost* render_view_host,
4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const FileChooserParams& params) OVERRIDE;
4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ToggleFullscreenMode(bool enter_fullscreen) OVERRIDE;
4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsFullscreenForCurrentTab() const OVERRIDE;
4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void UpdatePreferredSize(const gfx::Size& pref_size) OVERRIDE;
4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ResizeDueToAutoResize(const gfx::Size& new_size) OVERRIDE;
4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RequestToLockMouse(bool user_gesture,
4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  bool last_unlocked_by_target) OVERRIDE;
4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void LostMouseLock() OVERRIDE;
4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void CreateNewWindow(
415a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      int render_process_id,
4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int route_id,
417868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)      int main_frame_route_id,
4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const ViewHostMsg_CreateWindow_Params& params,
4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      SessionStorageNamespace* session_storage_namespace) OVERRIDE;
420a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  virtual void CreateNewWidget(int render_process_id,
421a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                               int route_id,
422f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                               blink::WebPopupType popup_type) OVERRIDE;
423a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  virtual void CreateNewFullscreenWidget(int render_process_id,
424a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                                         int route_id) OVERRIDE;
4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowCreatedWindow(int route_id,
4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 WindowOpenDisposition disposition,
4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 const gfx::Rect& initial_pos,
4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 bool user_gesture) OVERRIDE;
4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowCreatedWidget(int route_id,
4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 const gfx::Rect& initial_pos) OVERRIDE;
4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowCreatedFullscreenWidget(int route_id) OVERRIDE;
4327d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  virtual void ShowContextMenu(const ContextMenuParams& params) OVERRIDE;
4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RequestMediaAccessPermission(
4342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const MediaStreamRequest& request,
4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const MediaResponseCallback& callback) OVERRIDE;
436a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch  virtual SessionStorageNamespace* GetSessionStorageNamespace(
437a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch      SiteInstance* instance) OVERRIDE;
4384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  virtual FrameTree* GetFrameTree() OVERRIDE;
4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
440a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // NavigatorDelegate ---------------------------------------------------------
441a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
442a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  virtual void DidStartProvisionalLoad(
443a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      RenderFrameHostImpl* render_frame_host,
444a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      int64 frame_id,
445a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      int64 parent_frame_id,
446a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      bool is_main_frame,
447a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      const GURL& validated_url,
448a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      bool is_error_page,
449a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      bool is_iframe_srcdoc) OVERRIDE;
450a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  virtual void NotifyChangedNavigationState(
451a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      InvalidateTypes changed_flags) OVERRIDE;
452a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // RenderWidgetHostDelegate --------------------------------------------------
4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RenderWidgetDeleted(
4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      RenderWidgetHostImpl* render_widget_host) OVERRIDE;
4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool PreHandleKeyboardEvent(
4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const NativeWebKeyboardEvent& event,
4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      bool* is_keyboard_shortcut) OVERRIDE;
4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void HandleKeyboardEvent(
4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const NativeWebKeyboardEvent& event) OVERRIDE;
4622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool PreHandleWheelEvent(
463f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebMouseWheelEvent& event) OVERRIDE;
46490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  virtual void DidSendScreenRects(RenderWidgetHostImpl* rwh) OVERRIDE;
465c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#if defined(OS_WIN) && defined(USE_AURA)
466c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual gfx::NativeViewAccessible GetParentNativeViewAccessible() OVERRIDE;
467c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif
4685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
469f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // RenderFrameHostManager::Delegate ------------------------------------------
4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool CreateRenderViewForRenderManager(
4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      RenderViewHost* render_view_host, int opener_route_id) OVERRIDE;
4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void BeforeUnloadFiredFromRenderManager(
4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      bool proceed, const base::TimeTicks& proceed_time,
4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      bool* proceed_to_fire_unload) OVERRIDE;
4767dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  virtual void RenderProcessGoneFromRenderManager(
4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      RenderViewHost* render_view_host) OVERRIDE;
4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void UpdateRenderViewSizeForRenderManager() OVERRIDE;
4794e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  virtual void CancelModalDialogsForRenderManager() OVERRIDE;
4802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void NotifySwappedFromRenderManager(
4814e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      RenderViewHost* old_host, RenderViewHost* new_host) OVERRIDE;
4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int CreateOpenerRenderViewsForRenderManager(
4835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      SiteInstance* instance) OVERRIDE;
4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual NavigationControllerImpl&
4855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      GetControllerForRenderManager() OVERRIDE;
4865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebUIImpl* CreateWebUIForRenderManager(const GURL& url) OVERRIDE;
4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual NavigationEntry*
4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      GetLastCommittedNavigationEntryForRenderManager() OVERRIDE;
4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool FocusLocationBarByDefault() OVERRIDE;
4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetFocusToLocationBar(bool select_all) OVERRIDE;
4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void CreateViewAndSetSizeForRVH(RenderViewHost* rvh) OVERRIDE;
4923551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  virtual bool IsHidden() OVERRIDE;
4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // NotificationObserver ------------------------------------------------------
4955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Observe(int type,
4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       const NotificationSource& source,
4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       const NotificationDetails& details) OVERRIDE;
4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5001e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // NavigationControllerDelegate ----------------------------------------------
5011e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
5021e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  virtual WebContents* GetWebContents() OVERRIDE;
5031e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  virtual void NotifyNavigationEntryCommitted(
5041e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      const LoadCommittedDetails& load_details) OVERRIDE;
5051e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
5061e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // Invoked before a form repost warning is shown.
5071e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  virtual void NotifyBeforeFormRepostWarningShow() OVERRIDE;
5081e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
5091e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // Activate this WebContents and show a form repost warning.
5101e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  virtual void ActivateAndShowRepostFormWarningDialog() OVERRIDE;
5111e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
5121e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // Updates the max page ID for the current SiteInstance in this
5131e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // WebContentsImpl to be at least |page_id|.
5141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  virtual void UpdateMaxPageID(int32 page_id) OVERRIDE;
5151e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
5161e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // Updates the max page ID for the given SiteInstance in this WebContentsImpl
5171e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // to be at least |page_id|.
5181e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  virtual void UpdateMaxPageIDForSiteInstance(SiteInstance* site_instance,
5191e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)                                              int32 page_id) OVERRIDE;
5201e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
5211e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // Copy the current map of SiteInstance ID to max page ID from another tab.
5221e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // This is necessary when this tab adopts the NavigationEntries from
5231e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // |web_contents|.
5241e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  virtual void CopyMaxPageIDsFrom(WebContents* web_contents) OVERRIDE;
5251e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
5261e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // Called by the NavigationController to cause the WebContentsImpl to navigate
5271e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // to the current pending entry. The NavigationController should be called
5281e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // back with RendererDidNavigate on success or DiscardPendingEntry on failure.
5291e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // The callbacks can be inside of this function, or at some future time.
5301e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  //
5311e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // The entry has a PageID of -1 if newly created (corresponding to navigation
5321e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // to a new URL).
5331e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  //
5341e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // If this method returns false, then the navigation is discarded (equivalent
5351e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // to calling DiscardPendingEntry on the NavigationController).
5361e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  virtual bool NavigateToPendingEntry(
5371e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      NavigationController::ReloadType reload_type) OVERRIDE;
5381e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
5391e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // Sets the history for this WebContentsImpl to |history_length| entries, and
5401e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // moves the current page_id to the last entry in the list if it's valid.
5411e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // This is mainly used when a prerendered page is swapped into the current
5421e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // tab. The method is virtual for testing.
5431e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  virtual void SetHistoryLengthAndPrune(
5441e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      const SiteInstance* site_instance,
5451e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      int merge_history_length,
5461e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      int32 minimum_page_id) OVERRIDE;
5471e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
5481e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // Called by InterstitialPageImpl when it creates a RenderViewHost.
5491e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  virtual void RenderViewForInterstitialPageCreated(
5501e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      RenderViewHost* render_view_host) OVERRIDE;
5511e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
5521e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // Sets the passed interstitial as the currently showing interstitial.
5531e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // No interstitial page should already be attached.
5541e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  virtual void AttachInterstitialPage(
5551e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      InterstitialPageImpl* interstitial_page) OVERRIDE;
5561e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
5571e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // Unsets the currently showing interstitial.
5581e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  virtual void DetachInterstitialPage() OVERRIDE;
5591e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
5601e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // Changes the IsLoading state and notifies the delegate as needed.
5611e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // |details| is used to provide details on the load that just finished
5621e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // (but can be null if not applicable).
5631e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  virtual void SetIsLoading(RenderViewHost* render_view_host,
5641e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)                            bool is_loading,
5651e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)                            LoadNotificationDetails* details) OVERRIDE;
5661e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
567f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  typedef base::Callback<void(WebContents*)> CreatedCallback;
5685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
5705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  friend class NavigationControllerImpl;
571f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  friend class TestNavigationObserver;
5725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  friend class WebContentsObserver;
5735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  friend class WebContents;  // To implement factory methods.
5745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(WebContentsImplTest, NoJSMessageOnInterstitials);
5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(WebContentsImplTest, UpdateTitle);
5772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(WebContentsImplTest, FindOpenerRVHWhenPending);
5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(WebContentsImplTest,
5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           CrossSiteCantPreemptAfterUnload);
5802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(WebContentsImplTest, PendingContents);
581b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(WebContentsImplTest, FrameTreeShape);
5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(FormStructureBrowserTest, HTMLFiles);
5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(NavigationControllerTest, HistoryNavigate);
584f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderFrameHostManagerTest, PageDoesBackAndReload);
5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // So InterstitialPageImpl can access SetIsLoading.
5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  friend class InterstitialPageImpl;
5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // TODO(brettw) TestWebContents shouldn't exist!
5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  friend class TestWebContents;
5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
59290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  class DestructionObserver;
59390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // See WebContents::Create for a description of these parameters.
5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WebContentsImpl(BrowserContext* browser_context,
5965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                  WebContentsImpl* opener);
5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
598f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Add and remove observers for page navigation notifications. The order in
599f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // which notifications are sent to observers is undefined. Clients must be
600f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // sure to remove the observer before they go away.
6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void AddObserver(WebContentsObserver* observer);
6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void RemoveObserver(WebContentsObserver* observer);
6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Clears this tab's opener if it has been closed.
60590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  void OnWebContentsDestroyed(WebContentsImpl* web_contents);
60690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
60790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // Creates and adds to the map a destruction observer watching |web_contents|.
60890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // No-op if such an observer already exists.
60990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  void AddDestructionObserver(WebContentsImpl* web_contents);
61090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
61190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // Deletes and removes from the map a destruction observer
61290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // watching |web_contents|. No-op if there is no such observer.
61390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  void RemoveDestructionObserver(WebContentsImpl* web_contents);
6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Callback function when showing JS dialogs.
6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnDialogClosed(RenderViewHost* rvh,
6175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      IPC::Message* reply_msg,
6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      bool success,
619a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                      const base::string16& user_input);
6205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Callback function when requesting permission to access the PPAPI broker.
6225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // |result| is true if permission was granted.
6233240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  void OnPpapiBrokerPermissionResult(int routing_id, bool result);
6245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
625a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  bool OnMessageReceived(RenderViewHost* render_view_host,
626a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                         RenderFrameHost* render_frame_host,
627a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                         const IPC::Message& message);
628a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IPC message handlers.
6305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnDidLoadResourceFromMemoryCache(const GURL& url,
6315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                        const std::string& security_info,
6325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                        const std::string& http_request,
6335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                        const std::string& mime_type,
6345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                        ResourceType::Type resource_type);
6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnDidDisplayInsecureContent();
6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnDidRunInsecureContent(const std::string& security_origin,
6375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               const GURL& target_url);
6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnDocumentLoadedInFrame(int64 frame_id);
6395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnDidFinishLoad(int64 frame_id,
6402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                       const GURL& url,
6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       bool is_main_frame);
6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnDidFailLoadWithError(int64 frame_id,
6432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              const GURL& url,
6445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              bool is_main_frame,
6455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              int error_code,
646a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                              const base::string16& error_description);
6475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnGoToEntryAtOffset(int offset);
6485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnUpdateZoomLimits(int minimum_percent,
6495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          int maximum_percent,
6505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          bool remember);
6512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnEnumerateDirectory(int request_id, const base::FilePath& path);
6525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnJSOutOfMemory();
6535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnRegisterProtocolHandler(const std::string& protocol,
6555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 const GURL& url,
656a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                                 const base::string16& title,
6575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 bool user_gesture);
6585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnFindReply(int request_id,
6595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                   int number_of_matches,
6605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                   const gfx::Rect& selection_rect,
6615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                   int active_match_ordinal,
6625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                   bool final_update);
6635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID)
6645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnFindMatchRectsReply(int version,
6655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                             const std::vector<gfx::RectF>& rects,
6665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                             const gfx::RectF& active_rect);
6672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
6682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnOpenDateTimeDialog(
6692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const ViewHostMsg_DateTimeDialogValue_Params& value);
6701e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  void OnJavaBridgeGetChannelHandle(IPC::Message* reply_msg);
6715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
672a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  void OnPepperPluginHung(int plugin_child_id,
673a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                          const base::FilePath& path,
674a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                          bool is_hung);
675a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  void OnPluginCrashed(const base::FilePath& plugin_path,
6762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                       base::ProcessId plugin_pid);
6775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnAppCacheAccessed(const GURL& manifest_url, bool blocked_by_policy);
678a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  void OnOpenColorChooser(int color_chooser_id,
679a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                          SkColor color,
680a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                          const std::vector<ColorSuggestion>& suggestions);
6815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnEndColorChooser(int color_chooser_id);
6825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnSetSelectedColorInColorChooser(int color_chooser_id, SkColor color);
6835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnWebUISend(const GURL& source_url,
6845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                   const std::string& name,
6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                   const base::ListValue& args);
6863240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  void OnRequestPpapiBrokerPermission(int routing_id,
6875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      const GURL& url,
6882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                      const base::FilePath& plugin_path);
6892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnBrowserPluginMessage(const IPC::Message& message);
690c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnDidDownloadImage(int id,
69190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                          int http_status_code,
692c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                          const GURL& image_url,
693d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)                          const std::vector<SkBitmap>& bitmaps,
694d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)                          const std::vector<gfx::Size>& original_bitmap_sizes);
6952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnUpdateFaviconURL(int32 page_id,
6962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                          const std::vector<FaviconURL>& candidates);
697f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  void OnFirstVisuallyNonEmptyPaint(int32 page_id);
698ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  void OnMediaNotification(int64 player_cookie,
699ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch                           bool has_video,
700ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch                           bool has_audio,
701ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch                           bool is_playing);
702d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)  void OnShowValidationMessage(const gfx::Rect& anchor_in_root_view,
703d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)                               const string16& main_text,
704d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)                               const string16& sub_text);
705d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)  void OnHideValidationMessage();
706d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)  void OnMoveValidationMessage(const gfx::Rect& anchor_in_root_view);
707d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)
708ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
7095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Called by derived classes to indicate that we're no longer waiting for a
7105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // response. This won't actually update the throbber, but it will get picked
7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // up at the next animation step if the throbber is going.
7125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SetNotWaitingForResponse() { waiting_for_response_ = false; }
7135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Navigation helpers --------------------------------------------------------
7155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // These functions are helpers for Navigate() and DidNavigate().
7175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Handles post-navigation tasks in DidNavigate AFTER the entry has been
7195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // committed to the navigation controller. Note that the navigation entry is
7205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // not provided since it may be invalid/changed after being committed. The
7215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // current navigation entry is in the NavigationController at this point.
7225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void DidNavigateMainFramePostCommit(
7235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const LoadCommittedDetails& details,
7245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const ViewHostMsg_FrameNavigate_Params& params);
7255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void DidNavigateAnyFramePostCommit(
7265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      RenderViewHost* render_view_host,
7275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const LoadCommittedDetails& details,
7285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const ViewHostMsg_FrameNavigate_Params& params);
7295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
730eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // Specifies whether the passed in URL should be assigned as the site of the
731eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // current SiteInstance, if it does not yet have a site.
732eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  bool ShouldAssignSiteForURL(const GURL& url);
733eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
7345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // If our controller was restored, update the max page ID associated with the
7355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // given RenderViewHost to be larger than the number of restored entries.
7365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // This is called in CreateRenderView before any navigations in the RenderView
7375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // have begun, to prevent any races in updating RenderView::next_page_id.
7385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateMaxPageIDIfNecessary(RenderViewHost* rvh);
7395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Saves the given title to the navigation entry and does associated work. It
7415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // will update history and the view for the new title, and also synthesize
7425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // titles for file URLs that have none (so we require that the URL of the
7435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // entry already be set).
7445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
7455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // This is used as the backend for state updates, which include a new title,
7465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // or the dedicated set title message. It returns true if the new title is
7475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // different and was therefore updated.
7485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool UpdateTitleForEntry(NavigationEntryImpl* entry,
749a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                           const base::string16& title);
7505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Causes the WebContentsImpl to navigate in the right renderer to |entry|,
7525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // which must be already part of the entries in the navigation controller.
7535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // This does not change the NavigationController state.
7545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool NavigateToEntry(const NavigationEntryImpl& entry,
7555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       NavigationController::ReloadType reload_type);
7565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Recursively creates swapped out RenderViews for this tab's opener chain
7585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // (including this tab) in the given SiteInstance, allowing other tabs to send
7595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // cross-process JavaScript calls to their opener(s).  Returns the route ID of
7605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // this tab's RenderView for |instance|.
7615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int CreateOpenerRenderViews(SiteInstance* instance);
7625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Helper for CreateNewWidget/CreateNewFullscreenWidget.
764a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  void CreateNewWidget(int render_process_id,
765a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                       int route_id,
7665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       bool is_fullscreen,
767f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                       blink::WebPopupType popup_type);
7685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Helper for ShowCreatedWidget/ShowCreatedFullscreenWidget.
7705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void ShowCreatedWidget(int route_id,
7715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         bool is_fullscreen,
7725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         const gfx::Rect& initial_pos);
7735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Finds the new RenderWidgetHost and returns it. Note that this can only be
7755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // called once as this call also removes it from the internal map.
7765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  RenderWidgetHostView* GetCreatedWidget(int route_id);
7775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Finds the new WebContentsImpl by route_id, initializes it for
7795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // renderer-initiated creation, and returns it. Note that this can only be
7805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // called once as this call also removes it from the internal map.
7815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WebContentsImpl* GetCreatedWindow(int route_id);
7825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Returns the RenderWidgetHostView that is associated with a native window
7842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // and can be used in showing created widgets.
7852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // If this WebContents belongs to a browser plugin guest, there is no native
7862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // window 'view' associated with this WebContents. This method returns the
7872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // 'view' of the embedder instead.
7882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  RenderWidgetHostViewPort* GetRenderWidgetHostViewPort() const;
7892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
7905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Misc non-view stuff -------------------------------------------------------
7915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Helper functions for sending notifications.
7934e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  void NotifySwapped(RenderViewHost* old_host, RenderViewHost* new_host);
7945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void NotifyDisconnected();
7955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SetEncoding(const std::string& encoding);
7975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
798f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // TODO(creis): This should take in a FrameTreeNode to know which node's
799f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // render manager to return.  For now, we just return the root's.
800f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  RenderFrameHostManager* GetRenderManager() const;
801f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
8025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  RenderViewHostImpl* GetRenderViewHostImpl();
8035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Removes browser plugin embedder if there is one.
8055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void RemoveBrowserPluginEmbedder();
8065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
807ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  // Clear |render_view_host|'s PowerSaveBlockers.
808ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  void ClearPowerSaveBlockers(RenderViewHost* render_view_host);
809ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
810ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  // Clear all PowerSaveBlockers, leave power_save_blocker_ empty.
811ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  void ClearAllPowerSaveBlockers();
812ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
813424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  // Helper function to invoke WebContentsDelegate::GetSizeForNewRenderView().
814424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  gfx::Size GetSizeForNewRenderView() const;
815424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
8164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  void OnFrameRemoved(RenderViewHostImpl* render_view_host, int64 frame_id);
8174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
818f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Adds/removes a callback called on creation of each new WebContents.
819f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Deprecated, about to remove.
820f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  static void AddCreatedCallback(const CreatedCallback& callback);
821f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  static void RemoveCreatedCallback(const CreatedCallback& callback);
822f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
8235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Data for core operation ---------------------------------------------------
8245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Delegate for notifying our owner about stuff. Not owned by us.
8265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WebContentsDelegate* delegate_;
8275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Handles the back/forward list and loading.
8295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NavigationControllerImpl controller_;
8305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The corresponding view.
8322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_ptr<WebContentsViewPort> view_;
8335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The view of the RVHD. Usually this is our WebContentsView implementation,
8355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // but if an embedder uses a different WebContentsView, they'll need to
8365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // provide this.
8375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  RenderViewHostDelegateView* render_view_host_delegate_view_;
8385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Tracks created WebContentsImpl objects that have not been shown yet. They
8405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // are identified by the route ID passed to CreateNewWindow.
8415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  typedef std::map<int, WebContentsImpl*> PendingContents;
8425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PendingContents pending_contents_;
8435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // These maps hold on to the widgets that we created on behalf of the renderer
8455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // that haven't shown yet.
8465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  typedef std::map<int, RenderWidgetHostView*> PendingWidgetViews;
8475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PendingWidgetViews pending_widget_views_;
8485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
84990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  typedef std::map<WebContentsImpl*, DestructionObserver*> DestructionObservers;
85090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  DestructionObservers destruction_observers_;
85190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
8525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // A list of observers notified when page state changes. Weak references.
853f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // This MUST be listed above frame_tree_ since at destruction time the
8545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // latter might cause RenderViewHost's destructor to call us and we might use
8555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // the observer list then.
8565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ObserverList<WebContentsObserver> observers_;
8575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The tab that opened this tab, if any.  Will be set to null if the opener
8595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // is closed.
8605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WebContentsImpl* opener_;
8615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
862c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#if defined(OS_WIN) && defined(USE_AURA)
863c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  gfx::NativeViewAccessible accessible_parent_;
864c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif
865c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
8665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Helper classes ------------------------------------------------------------
8675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
868ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  // Maps the RenderViewHost to its media_player_cookie and PowerSaveBlocker
869ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  // pairs. Key is the RenderViewHost, value is the map which maps player_cookie
870ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  // on to PowerSaveBlocker.
871ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  typedef std::map<RenderViewHost*, std::map<int64, PowerSaveBlocker*> >
872ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch      PowerSaveBlockerMap;
873ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  PowerSaveBlockerMap power_save_blockers_;
874ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
875f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Manages the frame tree of the page and process swaps in each node.
8764e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  FrameTree frame_tree_;
8774e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
8787d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#if defined(OS_ANDROID)
8795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Manages injecting Java objects into all RenderViewHosts associated with
8805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // this WebContentsImpl.
8815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<JavaBridgeDispatcherHostManager>
8825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      java_bridge_dispatcher_host_manager_;
8832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
8845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // SavePackage, lazily created.
8865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_refptr<SavePackage> save_package_;
8875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Data for loading state ----------------------------------------------------
8895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Indicates whether we're currently loading a resource.
8915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool is_loading_;
8925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Indicates if the tab is considered crashed.
8945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::TerminationStatus crashed_status_;
8955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int crashed_error_code_;
8965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Whether this WebContents is waiting for a first-response for the
8985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // main resource of the page. This controls whether the throbber state is
8995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // "waiting" or "loading."
9005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool waiting_for_response_;
9015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Map of SiteInstance ID to max page ID for this tab. A page ID is specific
9035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // to a given tab and SiteInstance, and must be valid for the lifetime of the
9045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // WebContentsImpl.
9055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::map<int32, int32> max_page_ids_;
9065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // System time at which the current load was started.
9085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::TimeTicks current_load_start_;
9095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The current load state and the URL associated with it.
9115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  net::LoadStateWithParam load_state_;
912a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  base::string16 load_state_host_;
9135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Upload progress, for displaying in the status bar.
9145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Set to zero when there is no significant upload happening.
9155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  uint64 upload_size_;
9165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  uint64 upload_position_;
9175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Data for current page -----------------------------------------------------
9195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // When a title cannot be taken from any entry, this title will be used.
921a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  base::string16 page_title_when_no_navigation_entry_;
9225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // When a navigation occurs, we record its contents MIME type. It can be
9245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // used to check whether we can do something for some special contents.
9255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string contents_mime_type_;
9265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Character encoding.
9285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string encoding_;
9295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // True if this is a secure page which displayed insecure content.
9315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool displayed_insecure_content_;
9325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Data for misc internal state ----------------------------------------------
9345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // When > 0, the WebContents is currently being captured (e.g., for
9362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // screenshots or mirroring); and the underlying RenderWidgetHost should not
9372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // be told it is hidden.
9382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int capturer_count_;
9392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
9402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Tracks whether RWHV should be visible once capturer_count_ becomes zero.
9412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  bool should_normally_be_visible_;
9425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // See getter above.
9445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool is_being_destroyed_;
9455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Indicates whether we should notify about disconnection of this
9475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // WebContentsImpl. This is used to ensure disconnection notifications only
9485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // happen if a connection notification has happened and that they happen only
9495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // once.
9505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool notify_disconnection_;
9515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Pointer to the JavaScript dialog manager, lazily assigned. Used because the
9535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // delegate of this WebContentsImpl is nulled before its destructor is called.
9542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  JavaScriptDialogManager* dialog_manager_;
9555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Set to true when there is an active "before unload" dialog.  When true,
9575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // we've forced the throbber to start in Navigate, and we need to remember to
9585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // turn it off in OnJavaScriptMessageBoxClosed if the navigation is canceled.
9595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool is_showing_before_unload_dialog_;
9605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Settings that get passed to the renderer process.
9625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  RendererPreferences renderer_preferences_;
9635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The time that this tab was last selected.
9655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::TimeTicks last_selected_time_;
9665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // See description above setter.
9685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool closed_by_user_gesture_;
9695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Minimum/maximum zoom percent.
9715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int minimum_zoom_percent_;
9725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int maximum_zoom_percent_;
9735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // If true, the default zoom limits have been overriden for this tab, in which
9745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // case we don't want saved settings to apply to it and we don't want to
9755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // remember it.
9765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool temporary_zoom_settings_;
9775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The intrinsic size of the page.
9795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gfx::Size preferred_size_;
9805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_ANDROID)
9822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Date time chooser opened by this tab.
9832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Only used in Android since all other platforms use a multi field UI.
9842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_ptr<DateTimeChooserAndroid> date_time_chooser_;
9852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
9862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
9875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Color chooser that was opened by this tab.
98890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  scoped_ptr<ColorChooser> color_chooser_;
98990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
99090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // A unique identifier for the current color chooser.  Identifiers are unique
99190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // across a renderer process.  This avoids race conditions in synchronizing
99290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // the browser and renderer processes.  For example, if a renderer closes one
99390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // chooser and opens another, and simultaneously the user picks a color in the
99490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // first chooser, the IDs can be used to drop the "chose a color" message
99590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // rather than erroneously tell the renderer that the user picked a color in
99690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // the second chooser.
99790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  int color_chooser_identifier_;
9985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Manages the embedder state for browser plugins, if this WebContents is an
10005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // embedder; NULL otherwise.
10015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<BrowserPluginEmbedder> browser_plugin_embedder_;
10025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Manages the guest state for browser plugin, if this WebContents is a guest;
10035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // NULL otherwise.
10045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<BrowserPluginGuest> browser_plugin_guest_;
10055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // This must be at the end, or else we might get notifications and use other
10075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // member variables that are gone.
10085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NotificationRegistrar registrar_;
10095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1010a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // Used during IPC message dispatching from the RenderView so that the
1011a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // handlers can get a pointer to the RVH through which the message was
1012a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // received.
1013a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  RenderViewHost* render_view_message_source_;
10145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // All live RenderWidgetHostImpls that are created by this object and may
10165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // outlive it.
10175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::set<RenderWidgetHostImpl*> created_widgets_;
10185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Routing id of the shown fullscreen widget or MSG_ROUTING_NONE otherwise.
10202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int fullscreen_widget_routing_id_;
10212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1022c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Maps the ids of pending image downloads to their callbacks
1023c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  typedef std::map<int, ImageDownloadCallback> ImageDownloadMap;
1024c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  ImageDownloadMap image_download_map_;
10252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
10265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(WebContentsImpl);
10275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
10285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace content
10305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CONTENT_BROWSER_WEB_CONTENTS_WEB_CONTENTS_IMPL_H_
1032