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