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" 136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "base/containers/scoped_ptr_hash_map.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/gtest_prod_util.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/observer_list.h" 17a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch#include "base/process/process.h" 18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/values.h" 191e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "content/browser/frame_host/frame_tree.h" 201e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "content/browser/frame_host/navigation_controller_delegate.h" 211e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "content/browser/frame_host/navigation_controller_impl.h" 22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "content/browser/frame_host/navigator_delegate.h" 23a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "content/browser/frame_host/render_frame_host_delegate.h" 24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "content/browser/frame_host/render_frame_host_manager.h" 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "content/browser/media/audio_stream_monitor.h" 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/browser/renderer_host/render_view_host_delegate.h" 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/browser/renderer_host/render_widget_host_delegate.h" 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "content/common/accessibility_mode_enums.h" 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/content_export.h" 30a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "content/public/browser/color_chooser.h" 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_observer.h" 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_registrar.h" 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/web_contents.h" 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/common/renderer_preferences.h" 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "content/public/common/resource_type.h" 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/common/three_d_api_types.h" 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/base/load_states.h" 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "net/http/http_response_headers.h" 397d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebDragOperation.h" 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "ui/base/page_transition_types.h" 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/rect_f.h" 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/size.h" 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct BrowserPluginHostMsg_ResizeGuest_Params; 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct ViewHostMsg_DateTimeDialogValue_Params; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ViewMsg_PostMessage_Params; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BrowserPluginEmbedder; 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BrowserPluginGuest; 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class BrowserPluginGuestManager; 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class DateTimeChooserAndroid; 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DownloadItem; 54cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class GeolocationDispatcherHost; 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class InterstitialPageImpl; 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class JavaScriptDialogManager; 571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass ManifestManagerHost; 58f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class MidiDispatcherHost; 59ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochclass PowerSaveBlocker; 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RenderViewHost; 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RenderViewHostDelegateView; 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RenderViewHostImpl; 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RenderWidgetHostImpl; 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SavePackage; 65f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class ScreenOrientationDispatcherHost; 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SiteInstance; 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TestWebContents; 681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass WebContentsAudioMuter; 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebContentsDelegate; 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebContentsImpl; 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebContentsObserver; 72010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)class WebContentsView; 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebContentsViewDelegate; 74a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)struct AXEventNotificationDetails; 75a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)struct ColorSuggestion; 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct FaviconURL; 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct LoadNotificationDetails; 785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct ResourceRedirectDetails; 795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct ResourceRequestDetails; 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 816e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#if defined(OS_ANDROID) 826e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class WebContentsAndroid; 836e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#endif 846e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Factory function for the implementations that content knows about. Takes 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ownership of |delegate|. 87010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)WebContentsView* CreateWebContentsView( 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebContentsImpl* web_contents, 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebContentsViewDelegate* delegate, 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RenderViewHostDelegateView** render_view_host_delegate_view); 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CONTENT_EXPORT WebContentsImpl 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : public NON_EXPORTED_BASE(WebContents), 94a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) public NON_EXPORTED_BASE(RenderFrameHostDelegate), 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public RenderViewHostDelegate, 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public RenderWidgetHostDelegate, 97f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) public RenderFrameHostManager::Delegate, 981e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) public NotificationObserver, 99f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) public NON_EXPORTED_BASE(NavigationControllerDelegate), 100f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) public NON_EXPORTED_BASE(NavigatorDelegate) { 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~WebContentsImpl(); 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static WebContentsImpl* CreateWithOpener( 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const WebContents::CreateParams& params, 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebContentsImpl* opener); 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 108116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch static std::vector<WebContentsImpl*> GetAllWebContents(); 109116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns the opener WebContentsImpl, if any. This can be set to null if the 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // opener is closed or the page clears its window.opener. 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WebContentsImpl* opener() const { return opener_; } 1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Creates a swapped out RenderView. This is used by the browser plugin to 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // create a swapped out RenderView in the embedder render process for the 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // guest, to expose the guest's window object to the embedder. 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This returns the routing ID of the newly created swapped out RenderView. 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int CreateSwappedOutRenderView(SiteInstance* instance); 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Complex initialization here. Specifically needed to avoid having 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // members call back into our virtual functions in the constructor. 1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void Init(const WebContents::CreateParams& params); 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the SavePackage which manages the page saving job. May be NULL. 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SavePackage* save_package() const { return save_package_.get(); } 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1277d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#if defined(OS_ANDROID) 1283551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // In Android WebView, the RenderView needs created even there is no 1293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // navigation entry, this allows Android WebViews to use 1303551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // javascript: URLs that load into the DOMWindow before the first page 1313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // load. This is not safe to do in any context that a web page could get a 1323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // reference to the DOMWindow before the first page load. 1333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) bool CreateRenderViewForInitialEmptyDocument(); 1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Expose the render manager for testing. 137a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // TODO(creis): Remove this now that we can get to it via FrameTreeNode. 138f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) RenderFrameHostManager* GetRenderManagerForTesting(); 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns guest browser plugin object, or NULL if this WebContents is not a 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // guest. 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) BrowserPluginGuest* GetBrowserPluginGuest() const; 143eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 144eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Sets a BrowserPluginGuest object for this WebContents. If this WebContents 145eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // has a BrowserPluginGuest then that implies that it is being hosted by 146eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // a BrowserPlugin object in an embedder renderer process. 147eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void SetBrowserPluginGuest(BrowserPluginGuest* guest); 148eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns embedder browser plugin object, or NULL if this WebContents is not 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // an embedder. 1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) BrowserPluginEmbedder* GetBrowserPluginEmbedder() const; 152eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Gets the current fullscreen render widget's routing ID. Returns 1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // MSG_ROUTING_NONE when there is no fullscreen render widget. 1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int GetFullscreenWidgetRoutingID() const; 1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Invoked when visible SSL state (as defined by SSLStatus) changes. 1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void DidChangeVisibleSSLState(); 1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 160c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Informs the render view host and the BrowserPluginEmbedder, if present, of 161c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // a Drag Source End. 162c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void DragSourceEndedAt(int client_x, int client_y, int screen_x, 163f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) int screen_y, blink::WebDragOperation operation); 164c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // A response has been received for a resource request. 1665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void DidGetResourceResponseStart( 1675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const ResourceRequestDetails& details); 1685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // A redirect was received while requesting a resource. 1705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void DidGetRedirectForResourceRequest( 1715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) RenderViewHost* render_view_host, 1725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const ResourceRedirectDetails& details); 1735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 174010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) WebContentsView* GetView() const; 175010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 176cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) GeolocationDispatcherHost* geolocation_dispatcher_host() { 177cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return geolocation_dispatcher_host_.get(); 178cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 179cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 180116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ScreenOrientationDispatcherHost* screen_orientation_dispatcher_host() { 181116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return screen_orientation_dispatcher_host_.get(); 182116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 183116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 184cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) bool should_normally_be_visible() { return should_normally_be_visible_; } 185cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 186116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Broadcasts the mode change to all frames. 187116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void SetAccessibilityMode(AccessibilityMode mode); 188116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 189116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Adds the given accessibility mode to the current accessibility mode 190116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // bitmap. 191116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void AddAccessibilityMode(AccessibilityMode mode); 192116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 193116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Removes the given accessibility mode from the current accessibility 194116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // mode bitmap, managing the bits that are shared with other modes such 195116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // that a bit will only be turned off when all modes that depend on it 196116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // have been removed. 197116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void RemoveAccessibilityMode(AccessibilityMode mode); 198116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // WebContents ------------------------------------------------------ 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual WebContentsDelegate* GetDelegate() OVERRIDE; 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetDelegate(WebContentsDelegate* delegate) OVERRIDE; 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual NavigationControllerImpl& GetController() OVERRIDE; 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual const NavigationControllerImpl& GetController() const OVERRIDE; 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual BrowserContext* GetBrowserContext() const OVERRIDE; 205c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual const GURL& GetURL() const OVERRIDE; 206c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual const GURL& GetVisibleURL() const OVERRIDE; 207c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual const GURL& GetLastCommittedURL() const OVERRIDE; 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual RenderProcessHost* GetRenderProcessHost() const OVERRIDE; 209a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual RenderFrameHost* GetMainFrame() OVERRIDE; 210a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual RenderFrameHost* GetFocusedFrame() OVERRIDE; 2115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void ForEachFrame( 2125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::Callback<void(RenderFrameHost*)>& on_frame) OVERRIDE; 2135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void SendToAllFrames(IPC::Message* message) OVERRIDE; 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual RenderViewHost* GetRenderViewHost() const OVERRIDE; 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int GetRoutingID() const OVERRIDE; 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual RenderWidgetHostView* GetRenderWidgetHostView() const OVERRIDE; 217d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) virtual RenderWidgetHostView* GetFullscreenRenderWidgetHostView() const 218d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) OVERRIDE; 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual WebUI* CreateWebUI(const GURL& url) OVERRIDE; 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual WebUI* GetWebUI() const OVERRIDE; 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual WebUI* GetCommittedWebUI() const OVERRIDE; 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetUserAgentOverride(const std::string& override) OVERRIDE; 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual const std::string& GetUserAgentOverride() const OVERRIDE; 224116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void EnableTreeOnlyAccessibilityMode() OVERRIDE; 225116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual bool IsTreeOnlyAccessibilityModeForTesting() const OVERRIDE; 226116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual bool IsFullAccessibilityModeForTesting() const OVERRIDE; 2275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(OS_WIN) 228c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void SetParentNativeViewAccessible( 229c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gfx::NativeViewAccessible accessible_parent) OVERRIDE; 230c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif 231a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual const base::string16& GetTitle() const OVERRIDE; 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int32 GetMaxPageID() OVERRIDE; 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int32 GetMaxPageIDForSiteInstance( 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SiteInstance* site_instance) OVERRIDE; 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual SiteInstance* GetSiteInstance() const OVERRIDE; 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual SiteInstance* GetPendingSiteInstance() const OVERRIDE; 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsLoading() const OVERRIDE; 238cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual bool IsLoadingToDifferentDocument() const OVERRIDE; 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsWaitingForResponse() const OVERRIDE; 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual const net::LoadStateWithParam& GetLoadState() const OVERRIDE; 241a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual const base::string16& GetLoadStateHost() const OVERRIDE; 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual uint64 GetUploadSize() const OVERRIDE; 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual uint64 GetUploadPosition() const OVERRIDE; 2447d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual std::set<GURL> GetSitesInTab() const OVERRIDE; 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual const std::string& GetEncoding() const OVERRIDE; 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool DisplayedInsecureContent() const OVERRIDE; 2475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void IncrementCapturerCount(const gfx::Size& capture_size) OVERRIDE; 2482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void DecrementCapturerCount() OVERRIDE; 249ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch virtual int GetCapturerCount() const OVERRIDE; 2501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual bool IsAudioMuted() const OVERRIDE; 2511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void SetAudioMuted(bool mute) OVERRIDE; 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsCrashed() const OVERRIDE; 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetIsCrashed(base::TerminationStatus status, 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int error_code) OVERRIDE; 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual base::TerminationStatus GetCrashedStatus() const OVERRIDE; 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsBeingDestroyed() const OVERRIDE; 2576e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual void NotifyNavigationStateChanged( 2586e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) InvalidateTypes changed_flags) OVERRIDE; 2595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual base::TimeTicks GetLastActiveTime() const OVERRIDE; 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void WasShown() OVERRIDE; 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void WasHidden() OVERRIDE; 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool NeedToFireBeforeUnload() OVERRIDE; 263c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void DispatchBeforeUnload(bool for_cross_site_transition) OVERRIDE; 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Stop() OVERRIDE; 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual WebContents* Clone() OVERRIDE; 266e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch virtual void ReloadFocusedFrame(bool ignore_cache) OVERRIDE; 267c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void Undo() OVERRIDE; 268c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void Redo() OVERRIDE; 269c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void Cut() OVERRIDE; 270c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void Copy() OVERRIDE; 271c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void CopyToFindPboard() OVERRIDE; 272c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void Paste() OVERRIDE; 273c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void PasteAndMatchStyle() OVERRIDE; 274c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void Delete() OVERRIDE; 275c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void SelectAll() OVERRIDE; 276c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void Unselect() OVERRIDE; 277c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void Replace(const base::string16& word) OVERRIDE; 278c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void ReplaceMisspelling(const base::string16& word) OVERRIDE; 279c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void NotifyContextMenuClosed( 280c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const CustomContextMenuContext& context) OVERRIDE; 281c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void ExecuteCustomContextMenuCommand( 282c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch int action, const CustomContextMenuContext& context) OVERRIDE; 283010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual gfx::NativeView GetNativeView() OVERRIDE; 284010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual gfx::NativeView GetContentNativeView() OVERRIDE; 285010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual gfx::NativeWindow GetTopLevelNativeWindow() OVERRIDE; 286010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual gfx::Rect GetContainerBounds() OVERRIDE; 287010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual gfx::Rect GetViewBounds() OVERRIDE; 288010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual DropData* GetDropData() OVERRIDE; 289010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void Focus() OVERRIDE; 290010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void SetInitialFocus() OVERRIDE; 291010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void StoreFocus() OVERRIDE; 292010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void RestoreFocus() OVERRIDE; 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void FocusThroughTabTraversal(bool reverse) OVERRIDE; 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool ShowingInterstitialPage() const OVERRIDE; 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual InterstitialPage* GetInterstitialPage() const OVERRIDE; 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsSavable() OVERRIDE; 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnSavePage() OVERRIDE; 2982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool SavePage(const base::FilePath& main_file, 2992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& dir_path, 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SavePageType save_type) OVERRIDE; 301ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch virtual void SaveFrame(const GURL& url, 302ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch const Referrer& referrer) OVERRIDE; 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void GenerateMHTML( 3042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& file, 305424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) const base::Callback<void(int64)>& callback) 3062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) OVERRIDE; 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual const std::string& GetContentsMimeType() const OVERRIDE; 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool WillNotifyDisconnection() const OVERRIDE; 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetOverrideEncoding(const std::string& encoding) OVERRIDE; 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ResetOverrideEncoding() OVERRIDE; 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual RendererPreferences* GetMutableRendererPrefs() OVERRIDE; 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Close() OVERRIDE; 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SystemDragEnded() OVERRIDE; 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void UserGestureDone() OVERRIDE; 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetClosedByUserGesture(bool value) OVERRIDE; 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool GetClosedByUserGesture() const OVERRIDE; 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ViewSource() OVERRIDE; 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ViewFrameSource(const GURL& url, 31990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const PageState& page_state) OVERRIDE; 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int GetMinimumZoomPercent() const OVERRIDE; 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int GetMaximumZoomPercent() const OVERRIDE; 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual gfx::Size GetPreferredSize() const OVERRIDE; 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool GotResponseToLockMouseRequest(bool allowed) OVERRIDE; 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool HasOpener() const OVERRIDE; 32590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual void DidChooseColorInColorChooser(SkColor color) OVERRIDE; 32690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual void DidEndColorChooser() OVERRIDE; 327c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual int DownloadImage(const GURL& url, 328c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool is_favicon, 329d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) uint32_t max_bitmap_size, 330c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const ImageDownloadCallback& callback) OVERRIDE; 3315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual bool IsSubframe() const OVERRIDE; 3325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void Find(int request_id, 3335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16& search_text, 3345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const blink::WebFindOptions& options) OVERRIDE; 3355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void StopFinding(StopFindAction action) OVERRIDE; 336c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void InsertCSS(const std::string& css) OVERRIDE; 3371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual bool WasRecentlyAudible() OVERRIDE; 3381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void GetManifest(const GetManifestCallback&) OVERRIDE; 339a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#if defined(OS_ANDROID) 340a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual base::android::ScopedJavaLocalRef<jobject> GetJavaWebContents() 341a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) OVERRIDE; 3426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual WebContentsAndroid* GetWebContentsAndroid(); 343010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#elif defined(OS_MACOSX) 344116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void SetAllowOtherViews(bool allow) OVERRIDE; 345116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual bool GetAllowOtherViews() OVERRIDE; 346a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#endif 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Implementation of PageNavigator. 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual WebContents* OpenURL(const OpenURLParams& params) OVERRIDE; 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Implementation of IPC::Sender. 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool Send(IPC::Message* message) OVERRIDE; 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 354a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // RenderFrameHostDelegate --------------------------------------------------- 355a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual bool OnMessageReceived(RenderFrameHost* render_frame_host, 356a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const IPC::Message& message) OVERRIDE; 357c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual const GURL& GetMainFrameLastCommittedURL() const OVERRIDE; 358a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual void RenderFrameCreated(RenderFrameHost* render_frame_host) OVERRIDE; 359a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual void RenderFrameDeleted(RenderFrameHost* render_frame_host) OVERRIDE; 360effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch virtual void DidStartLoading(RenderFrameHost* render_frame_host, 361effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch bool to_different_document) OVERRIDE; 362effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch virtual void SwappedOut(RenderFrameHost* render_frame_host) OVERRIDE; 3635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void DidDeferAfterResponseStarted( 3646e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const TransitionLayerData& transition_data) OVERRIDE; 365116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual bool WillHandleDeferAfterResponseStarted() OVERRIDE; 3665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void WorkerCrashed(RenderFrameHost* render_frame_host) OVERRIDE; 3675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void ShowContextMenu(RenderFrameHost* render_frame_host, 3685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const ContextMenuParams& params) OVERRIDE; 369010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void RunJavaScriptMessage(RenderFrameHost* render_frame_host, 370c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const base::string16& message, 371c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const base::string16& default_prompt, 372c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const GURL& frame_url, 373c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch JavaScriptMessageType type, 374c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch IPC::Message* reply_msg) OVERRIDE; 375010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void RunBeforeUnloadConfirm(RenderFrameHost* render_frame_host, 376c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const base::string16& message, 377c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch bool is_reload, 378c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch IPC::Message* reply_msg) OVERRIDE; 3795c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu virtual void DidAccessInitialDocument() OVERRIDE; 380010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void DidDisownOpener(RenderFrameHost* render_frame_host) OVERRIDE; 381010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void DocumentOnLoadCompleted( 382010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) RenderFrameHost* render_frame_host) OVERRIDE; 383cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void UpdateTitle(RenderFrameHost* render_frame_host, 384cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) int32 page_id, 385cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const base::string16& title, 386cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) base::i18n::TextDirection title_direction) OVERRIDE; 387cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void UpdateEncoding(RenderFrameHost* render_frame_host, 388cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const std::string& encoding) OVERRIDE; 3895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual WebContents* GetAsWebContents() OVERRIDE; 3900529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch virtual bool IsNeverVisible() OVERRIDE; 391116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual AccessibilityMode GetAccessibilityMode() const OVERRIDE; 392116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void AccessibilityEventReceived( 393116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const std::vector<AXEventNotificationDetails>& details) OVERRIDE; 3941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual RenderFrameHost* GetGuestByInstanceID(int browser_plugin_instance_id) 3951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci OVERRIDE; 396116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#if defined(OS_WIN) 397116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual gfx::NativeViewAccessible GetParentNativeViewAccessible() OVERRIDE; 398116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 400a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // RenderViewHostDelegate ---------------------------------------------------- 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual RenderViewHostDelegateView* GetDelegateView() OVERRIDE; 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool OnMessageReceived(RenderViewHost* render_view_host, 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const IPC::Message& message) OVERRIDE; 4045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // RenderFrameHostDelegate has the same method, so list it there because this 4055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // interface is going away. 4065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // virtual WebContents* GetAsWebContents() OVERRIDE; 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual gfx::Rect GetRootWindowResizerRect() const OVERRIDE; 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void RenderViewCreated(RenderViewHost* render_view_host) OVERRIDE; 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void RenderViewReady(RenderViewHost* render_view_host) OVERRIDE; 410c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void RenderViewTerminated(RenderViewHost* render_view_host, 411c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::TerminationStatus status, 412c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int error_code) OVERRIDE; 4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void RenderViewDeleted(RenderViewHost* render_view_host) OVERRIDE; 4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void UpdateState(RenderViewHost* render_view_host, 4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32 page_id, 41690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const PageState& page_state) OVERRIDE; 4171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void UpdateTargetURL(const GURL& url) OVERRIDE; 4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Close(RenderViewHost* render_view_host) OVERRIDE; 4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void RequestMove(const gfx::Rect& new_bounds) OVERRIDE; 4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DidCancelLoading() OVERRIDE; 4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DocumentAvailableInMainFrame( 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RenderViewHost* render_view_host) OVERRIDE; 4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void RouteCloseEvent(RenderViewHost* rvh) OVERRIDE; 4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void RouteMessageEvent( 4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RenderViewHost* rvh, 4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const ViewMsg_PostMessage_Params& params) OVERRIDE; 4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool AddMessageToConsole(int32 level, 428a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& message, 4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32 line_no, 430a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& source_id) OVERRIDE; 4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual RendererPreferences GetRendererPrefs( 4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowserContext* browser_context) const OVERRIDE; 4336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual WebPreferences ComputeWebkitPrefs() OVERRIDE; 4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnUserGesture() OVERRIDE; 4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnIgnoredUIEvent() OVERRIDE; 4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void RendererUnresponsive(RenderViewHost* render_view_host, 4373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) bool is_during_beforeunload, 4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool is_during_unload) OVERRIDE; 4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void RendererResponsive(RenderViewHost* render_view_host) OVERRIDE; 4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void LoadStateChanged(const GURL& url, 4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const net::LoadStateWithParam& load_state, 4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint64 upload_position, 4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint64 upload_size) OVERRIDE; 4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Activate() OVERRIDE; 4455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Deactivate() OVERRIDE; 4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void LostCapture() OVERRIDE; 4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void HandleMouseDown() OVERRIDE; 4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void HandleMouseUp() OVERRIDE; 4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void HandlePointerActivate() OVERRIDE; 4505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void HandleGestureBegin() OVERRIDE; 4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void HandleGestureEnd() OVERRIDE; 4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void RunFileChooser( 4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RenderViewHost* render_view_host, 4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const FileChooserParams& params) OVERRIDE; 4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ToggleFullscreenMode(bool enter_fullscreen) OVERRIDE; 4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsFullscreenForCurrentTab() const OVERRIDE; 4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void UpdatePreferredSize(const gfx::Size& pref_size) OVERRIDE; 4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ResizeDueToAutoResize(const gfx::Size& new_size) OVERRIDE; 4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void RequestToLockMouse(bool user_gesture, 4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool last_unlocked_by_target) OVERRIDE; 4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void LostMouseLock() OVERRIDE; 4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void CreateNewWindow( 463a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) int render_process_id, 4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int route_id, 465868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int main_frame_route_id, 4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const ViewHostMsg_CreateWindow_Params& params, 4675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionStorageNamespace* session_storage_namespace) OVERRIDE; 468a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual void CreateNewWidget(int render_process_id, 469a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) int route_id, 470f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebPopupType popup_type) OVERRIDE; 471a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual void CreateNewFullscreenWidget(int render_process_id, 472a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) int route_id) OVERRIDE; 4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ShowCreatedWindow(int route_id, 4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WindowOpenDisposition disposition, 4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Rect& initial_pos, 4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool user_gesture) OVERRIDE; 4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ShowCreatedWidget(int route_id, 4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Rect& initial_pos) OVERRIDE; 4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ShowCreatedFullscreenWidget(int route_id) OVERRIDE; 4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void RequestMediaAccessPermission( 4812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const MediaStreamRequest& request, 4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const MediaResponseCallback& callback) OVERRIDE; 4831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual bool CheckMediaAccessPermission(const GURL& security_origin, 4841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci MediaStreamType type) OVERRIDE; 485a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch virtual SessionStorageNamespace* GetSessionStorageNamespace( 486a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch SiteInstance* instance) OVERRIDE; 48746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) virtual SessionStorageNamespaceMap GetSessionStorageNamespaceMap() OVERRIDE; 4884e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual FrameTree* GetFrameTree() OVERRIDE; 489e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch virtual void SetIsVirtualKeyboardRequested(bool requested) OVERRIDE; 490e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch virtual bool IsVirtualKeyboardRequested() OVERRIDE; 4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 492a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // NavigatorDelegate --------------------------------------------------------- 493a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 494a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual void DidStartProvisionalLoad( 495a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) RenderFrameHostImpl* render_frame_host, 496a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const GURL& validated_url, 497a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) bool is_error_page, 498a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) bool is_iframe_srcdoc) OVERRIDE; 4995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void DidStartNavigationTransition( 5005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) RenderFrameHostImpl* render_frame_host) OVERRIDE; 5015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void DidFailProvisionalLoadWithError( 5025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) RenderFrameHostImpl* render_frame_host, 5035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const FrameHostMsg_DidFailProvisionalLoadWithError_Params& params) 5045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) OVERRIDE; 5055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void DidFailLoadWithError( 5065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) RenderFrameHostImpl* render_frame_host, 5075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const GURL& url, 5085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int error_code, 5095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16& error_description) OVERRIDE; 5105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void DidCommitProvisionalLoad( 511a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) RenderFrameHostImpl* render_frame_host, 5125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const GURL& url, 5131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ui::PageTransition transition_type) OVERRIDE; 514e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch virtual void DidNavigateMainFramePreCommit( 515116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch bool navigation_is_within_page) OVERRIDE; 5165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void DidNavigateMainFramePostCommit( 5175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const LoadCommittedDetails& details, 5185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const FrameHostMsg_DidCommitProvisionalLoad_Params& params) OVERRIDE; 5195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void DidNavigateAnyFramePostCommit( 5205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) RenderFrameHostImpl* render_frame_host, 5215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const LoadCommittedDetails& details, 5225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const FrameHostMsg_DidCommitProvisionalLoad_Params& params) OVERRIDE; 5235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void SetMainFrameMimeType(const std::string& mime_type) OVERRIDE; 52446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) virtual bool CanOverscrollContent() const OVERRIDE; 525a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual void NotifyChangedNavigationState( 526a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) InvalidateTypes changed_flags) OVERRIDE; 5275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void AboutToNavigateRenderFrame( 5285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) RenderFrameHostImpl* render_frame_host) OVERRIDE; 5295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void DidStartNavigationToPendingEntry( 5305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) RenderFrameHostImpl* render_frame_host, 5315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const GURL& url, 5325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) NavigationController::ReloadType reload_type) OVERRIDE; 533a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual void RequestOpenURL(RenderFrameHostImpl* render_frame_host, 534a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const OpenURLParams& params) OVERRIDE; 5350529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch virtual bool ShouldPreserveAbortedURLs() OVERRIDE; 536a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // RenderWidgetHostDelegate -------------------------------------------------- 5385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void RenderWidgetDeleted( 5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RenderWidgetHostImpl* render_widget_host) OVERRIDE; 5415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool PreHandleKeyboardEvent( 5425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const NativeWebKeyboardEvent& event, 5435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool* is_keyboard_shortcut) OVERRIDE; 5445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void HandleKeyboardEvent( 5455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const NativeWebKeyboardEvent& event) OVERRIDE; 546a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual bool HandleWheelEvent( 547f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebMouseWheelEvent& event) OVERRIDE; 5485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual bool PreHandleGestureEvent( 5495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const blink::WebGestureEvent& event) OVERRIDE; 550effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch virtual bool HandleGestureEvent( 551effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch const blink::WebGestureEvent& event) OVERRIDE; 55290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual void DidSendScreenRects(RenderWidgetHostImpl* rwh) OVERRIDE; 553116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual BrowserAccessibilityManager* GetRootBrowserAccessibilityManager() 554116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch OVERRIDE; 555116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual BrowserAccessibilityManager* 556116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch GetOrCreateRootBrowserAccessibilityManager() OVERRIDE; 5575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 558f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // RenderFrameHostManager::Delegate ------------------------------------------ 5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool CreateRenderViewForRenderManager( 5615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) RenderViewHost* render_view_host, 5625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int opener_route_id, 563cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) int proxy_routing_id, 5645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bool for_main_frame_navigation) OVERRIDE; 5655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual bool CreateRenderFrameForRenderManager( 5665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) RenderFrameHost* render_frame_host, 5675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) int parent_routing_id) OVERRIDE; 5685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void BeforeUnloadFiredFromRenderManager( 5695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool proceed, const base::TimeTicks& proceed_time, 5705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool* proceed_to_fire_unload) OVERRIDE; 5717dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch virtual void RenderProcessGoneFromRenderManager( 5725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RenderViewHost* render_view_host) OVERRIDE; 5735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void UpdateRenderViewSizeForRenderManager() OVERRIDE; 5744e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual void CancelModalDialogsForRenderManager() OVERRIDE; 575116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void NotifySwappedFromRenderManager(RenderFrameHost* old_host, 576116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch RenderFrameHost* new_host, 577116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch bool is_main_frame) OVERRIDE; 5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int CreateOpenerRenderViewsForRenderManager( 5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SiteInstance* instance) OVERRIDE; 5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual NavigationControllerImpl& 5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetControllerForRenderManager() OVERRIDE; 5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual WebUIImpl* CreateWebUIForRenderManager(const GURL& url) OVERRIDE; 5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual NavigationEntry* 5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetLastCommittedNavigationEntryForRenderManager() OVERRIDE; 5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool FocusLocationBarByDefault() OVERRIDE; 5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetFocusToLocationBar(bool select_all) OVERRIDE; 5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void CreateViewAndSetSizeForRVH(RenderViewHost* rvh) OVERRIDE; 5883551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual bool IsHidden() OVERRIDE; 5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // NotificationObserver ------------------------------------------------------ 5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Observe(int type, 5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const NotificationSource& source, 5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const NotificationDetails& details) OVERRIDE; 5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5961e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // NavigationControllerDelegate ---------------------------------------------- 5971e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 5981e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) virtual WebContents* GetWebContents() OVERRIDE; 5991e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) virtual void NotifyNavigationEntryCommitted( 6001e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) const LoadCommittedDetails& load_details) OVERRIDE; 6011e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 6021e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Invoked before a form repost warning is shown. 6031e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) virtual void NotifyBeforeFormRepostWarningShow() OVERRIDE; 6041e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 6051e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Activate this WebContents and show a form repost warning. 6061e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) virtual void ActivateAndShowRepostFormWarningDialog() OVERRIDE; 6071e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 6085c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // Whether the initial empty page of this view has been accessed by another 6095c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // page, making it unsafe to show the pending URL. Always false after the 6105c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // first commit. 6115c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu virtual bool HasAccessedInitialDocument() OVERRIDE; 6125c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 6131e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Updates the max page ID for the current SiteInstance in this 6141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // WebContentsImpl to be at least |page_id|. 6151e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) virtual void UpdateMaxPageID(int32 page_id) OVERRIDE; 6161e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 6171e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Updates the max page ID for the given SiteInstance in this WebContentsImpl 6181e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // to be at least |page_id|. 6191e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) virtual void UpdateMaxPageIDForSiteInstance(SiteInstance* site_instance, 6201e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) int32 page_id) OVERRIDE; 6211e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 6221e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Copy the current map of SiteInstance ID to max page ID from another tab. 6231e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // This is necessary when this tab adopts the NavigationEntries from 6241e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // |web_contents|. 6251e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) virtual void CopyMaxPageIDsFrom(WebContents* web_contents) OVERRIDE; 6261e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 6271e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Called by the NavigationController to cause the WebContentsImpl to navigate 6281e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // to the current pending entry. The NavigationController should be called 6291e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // back with RendererDidNavigate on success or DiscardPendingEntry on failure. 6301e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // The callbacks can be inside of this function, or at some future time. 6311e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // 6321e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // The entry has a PageID of -1 if newly created (corresponding to navigation 6331e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // to a new URL). 6341e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // 6351e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // If this method returns false, then the navigation is discarded (equivalent 6361e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // to calling DiscardPendingEntry on the NavigationController). 6371e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) virtual bool NavigateToPendingEntry( 6381e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) NavigationController::ReloadType reload_type) OVERRIDE; 6391e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 6401e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Sets the history for this WebContentsImpl to |history_length| entries, and 6411e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // moves the current page_id to the last entry in the list if it's valid. 6421e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // This is mainly used when a prerendered page is swapped into the current 6431e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // tab. The method is virtual for testing. 6441e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) virtual void SetHistoryLengthAndPrune( 6451e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) const SiteInstance* site_instance, 6461e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) int merge_history_length, 6471e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) int32 minimum_page_id) OVERRIDE; 6481e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 6495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Called by InterstitialPageImpl when it creates a RenderFrameHost. 6505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void RenderFrameForInterstitialPageCreated( 6515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) RenderFrameHost* render_frame_host) OVERRIDE; 6521e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 6531e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Sets the passed interstitial as the currently showing interstitial. 6541e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // No interstitial page should already be attached. 6551e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) virtual void AttachInterstitialPage( 6561e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) InterstitialPageImpl* interstitial_page) OVERRIDE; 6571e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 6581e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Unsets the currently showing interstitial. 6591e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) virtual void DetachInterstitialPage() OVERRIDE; 6601e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 6611e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Changes the IsLoading state and notifies the delegate as needed. 6621e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // |details| is used to provide details on the load that just finished 6631e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // (but can be null if not applicable). 6641e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) virtual void SetIsLoading(RenderViewHost* render_view_host, 6651e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) bool is_loading, 666effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch bool to_different_document, 6671e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) LoadNotificationDetails* details) OVERRIDE; 6681e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 669f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) typedef base::Callback<void(WebContents*)> CreatedCallback; 6705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 671c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // Requests the renderer to select the region between two points in the 672c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // currently focused frame. 673c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch void SelectRange(const gfx::Point& start, const gfx::Point& end); 674c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 675116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Notifies the main frame that it can continue navigation (if it was deferred 676116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // immediately at first response). 677116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void ResumeResponseDeferredAtStart(); 678116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 67903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // Forces overscroll to be disabled (used by touch emulation). 68003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) void SetForceDisableOverscrollContent(bool force_disable); 68103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 6821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci AudioStreamMonitor* audio_stream_monitor() { 6831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return &audio_stream_monitor_; 6841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 6851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool has_audio_power_save_blocker_for_testing() const { 6871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return audio_power_save_blocker_; 6881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 6891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool has_video_power_save_blocker_for_testing() const { 6911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return video_power_save_blocker_; 6921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 6931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 695f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) friend class TestNavigationObserver; 696cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) friend class WebContentsAddedObserver; 6975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) friend class WebContentsObserver; 6985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) friend class WebContents; // To implement factory methods. 6995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(WebContentsImplTest, NoJSMessageOnInterstitials); 7015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(WebContentsImplTest, UpdateTitle); 7022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(WebContentsImplTest, FindOpenerRVHWhenPending); 7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(WebContentsImplTest, 7045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CrossSiteCantPreemptAfterUnload); 7052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(WebContentsImplTest, PendingContents); 706b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(WebContentsImplTest, FrameTreeShape); 7075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(WebContentsImplTest, GetLastActiveTime); 7085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(FormStructureBrowserTest, HTMLFiles); 7095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(NavigationControllerTest, HistoryNavigate); 710f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderFrameHostManagerTest, PageDoesBackAndReload); 711cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(SitePerProcessBrowserTest, CrossSiteIframe); 7121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci FRIEND_TEST_ALL_PREFIXES(SitePerProcessAccessibilityBrowserTest, 7131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci CrossSiteIframeAccessibility); 7145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // So InterstitialPageImpl can access SetIsLoading. 7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) friend class InterstitialPageImpl; 7175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(brettw) TestWebContents shouldn't exist! 7195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) friend class TestWebContents; 7205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 72190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) class DestructionObserver; 72290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 7235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // See WebContents::Create for a description of these parameters. 7245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebContentsImpl(BrowserContext* browser_context, 7255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebContentsImpl* opener); 7265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 727f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Add and remove observers for page navigation notifications. The order in 728f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // which notifications are sent to observers is undefined. Clients must be 729f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // sure to remove the observer before they go away. 7305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void AddObserver(WebContentsObserver* observer); 7315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void RemoveObserver(WebContentsObserver* observer); 7325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Clears this tab's opener if it has been closed. 73490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void OnWebContentsDestroyed(WebContentsImpl* web_contents); 73590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 73690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Creates and adds to the map a destruction observer watching |web_contents|. 73790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // No-op if such an observer already exists. 73890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void AddDestructionObserver(WebContentsImpl* web_contents); 73990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 74090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Deletes and removes from the map a destruction observer 74190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // watching |web_contents|. No-op if there is no such observer. 74290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void RemoveDestructionObserver(WebContentsImpl* web_contents); 7435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 744cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Traverses all the RenderFrameHosts in the FrameTree and creates a set 745f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // all the unique RenderWidgetHostViews. 746f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::set<RenderWidgetHostView*> GetRenderWidgetHostViewsInTree(); 747cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 7485c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // Callback function when showing JavaScript dialogs. Takes in a routing ID 7495c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // pair to identify the RenderFrameHost that opened the dialog, because it's 7505c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // possible for the RenderFrameHost to be deleted by the time this is called. 7515c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu void OnDialogClosed(int render_process_id, 7525c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu int render_frame_id, 7535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC::Message* reply_msg, 754c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch bool dialog_was_suppressed, 7555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool success, 756a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& user_input); 7575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Callback function when requesting permission to access the PPAPI broker. 7595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // |result| is true if permission was granted. 7603240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch void OnPpapiBrokerPermissionResult(int routing_id, bool result); 7615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 762a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) bool OnMessageReceived(RenderViewHost* render_view_host, 763a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) RenderFrameHost* render_frame_host, 764a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const IPC::Message& message); 765a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 7665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // IPC message handlers. 767116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void OnThemeColorChanged(SkColor theme_color); 7685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnDidLoadResourceFromMemoryCache(const GURL& url, 7695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& security_info, 7705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& http_request, 7715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& mime_type, 7725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ResourceType resource_type); 7735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnDidDisplayInsecureContent(); 7745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnDidRunInsecureContent(const std::string& security_origin, 7755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& target_url); 776a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void OnDocumentLoadedInFrame(); 777effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch void OnDidFinishLoad(const GURL& url); 778cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void OnDidStartLoading(bool to_different_document); 779cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void OnDidStopLoading(); 780cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void OnDidChangeLoadProgress(double load_progress); 7815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnGoToEntryAtOffset(int offset); 7825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnUpdateZoomLimits(int minimum_percent, 783cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) int maximum_percent); 7842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnEnumerateDirectory(int request_id, const base::FilePath& path); 7855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnRegisterProtocolHandler(const std::string& protocol, 7875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& url, 788a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& title, 7895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool user_gesture); 790116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void OnUnregisterProtocolHandler(const std::string& protocol, 791116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const GURL& url, 792116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch bool user_gesture); 7935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnFindReply(int request_id, 7945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int number_of_matches, 7955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Rect& selection_rect, 7965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int active_match_ordinal, 7975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool final_update); 7985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID) 7995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnFindMatchRectsReply(int version, 8005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::vector<gfx::RectF>& rects, 8015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::RectF& active_rect); 8022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 8032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnOpenDateTimeDialog( 8042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const ViewHostMsg_DateTimeDialogValue_Params& value); 8055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 806a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void OnPepperPluginHung(int plugin_child_id, 807a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::FilePath& path, 808a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) bool is_hung); 809a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void OnPluginCrashed(const base::FilePath& plugin_path, 8102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::ProcessId plugin_pid); 811a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void OnDomOperationResponse(const std::string& json_string, 812a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int automation_id); 8135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnAppCacheAccessed(const GURL& manifest_url, bool blocked_by_policy); 814a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void OnOpenColorChooser(int color_chooser_id, 815a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) SkColor color, 816a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const std::vector<ColorSuggestion>& suggestions); 8175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnEndColorChooser(int color_chooser_id); 8185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnSetSelectedColorInColorChooser(int color_chooser_id, SkColor color); 8195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnWebUISend(const GURL& source_url, 8205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& name, 8215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::ListValue& args); 8223240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch void OnRequestPpapiBrokerPermission(int routing_id, 8235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& url, 8242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& plugin_path); 8252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnBrowserPluginMessage(const IPC::Message& message); 826c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void OnDidDownloadImage(int id, 82790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) int http_status_code, 828c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const GURL& image_url, 829d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) const std::vector<SkBitmap>& bitmaps, 830d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) const std::vector<gfx::Size>& original_bitmap_sizes); 831010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) void OnUpdateFaviconURL(const std::vector<FaviconURL>& candidates); 832010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) void OnFirstVisuallyNonEmptyPaint(); 8335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void OnMediaPlayingNotification(int64 player_cookie, 8345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool has_video, 83534680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) bool has_audio, 83634680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) bool is_remote); 8375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void OnMediaPausedNotification(int64 player_cookie); 8385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void OnShowValidationMessage(const gfx::Rect& anchor_in_root_view, 8395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16& main_text, 8405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16& sub_text); 8415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void OnHideValidationMessage(); 8425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void OnMoveValidationMessage(const gfx::Rect& anchor_in_root_view); 8435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 8445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called by derived classes to indicate that we're no longer waiting for a 8455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // response. This won't actually update the throbber, but it will get picked 8465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // up at the next animation step if the throbber is going. 8475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetNotWaitingForResponse() { waiting_for_response_ = false; } 8485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Navigation helpers -------------------------------------------------------- 8505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 8515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // These functions are helpers for Navigate() and DidNavigate(). 8525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Handles post-navigation tasks in DidNavigate AFTER the entry has been 8545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // committed to the navigation controller. Note that the navigation entry is 8555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // not provided since it may be invalid/changed after being committed. The 8565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // current navigation entry is in the NavigationController at this point. 857eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 8585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If our controller was restored, update the max page ID associated with the 8595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // given RenderViewHost to be larger than the number of restored entries. 8605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This is called in CreateRenderView before any navigations in the RenderView 8615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // have begun, to prevent any races in updating RenderView::next_page_id. 8625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void UpdateMaxPageIDIfNecessary(RenderViewHost* rvh); 8635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Saves the given title to the navigation entry and does associated work. It 8655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // will update history and the view for the new title, and also synthesize 8665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // titles for file URLs that have none (so we require that the URL of the 8675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // entry already be set). 8685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 8695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This is used as the backend for state updates, which include a new title, 8705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // or the dedicated set title message. It returns true if the new title is 8715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // different and was therefore updated. 8725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool UpdateTitleForEntry(NavigationEntryImpl* entry, 873a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& title); 8745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Recursively creates swapped out RenderViews for this tab's opener chain 8765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // (including this tab) in the given SiteInstance, allowing other tabs to send 8775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // cross-process JavaScript calls to their opener(s). Returns the route ID of 8785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // this tab's RenderView for |instance|. 8795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int CreateOpenerRenderViews(SiteInstance* instance); 8805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Helper for CreateNewWidget/CreateNewFullscreenWidget. 882a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void CreateNewWidget(int render_process_id, 883a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) int route_id, 8845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool is_fullscreen, 885f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebPopupType popup_type); 8865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Helper for ShowCreatedWidget/ShowCreatedFullscreenWidget. 8885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ShowCreatedWidget(int route_id, 8895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool is_fullscreen, 8905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Rect& initial_pos); 8915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Finds the new RenderWidgetHost and returns it. Note that this can only be 8935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // called once as this call also removes it from the internal map. 8945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RenderWidgetHostView* GetCreatedWidget(int route_id); 8955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Finds the new WebContentsImpl by route_id, initializes it for 8975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // renderer-initiated creation, and returns it. Note that this can only be 8985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // called once as this call also removes it from the internal map. 8995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebContentsImpl* GetCreatedWindow(int route_id); 9005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 901cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Tracking loading progress ------------------------------------------------- 902cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 903cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Resets the tracking state of the current load. 904cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void ResetLoadProgressState(); 905cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 906cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Calculates the progress of the current load and notifies the delegate. 907cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void SendLoadProgressChanged(); 908cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 909cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Called once when the last frame on the page has stopped loading. 910cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void DidStopLoading(RenderFrameHost* render_frame_host); 911cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 9125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Misc non-view stuff ------------------------------------------------------- 9135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Helper functions for sending notifications. 915116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void NotifyViewSwapped(RenderViewHost* old_host, RenderViewHost* new_host); 916116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void NotifyFrameSwapped(RenderFrameHost* old_host, RenderFrameHost* new_host); 9175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void NotifyDisconnected(); 9185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetEncoding(const std::string& encoding); 9205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 921f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // TODO(creis): This should take in a FrameTreeNode to know which node's 922f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // render manager to return. For now, we just return the root's. 923f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) RenderFrameHostManager* GetRenderManager() const; 924f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 9255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RenderViewHostImpl* GetRenderViewHostImpl(); 9265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Removes browser plugin embedder if there is one. 9285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void RemoveBrowserPluginEmbedder(); 9295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Clear |render_frame_host|'s tracking entry for its power save blockers. 931010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) void ClearPowerSaveBlockers(RenderFrameHost* render_frame_host); 932ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 9331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Clear tracking entries for all RenderFrameHosts, clears 9341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // |audio_power_save_blocker_| and |video_power_save_blocker_|. 935ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch void ClearAllPowerSaveBlockers(); 936ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 9371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Creates an audio or video power save blocker respectively. 9381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void CreateAudioPowerSaveBlocker(); 9391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void CreateVideoPowerSaveBlocker(); 9401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 9411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Releases the audio power save blockers if |active_audio_players_| is empty. 9421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Likewise, releases the video power save blockers if |active_video_players_| 9431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // is empty. 9441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void MaybeReleasePowerSaveBlockers(); 9451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 946424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) // Helper function to invoke WebContentsDelegate::GetSizeForNewRenderView(). 947010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) gfx::Size GetSizeForNewRenderView(); 948424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 949116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void OnFrameRemoved(RenderFrameHost* render_frame_host); 9504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 9515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Helper method that's called whenever |preferred_size_| or 9525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // |preferred_size_for_capture_| changes, to propagate the new value to the 9535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // |delegate_|. 9545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void OnPreferredSizeChanged(const gfx::Size& old_size); 9555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 9561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Helper methods for adding or removing player entries in |player_map| under 9571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // the key |render_frame_message_source_|. 9581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci typedef std::vector<int64> PlayerList; 9591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci typedef std::map<uintptr_t, PlayerList> ActiveMediaPlayerMap; 9601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void AddMediaPlayerEntry(int64 player_cookie, 9611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ActiveMediaPlayerMap* player_map); 9621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void RemoveMediaPlayerEntry(int64 player_cookie, 9631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ActiveMediaPlayerMap* player_map); 9641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Removes all entries from |player_map| for |render_frame_host|. 9651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void RemoveAllMediaPlayerEntries(RenderFrameHost* render_frame_host, 9661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ActiveMediaPlayerMap* player_map); 9671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 968f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Adds/removes a callback called on creation of each new WebContents. 969f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Deprecated, about to remove. 970f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static void AddCreatedCallback(const CreatedCallback& callback); 971f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static void RemoveCreatedCallback(const CreatedCallback& callback); 972f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 9735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Data for core operation --------------------------------------------------- 9745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Delegate for notifying our owner about stuff. Not owned by us. 9765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebContentsDelegate* delegate_; 9775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Handles the back/forward list and loading. 9795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NavigationControllerImpl controller_; 9805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The corresponding view. 982010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) scoped_ptr<WebContentsView> view_; 9835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The view of the RVHD. Usually this is our WebContentsView implementation, 9855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // but if an embedder uses a different WebContentsView, they'll need to 9865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // provide this. 9875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RenderViewHostDelegateView* render_view_host_delegate_view_; 9885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Tracks created WebContentsImpl objects that have not been shown yet. They 9905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // are identified by the route ID passed to CreateNewWindow. 9915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef std::map<int, WebContentsImpl*> PendingContents; 9925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PendingContents pending_contents_; 9935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // These maps hold on to the widgets that we created on behalf of the renderer 9955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // that haven't shown yet. 9965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef std::map<int, RenderWidgetHostView*> PendingWidgetViews; 9975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PendingWidgetViews pending_widget_views_; 9985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 99990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) typedef std::map<WebContentsImpl*, DestructionObserver*> DestructionObservers; 100090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) DestructionObservers destruction_observers_; 100190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 10025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // A list of observers notified when page state changes. Weak references. 1003f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // This MUST be listed above frame_tree_ since at destruction time the 10045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // latter might cause RenderViewHost's destructor to call us and we might use 10055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the observer list then. 10065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ObserverList<WebContentsObserver> observers_; 10075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The tab that opened this tab, if any. Will be set to null if the opener 10095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // is closed. 10105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebContentsImpl* opener_; 10115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10120529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // True if this tab was opened by another tab. This is not unset if the opener 10130529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // is closed. 10140529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch bool created_with_opener_; 10150529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 10165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(OS_WIN) 1017c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gfx::NativeViewAccessible accessible_parent_; 1018c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif 1019c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 10205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Helper classes ------------------------------------------------------------ 10215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Tracking variables and associated power save blockers for media playback. 10231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ActiveMediaPlayerMap active_audio_players_; 10241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ActiveMediaPlayerMap active_video_players_; 10251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<PowerSaveBlocker> audio_power_save_blocker_; 10261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<PowerSaveBlocker> video_power_save_blocker_; 1027ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 1028f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Manages the frame tree of the page and process swaps in each node. 10294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) FrameTree frame_tree_; 10304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 10315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // SavePackage, lazily created. 10325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<SavePackage> save_package_; 10335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Data for loading state ---------------------------------------------------- 10355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Indicates whether we're currently loading a resource. 10375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool is_loading_; 10385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1039cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Indicates whether the current load is to a different document. Only valid 1040cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // if is_loading_ is true. 1041cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) bool is_load_to_different_document_; 1042cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 10435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Indicates if the tab is considered crashed. 10445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::TerminationStatus crashed_status_; 10455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int crashed_error_code_; 10465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Whether this WebContents is waiting for a first-response for the 10485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // main resource of the page. This controls whether the throbber state is 10495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // "waiting" or "loading." 10505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool waiting_for_response_; 10515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Map of SiteInstance ID to max page ID for this tab. A page ID is specific 10535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // to a given tab and SiteInstance, and must be valid for the lifetime of the 10545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // WebContentsImpl. 10555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::map<int32, int32> max_page_ids_; 10565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The current load state and the URL associated with it. 10585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) net::LoadStateWithParam load_state_; 1059a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 load_state_host_; 1060cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 1061cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // LoadingProgressMap maps FrameTreeNode IDs to a double representing that 1062cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // frame's completion (from 0 to 1). 1063cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) typedef base::hash_map<int64, double> LoadingProgressMap; 1064cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) LoadingProgressMap loading_progresses_; 1065cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) double loading_total_progress_; 1066cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 1067cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) base::TimeTicks loading_last_progress_update_; 1068cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 1069cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Counter to track how many frames have sent start notifications but not 1070cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // stop notifications. 1071cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) int loading_frames_in_progress_; 1072cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 10735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Upload progress, for displaying in the status bar. 10745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set to zero when there is no significant upload happening. 10755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint64 upload_size_; 10765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint64 upload_position_; 10775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Data for current page ----------------------------------------------------- 10795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // When a title cannot be taken from any entry, this title will be used. 1081a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 page_title_when_no_navigation_entry_; 10825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // When a navigation occurs, we record its contents MIME type. It can be 10845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // used to check whether we can do something for some special contents. 10855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string contents_mime_type_; 10865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1087cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // The last reported character encoding, not canonicalized. 1088cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) std::string last_reported_encoding_; 1089cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 1090cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // The canonicalized character encoding. 1091cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) std::string canonical_encoding_; 10925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // True if this is a secure page which displayed insecure content. 10945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool displayed_insecure_content_; 10955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10965c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // Whether the initial empty page has been accessed by another page, making it 10975c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // unsafe to show the pending URL. Usually false unless another window tries 10985c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // to modify the blank page. Always false after the first commit. 10995c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu bool has_accessed_initial_document_; 11005c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 11015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Data for misc internal state ---------------------------------------------- 11025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // When > 0, the WebContents is currently being captured (e.g., for 11042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // screenshots or mirroring); and the underlying RenderWidgetHost should not 11052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // be told it is hidden. 11062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int capturer_count_; 11072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 11082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Tracks whether RWHV should be visible once capturer_count_ becomes zero. 11092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool should_normally_be_visible_; 11105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // See getter above. 11125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool is_being_destroyed_; 11135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Indicates whether we should notify about disconnection of this 11155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // WebContentsImpl. This is used to ensure disconnection notifications only 11165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // happen if a connection notification has happened and that they happen only 11175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // once. 11185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool notify_disconnection_; 11195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Pointer to the JavaScript dialog manager, lazily assigned. Used because the 11215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // delegate of this WebContentsImpl is nulled before its destructor is called. 11222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) JavaScriptDialogManager* dialog_manager_; 11235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set to true when there is an active "before unload" dialog. When true, 11255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // we've forced the throbber to start in Navigate, and we need to remember to 11265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // turn it off in OnJavaScriptMessageBoxClosed if the navigation is canceled. 11275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool is_showing_before_unload_dialog_; 11285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Settings that get passed to the renderer process. 11305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RendererPreferences renderer_preferences_; 11315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // The time that this WebContents was last made active. The initial value is 11335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // the WebContents creation time. 11345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::TimeTicks last_active_time_; 11355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // See description above setter. 11375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool closed_by_user_gesture_; 11385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Minimum/maximum zoom percent. 11405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int minimum_zoom_percent_; 11415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int maximum_zoom_percent_; 11425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1143effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // The raw accumulated zoom value and the actual zoom increments made for an 1144effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // an in-progress pinch gesture. 1145effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch float totalPinchGestureAmount_; 1146effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch int currentPinchZoomStepDelta_; 1147effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 11485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The intrinsic size of the page. 11495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Size preferred_size_; 11505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // The preferred size for content screen capture. When |capturer_count_| > 0, 11525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // this overrides |preferred_size_|. 11535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) gfx::Size preferred_size_for_capture_; 11545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 11552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_ANDROID) 11562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Date time chooser opened by this tab. 11572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Only used in Android since all other platforms use a multi field UI. 11582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<DateTimeChooserAndroid> date_time_chooser_; 11592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 11602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1161a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // Holds information about a current color chooser dialog, if one is visible. 1162a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch struct ColorChooserInfo { 1163a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch ColorChooserInfo(int render_process_id, 1164a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch int render_frame_id, 1165a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch ColorChooser* chooser, 1166a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch int identifier); 1167a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch ~ColorChooserInfo(); 1168a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 1169a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch int render_process_id; 1170a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch int render_frame_id; 1171a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 1172a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // Color chooser that was opened by this tab. 1173a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch scoped_ptr<ColorChooser> chooser; 1174a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 1175a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // A unique identifier for the current color chooser. Identifiers are 1176a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // unique across a renderer process. This avoids race conditions in 1177a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // synchronizing the browser and renderer processes. For example, if a 1178a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // renderer closes one chooser and opens another, and simultaneously the 1179a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // user picks a color in the first chooser, the IDs can be used to drop the 1180a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // "chose a color" message rather than erroneously tell the renderer that 1181a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch // the user picked a color in the second chooser. 1182a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch int identifier; 1183a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch }; 1184a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 1185a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch scoped_ptr<ColorChooserInfo> color_chooser_info_; 11865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Manages the embedder state for browser plugins, if this WebContents is an 11885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // embedder; NULL otherwise. 11895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<BrowserPluginEmbedder> browser_plugin_embedder_; 11905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Manages the guest state for browser plugin, if this WebContents is a guest; 11915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // NULL otherwise. 11925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<BrowserPluginGuest> browser_plugin_guest_; 11935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This must be at the end, or else we might get notifications and use other 11955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // member variables that are gone. 11965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NotificationRegistrar registrar_; 11975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Used during IPC message dispatching from the RenderView/RenderFrame so that 11995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // the handlers can get a pointer to the RVH through which the message was 1200a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // received. 1201a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) RenderViewHost* render_view_message_source_; 12025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) RenderFrameHost* render_frame_message_source_; 12035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // All live RenderWidgetHostImpls that are created by this object and may 12055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // outlive it. 12065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::set<RenderWidgetHostImpl*> created_widgets_; 12075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Routing id of the shown fullscreen widget or MSG_ROUTING_NONE otherwise. 12092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int fullscreen_widget_routing_id_; 12102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1211116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // At the time the fullscreen widget was being shut down, did it have focus? 1212116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // This is used to restore focus to the WebContentsView after both: 1) the 1213116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // fullscreen widget is destroyed, and 2) the WebContentsDelegate has 1214116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // completed making layout changes to effect an exit from fullscreen mode. 1215116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch bool fullscreen_widget_had_focus_at_shutdown_; 1216116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1217c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Maps the ids of pending image downloads to their callbacks 1218c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) typedef std::map<int, ImageDownloadCallback> ImageDownloadMap; 1219c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ImageDownloadMap image_download_map_; 12202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 12215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Whether this WebContents is responsible for displaying a subframe in a 12225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // different process from its parent page. 12235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool is_subframe_; 12245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 122503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // Whether overscroll should be unconditionally disabled. 122603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) bool force_disable_overscroll_content_; 1227f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 1228c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // Whether the last JavaScript dialog shown was suppressed. Used for testing. 1229c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch bool last_dialog_suppressed_; 1230c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 1231cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) scoped_ptr<GeolocationDispatcherHost> geolocation_dispatcher_host_; 1232cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 1233f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) scoped_ptr<MidiDispatcherHost> midi_dispatcher_host_; 1234f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 1235f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) scoped_ptr<ScreenOrientationDispatcherHost> 1236f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) screen_orientation_dispatcher_host_; 1237f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 12381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<ManifestManagerHost> manifest_manager_host_; 12391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1240116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // The accessibility mode for all frames. This is queried when each frame 1241116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // is created, and broadcast to all frames when it changes. 1242116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch AccessibilityMode accessibility_mode_; 1243116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 12441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Monitors power levels for audio streams associated with this WebContents. 12451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci AudioStreamMonitor audio_stream_monitor_; 12461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 12471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Created on-demand to mute all audio output from this WebContents. 12481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<WebContentsAudioMuter> audio_muter_; 12491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 12501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::WeakPtrFactory<WebContentsImpl> loading_weak_factory_; 12511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1252e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch bool virtual_keyboard_requested_; 1253e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch 12545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(WebContentsImpl); 12555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 12565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace content 12585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CONTENT_BROWSER_WEB_CONTENTS_WEB_CONTENTS_IMPL_H_ 1260