render_view_host_impl.h revision 1e9bf3e0803691d0a228da41fc608347b6db4340
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_RENDERER_HOST_RENDER_VIEW_HOST_IMPL_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CONTENT_BROWSER_RENDERER_HOST_RENDER_VIEW_HOST_IMPL_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <map> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector> 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 15a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch#include "base/process/kill.h" 161e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "content/browser/frame_host/render_frame_host_impl.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/browser/renderer_host/render_widget_host_impl.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/browser/site_instance_impl.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/accessibility_node_data.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/drag_event_source_info.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_observer.h" 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/render_view_host.h" 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/common/javascript_message_type.h" 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/common/window_container_type.h" 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/base/load_states.h" 2658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "third_party/WebKit/public/web/WebAXEnums.h" 277d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebConsoleMessage.h" 287d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebPopupType.h" 297d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebTextDirection.h" 3058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "third_party/skia/include/core/SkColor.h" 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/base/window_open_disposition.h" 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SkBitmap; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ViewMsg_Navigate; 3558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)struct AccessibilityHostMsg_EventParams; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct MediaPlayerAction; 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ViewHostMsg_CreateWindow_Params; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ViewHostMsg_DidFailProvisionalLoadWithError_Params; 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct ViewHostMsg_OpenURL_Params; 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct ViewHostMsg_SelectionBounds_Params; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ViewHostMsg_ShowPopup_Params; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ViewMsg_Navigate_Params; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ViewMsg_PostMessage_Params; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ViewMsg_StopFinding_Params; 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace base { 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ListValue; 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace gfx { 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Range; 5258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 5358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 5458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace ui { 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct SelectedFileInfo; 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 60424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)class BrowserMediaPlayerManager; 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ChildProcessSecurityPolicyImpl; 6290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class PageState; 63868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)class RenderFrameHostImpl; 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RenderWidgetHostDelegate; 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SessionStorageNamespace; 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SessionStorageNamespaceImpl; 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TestRenderViewHost; 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ContextMenuParams; 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct FileChooserParams; 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct Referrer; 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ShowDesktopNotificationHostMsgParams; 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(COMPILER_MSVC) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// RenderViewHostImpl is the bottom of a diamond-shaped hierarchy, 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// with RenderWidgetHost at the root. VS warns when methods from the 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// root are overridden in only one of the base classes and not both 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// (in this case, RenderWidgetHostImpl provides implementations of 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// many of the methods). This is a silly warning when dealing with 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// pure virtual methods that only have a single implementation in the 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// hierarchy above this class, and is safe to ignore in this case. 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#pragma warning(push) 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#pragma warning(disable: 4250) 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This implements the RenderViewHost interface that is exposed to 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// embedders of content, and adds things only visible to content. 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The exact API of this object needs to be more thoroughly designed. Right 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// now it mimics what WebContentsImpl exposed, which is a fairly large API and 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// may contain things that are not relevant to a common subset of views. See 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// also the comment in render_view_host_delegate.h about the size and scope of 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// the delegate API. 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Right now, the concept of page navigation (both top level and frame) exists 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// in the WebContentsImpl still, so if you instantiate one of these elsewhere, 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// you will not be able to traverse pages back and forward. We need to determine 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// if we want to bring that and other functionality down into this object so it 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// can be shared by others. 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CONTENT_EXPORT RenderViewHostImpl 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : public RenderViewHost, 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public RenderWidgetHostImpl { 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Convenience function, just like RenderViewHost::FromID. 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static RenderViewHostImpl* FromID(int render_process_id, int render_view_id); 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // |routing_id| could be a valid route id, or it could be MSG_ROUTING_NONE, in 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // which case RenderWidgetHost will create a new one. |swapped_out| indicates 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // whether the view should initially be swapped out (e.g., for an opener 1093551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // frame being rendered by another process). |hidden| indicates whether the 1103551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // view is initially hidden or visible. 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The |session_storage_namespace| parameter allows multiple render views and 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // WebContentses to share the same session storage (part of the WebStorage 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // spec) space. This is useful when restoring contentses, but most callers 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // should pass in NULL which will cause a new SessionStorageNamespace to be 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // created. 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RenderViewHostImpl( 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SiteInstance* instance, 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RenderViewHostDelegate* delegate, 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RenderWidgetHostDelegate* widget_delegate, 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int routing_id, 122868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int main_frame_routing_id, 1233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) bool swapped_out, 1243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) bool hidden); 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~RenderViewHostImpl(); 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // RenderViewHost implementation. 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void AllowBindings(int binding_flags) OVERRIDE; 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ClearFocusedNode() OVERRIDE; 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ClosePage() OVERRIDE; 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void CopyImageAt(int x, int y) OVERRIDE; 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DesktopNotificationPermissionRequestDone( 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int callback_context) OVERRIDE; 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DesktopNotificationPostDisplay(int callback_context) OVERRIDE; 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DesktopNotificationPostError(int notification_id, 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const string16& message) OVERRIDE; 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DesktopNotificationPostClose(int notification_id, 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool by_user) OVERRIDE; 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DesktopNotificationPostClick(int notification_id) OVERRIDE; 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DirectoryEnumerationFinished( 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int request_id, 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::vector<base::FilePath>& files) OVERRIDE; 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DisableScrollbarsForThreshold(const gfx::Size& size) OVERRIDE; 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DragSourceEndedAt( 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int client_x, int client_y, int screen_x, int screen_y, 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebDragOperation operation) OVERRIDE; 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DragSourceMovedTo( 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int client_x, int client_y, int screen_x, int screen_y) OVERRIDE; 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DragSourceSystemDragEnded() OVERRIDE; 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DragTargetDragEnter( 151eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const DropData& drop_data, 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Point& client_pt, 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Point& screen_pt, 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebDragOperationsMask operations_allowed, 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int key_modifiers) OVERRIDE; 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DragTargetDragOver( 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Point& client_pt, 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Point& screen_pt, 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebDragOperationsMask operations_allowed, 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int key_modifiers) OVERRIDE; 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DragTargetDragLeave() OVERRIDE; 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DragTargetDrop(const gfx::Point& client_pt, 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Point& screen_pt, 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int key_modifiers) OVERRIDE; 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void EnableAutoResize(const gfx::Size& min_size, 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Size& max_size) OVERRIDE; 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DisableAutoResize(const gfx::Size& new_size) OVERRIDE; 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void EnablePreferredSizeMode() OVERRIDE; 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ExecuteCustomContextMenuCommand( 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int action, const CustomContextMenuContext& context) OVERRIDE; 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ExecuteMediaPlayerActionAtLocation( 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Point& location, 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const WebKit::WebMediaPlayerAction& action) OVERRIDE; 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ExecuteJavascriptInWebFrame(const string16& frame_xpath, 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const string16& jscript) OVERRIDE; 1762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void ExecuteJavascriptInWebFrameCallbackResult( 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const string16& frame_xpath, 1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const string16& jscript, 1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const JavascriptResultCallback& callback) OVERRIDE; 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ExecutePluginActionAtLocation( 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Point& location, 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const WebKit::WebPluginAction& action) OVERRIDE; 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ExitFullscreen() OVERRIDE; 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Find(int request_id, const string16& search_text, 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const WebKit::WebFindOptions& options) OVERRIDE; 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void StopFinding(StopFindAction action) OVERRIDE; 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void FirePageBeforeUnload(bool for_cross_site_transition) OVERRIDE; 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void FilesSelectedInChooser( 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::vector<ui::SelectedFileInfo>& files, 1907dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch FileChooserParams::Mode permissions) OVERRIDE; 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual RenderViewHostDelegate* GetDelegate() const OVERRIDE; 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int GetEnabledBindings() const OVERRIDE; 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual SiteInstance* GetSiteInstance() const OVERRIDE; 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void InsertCSS(const string16& frame_xpath, 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& css) OVERRIDE; 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsRenderViewLive() const OVERRIDE; 1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool IsSubframe() const OVERRIDE; 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void NotifyContextMenuClosed( 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const CustomContextMenuContext& context) OVERRIDE; 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void NotifyMoveOrResizeStarted() OVERRIDE; 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ReloadFrame() OVERRIDE; 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetAltErrorPageURL(const GURL& url) OVERRIDE; 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetWebUIProperty(const std::string& name, 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& value) OVERRIDE; 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetZoomLevel(double level) OVERRIDE; 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Zoom(PageZoom zoom) OVERRIDE; 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SyncRendererPrefs() OVERRIDE; 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ToggleSpeechInput() OVERRIDE; 209c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual WebPreferences GetWebkitPreferences() OVERRIDE; 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void UpdateWebkitPreferences( 211c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const WebPreferences& prefs) OVERRIDE; 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void NotifyTimezoneChange() OVERRIDE; 2131e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) virtual void GetAudioOutputControllers( 2141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) const GetAudioOutputControllersCallback& callback) const OVERRIDE; 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID) 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ActivateNearestFindResult(int request_id, 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) float x, 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) float y) OVERRIDE; 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void RequestFindMatchRects(int current_version) OVERRIDE; 2214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual void DisableFullscreenEncryptedMediaPlayback() OVERRIDE; 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void set_delegate(RenderViewHostDelegate* d) { 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CHECK(d); // http://crbug.com/82827 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) delegate_ = d; 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set up the RenderView child process. Virtual because it is overridden by 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TestRenderViewHost. If the |frame_name| parameter is non-empty, it is used 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // as the name of the new top-level frame. 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The |opener_route_id| parameter indicates which RenderView created this 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // (MSG_ROUTING_NONE if none). If |max_page_id| is larger than -1, the 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // RenderView is told to start issuing page IDs at |max_page_id| + 1. 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool CreateRenderView(const string16& frame_name, 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int opener_route_id, 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32 max_page_id); 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::TerminationStatus render_view_termination_status() const { 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return render_view_termination_status_; 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2431e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Returns the content specific prefs for this RenderViewHost. 2441e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) WebPreferences GetWebkitPrefs(const GURL& url); 2451e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sends the given navigation message. Use this rather than sending it 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // yourself since this does the internal bookkeeping described below. This 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // function takes ownership of the provided message pointer. 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If a cross-site request is in progress, we may be suspended while waiting 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // for the onbeforeunload handler, so this function might buffer the message 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // rather than sending it. 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void Navigate(const ViewMsg_Navigate_Params& message); 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Load the specified URL, this is a shortcut for Navigate(). 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void NavigateToURL(const GURL& url); 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns whether navigation messages are currently suspended for this 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // RenderViewHost. Only true during a cross-site navigation, while waiting 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // for the onbeforeunload handler. 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool are_navigations_suspended() const { return navigations_suspended_; } 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Suspends (or unsuspends) any navigation messages from being sent from this 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // RenderViewHost. This is called when a pending RenderViewHost is created 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // for a cross-site navigation, because we must suspend any navigations until 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // we hear back from the old renderer's onbeforeunload handler. Note that it 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // is important that only one navigation event happen after calling this 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // method with |suspend| equal to true. If |suspend| is false and there is 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // a suspended_nav_message_, this will send the message. This function 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // should only be called to toggle the state; callers should check 271c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // are_navigations_suspended() first. If |suspend| is false, the time that the 272c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // user decided the navigation should proceed should be passed as 273c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // |proceed_time|. 274c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void SetNavigationsSuspended(bool suspend, 275c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const base::TimeTicks& proceed_time); 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Clears any suspended navigation state after a cross-site navigation is 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // canceled or suspended. This is important if we later return to this 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // RenderViewHost. 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void CancelSuspendedNavigations(); 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 282868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // Whether the initial empty page of this view has been accessed by another 283868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // page, making it unsafe to show the pending URL. Always false after the 284868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // first commit. 285868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) bool has_accessed_initial_document() { 286868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) return has_accessed_initial_document_; 287868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) } 288868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Whether this RenderViewHost has been swapped out to be displayed by a 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // different process. 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool is_swapped_out() const { return is_swapped_out_; } 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Tells the renderer that this RenderView is being swapped out for one in a 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // different renderer process. It should run its unload handler and move to 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // a blank document. The renderer should preserve the Frame object until it 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // exits, in case we come back. The renderer can exit if it has no other 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // active RenderViews, but not until WasSwappedOut is called (when it is no 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // longer visible). 2997d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) void SwapOut(); 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3017d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Called when either the SwapOut request has been acknowledged or has timed 3027d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // out. 3037d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) void OnSwappedOut(bool timed_out); 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called to notify the renderer that it has been visibly swapped out and 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // replaced by another RenderViewHost, after an earlier call to SwapOut. 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // It is now safe for the process to exit if there are no other active 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // RenderViews. 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void WasSwappedOut(); 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Close the page ignoring whether it has unload events registers. 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This is called after the beforeunload and unload events have fired 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // and the user has agreed to continue with closing the page. 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ClosePageIgnoringUnloadEvents(); 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3167d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Returns whether this RenderViewHost has an outstanding cross-site request. 3177d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Cleared when we hear the response and start to swap out the old 3187d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // RenderViewHost, or if we hear a commit here without a network request. 3197d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) bool HasPendingCrossSiteRequest(); 3207d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sets whether this RenderViewHost has an outstanding cross-site request, 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // for which another renderer will need to run an onunload event handler. 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This is called before the first navigation event for this RenderViewHost, 3247d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // and cleared when we hear the response or commit. 3257d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) void SetHasPendingCrossSiteRequest(bool has_pending_request); 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Notifies the RenderView that the JavaScript message that was shown was 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // closed by the user. 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void JavaScriptDialogClosed(IPC::Message* reply_msg, 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool success, 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const string16& user_input); 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Tells the renderer view to focus the first (last if reverse is true) node. 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetInitialFocus(bool reverse); 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Get html data by serializing all frames of current page with lists 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // which contain all resource links that have local copy. 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The parameter links contain original URLs of all saved links. 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The parameter local_paths contain corresponding local file paths of 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // all saved links, which matched with vector:links one by one. 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The parameter local_directory_name is relative path of directory which 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // contain all saved auxiliary files included all sub frames and resouces. 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void GetSerializedHtmlDataForCurrentPageWithLocalLinks( 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::vector<GURL>& links, 3452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::vector<base::FilePath>& local_paths, 3462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& local_directory_name); 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Notifies the RenderViewHost that its load state changed. 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void LoadStateChanged(const GURL& url, 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const net::LoadStateWithParam& load_state, 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint64 upload_position, 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint64 upload_size); 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool SuddenTerminationAllowed() const; 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void set_sudden_termination_allowed(bool enabled) { 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sudden_termination_allowed_ = enabled; 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // RenderWidgetHost public overrides. 360424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual void Init() OVERRIDE; 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Shutdown() OVERRIDE; 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsRenderView() const OVERRIDE; 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE; 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void GotFocus() OVERRIDE; 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void LostCapture() OVERRIDE; 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void LostMouseLock() OVERRIDE; 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ForwardMouseEvent( 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const WebKit::WebMouseEvent& mouse_event) OVERRIDE; 3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnPointerEventActivate() OVERRIDE; 3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ForwardKeyboardEvent( 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const NativeWebKeyboardEvent& key_event) OVERRIDE; 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual gfx::Rect GetRootWindowResizerRect() const OVERRIDE; 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Creates a new RenderView with the given route id. 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void CreateNewWindow( 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int route_id, 377868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int main_frame_route_id, 3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const ViewHostMsg_CreateWindow_Params& params, 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SessionStorageNamespace* session_storage_namespace); 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Creates a new RenderWidget with the given route id. |popup_type| indicates 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // if this widget is a popup and what kind of popup it is (select, autofill). 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void CreateNewWidget(int route_id, WebKit::WebPopupType popup_type); 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Creates a full screen RenderWidget. 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void CreateNewFullscreenWidget(int route_id); 3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Select popup menu related methods (for external popup menus). 3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void DidSelectPopupMenuItem(int selected_index); 3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void DidCancelPopupMenu(); 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID) 395424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) BrowserMediaPlayerManager* media_player_manager() { 3961e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return media_player_manager_.get(); 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void DidSelectPopupMenuItems(const std::vector<int>& selected_indices); 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void DidCancelPopupMenu(); 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // User rotated the screen. Calls the "onorientationchange" Javascript hook. 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SendOrientationChangeEvent(int orientation); 4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Sets a bit indicating whether the RenderView is responsible for displaying 4072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // a subframe in a different process from its parent page. 4082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void set_is_subframe(bool is_subframe) { 4092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) is_subframe_ = is_subframe; 4102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 4112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 412b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) int64 main_frame_id() const { 413b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return main_frame_id_; 414b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 415b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 4162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Set the opener to null in the renderer process. 4172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void DisownOpener(); 4182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4197d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Turn on accessibility testing. The given callback will be run 4207d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // every time an accessibility notification is received from the 4217d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // renderer process, and the accessibility tree it sent can be 4227d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // retrieved using accessibility_tree_for_testing(). 4237d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) void SetAccessibilityCallbackForTesting( 42458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const base::Callback<void(WebKit::WebAXEvent)>& callback); 4257d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 4267d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Only valid if SetAccessibilityCallbackForTesting was called and 4277d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // the callback was run at least once. Returns a snapshot of the 4287d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // accessibility tree received from the renderer as of the last time 4297d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // a LoadComplete or LayoutComplete accessibility notification was received. 4302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const AccessibilityNodeDataTreeNode& accessibility_tree_for_testing() { 4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return accessibility_tree_; 4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Set accessibility callbacks. 4352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void SetAccessibilityLayoutCompleteCallbackForTesting( 4362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::Closure& callback); 4372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void SetAccessibilityLoadCompleteCallbackForTesting( 4382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::Closure& callback); 4392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void SetAccessibilityOtherCallbackForTesting( 4402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::Closure& callback); 4412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4427d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) bool is_waiting_for_beforeunload_ack() { 4437d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) return is_waiting_for_beforeunload_ack_; 4447d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) } 4457d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 4467d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) bool is_waiting_for_unload_ack() { 4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return is_waiting_for_unload_ack_; 4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 450a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) // Returns whether the given URL is allowed to commit in the current process. 451a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) // This is a more conservative check than FilterURL, since it will be used to 452a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) // kill processes that commit unauthorized URLs. 453a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) bool CanCommitURL(const GURL& url); 454a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Checks that the given renderer can request |url|, if not it sets it to 4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // about:blank. 4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // empty_allowed must be set to false for navigations for security reasons. 4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void FilterURL(ChildProcessSecurityPolicyImpl* policy, 4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const RenderProcessHost* process, 4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool empty_allowed, 4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL* url); 4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Update the FrameTree to use this RenderViewHost's main frame 4644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // RenderFrameHost. Called when the RenderViewHost is committed. 4654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // 4664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // TODO(ajwong): Remove once RenderViewHost no longer owns the main frame 4674e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // RenderFrameHost. 4684e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) void AttachToFrameTree(); 4694e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 4708bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // The following IPC handlers are public so RenderFrameHost can call them, 4718bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // while we transition the code to not use RenderViewHost. 4728bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // 4738bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // TODO(nasko): Remove those methods once we are done moving navigation 4748bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // into RenderFrameHost. 4758bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) void OnDidStartProvisionalLoadForFrame(int64 frame_id, 4768bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) int64 parent_frame_id, 4778bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) bool main_frame, 4788bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) const GURL& url); 4798bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // NOTE: Do not add functions that just send an IPC message that are called in 4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // one or two places. Have the caller send the IPC message directly (unless 4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the caller places are in different platforms, in which case it's better 4835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // to keep them consistent). 4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 4865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // RenderWidgetHost protected overrides. 4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnUserGesture() OVERRIDE; 4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void NotifyRendererUnresponsive() OVERRIDE; 4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void NotifyRendererResponsive() OVERRIDE; 4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnRenderAutoResized(const gfx::Size& size) OVERRIDE; 4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void RequestToLockMouse(bool user_gesture, 4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool last_unlocked_by_target) OVERRIDE; 4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsFullscreen() const OVERRIDE; 4942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnFocus() OVERRIDE; 4952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnBlur() OVERRIDE; 4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // IPC message handlers. 4982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnShowView(int route_id, 4992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WindowOpenDisposition disposition, 5002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const gfx::Rect& initial_pos, 5012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool user_gesture); 5022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnShowWidget(int route_id, const gfx::Rect& initial_pos); 5032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnShowFullscreenWidget(int route_id); 5042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnRunModal(int opener_id, IPC::Message* reply_msg); 5052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnRenderViewReady(); 5067dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch void OnRenderProcessGone(int status, int error_code); 5072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnDidRedirectProvisionalLoad(int32 page_id, 5082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const GURL& source_url, 5092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const GURL& target_url); 5102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnDidFailProvisionalLoadWithError( 5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const ViewHostMsg_DidFailProvisionalLoadWithError_Params& params); 5122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnNavigate(const IPC::Message& msg); 51390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void OnUpdateState(int32 page_id, const PageState& state); 5142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnUpdateTitle(int32 page_id, 5152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const string16& title, 5162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WebKit::WebTextDirection title_direction); 5172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnUpdateEncoding(const std::string& encoding); 5182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnUpdateTargetURL(int32 page_id, const GURL& url); 5192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnClose(); 5202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnRequestMove(const gfx::Rect& pos); 5212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnDidStartLoading(); 5222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnDidStopLoading(); 5232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnDidChangeLoadProgress(double load_progress); 5242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnDidDisownOpener(); 5252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnDocumentAvailableInMainFrame(); 5262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnDocumentOnLoadCompletedInMainFrame(int32 page_id); 5272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnContextMenu(const ContextMenuParams& params); 5282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnToggleFullscreen(bool enter_fullscreen); 5292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnOpenURL(const ViewHostMsg_OpenURL_Params& params); 5302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnDidContentsPreferredSizeChange(const gfx::Size& new_size); 5312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnDidChangeScrollOffset(); 5322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnDidChangeScrollbarsForMainFrame(bool has_horizontal_scrollbar, 5332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool has_vertical_scrollbar); 5342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnDidChangeScrollOffsetPinningForMainFrame(bool is_pinned_to_left, 5352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool is_pinned_to_right); 5362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnDidChangeNumWheelEvents(int count); 5372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnSelectionChanged(const string16& text, 5382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) size_t offset, 53958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const gfx::Range& range); 5402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnSelectionBoundsChanged( 5412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const ViewHostMsg_SelectionBounds_Params& params); 5422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnPasteFromSelectionClipboard(); 5432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnRouteCloseEvent(); 5442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnRouteMessageEvent(const ViewMsg_PostMessage_Params& params); 5452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnRunJavaScriptMessage(const string16& message, 5462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const string16& default_prompt, 5472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const GURL& frame_url, 5482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) JavaScriptMessageType type, 5492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IPC::Message* reply_msg); 5502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnRunBeforeUnloadConfirm(const GURL& frame_url, 5512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const string16& message, 5522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool is_reload, 5532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IPC::Message* reply_msg); 554eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void OnStartDragging(const DropData& drop_data, 5552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WebKit::WebDragOperationsMask operations_allowed, 5562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const SkBitmap& bitmap, 5572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const gfx::Vector2d& bitmap_offset_in_dip, 5582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const DragEventSourceInfo& event_info); 5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnUpdateDragCursor(WebKit::WebDragOperation drag_operation); 5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnTargetDropACK(); 5615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnTakeFocus(bool reverse); 5625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnFocusedNodeChanged(bool is_editable_node); 5635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnAddMessageToConsole(int32 level, 5645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const string16& message, 5655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32 line_no, 56658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const string16& source_id); 5675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnUpdateInspectorSetting(const std::string& key, 5685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& value); 5692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnShouldCloseACK( 5705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool proceed, 5715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::TimeTicks& renderer_before_unload_start_time, 5725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::TimeTicks& renderer_before_unload_end_time); 5732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnClosePageACK(); 5747d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) void OnSwapOutACK(); 57558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) void OnAccessibilityEvents( 57658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const std::vector<AccessibilityHostMsg_EventParams>& params); 5775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnScriptEvalResponse(int id, const base::ListValue& result); 5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnDidZoomURL(double zoom_level, bool remember, const GURL& url); 5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnRequestDesktopNotificationPermission(const GURL& origin, 5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int callback_id); 5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnShowDesktopNotification( 5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const ShowDesktopNotificationHostMsgParams& params); 5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnCancelDesktopNotification(int notification_id); 5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnRunFileChooser(const FileChooserParams& params); 585868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) void OnDidAccessInitialDocument(); 5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnDomOperationResponse(const std::string& json_string, 5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int automation_id); 5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) || defined(OS_ANDROID) 5902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnShowPopup(const ViewHostMsg_ShowPopup_Params& params); 5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5934e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // TODO(nasko): Remove this accessor once RenderFrameHost moves into the frame 5944e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // tree. 5954e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) RenderFrameHostImpl* main_render_frame_host() const { 5964e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return main_render_frame_host_.get(); 5974e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 5984e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) friend class TestRenderViewHost; 601868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewHostTest, BasicRenderFrameHost); 602424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewHostTest, RoutingIdSane); 603424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 6045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sets whether this RenderViewHost is swapped out in favor of another, 6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // and clears any waiting state that is no longer relevant. 6065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetSwappedOut(bool is_swapped_out); 6075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 60890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) bool CanAccessFilesOfPageState(const PageState& state) const; 609b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 6104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // All RenderViewHosts must have a RenderFrameHost for its main frame. 6114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Currently the RenderFrameHost is created in lock step on construction 6124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // and a pointer to the main frame is given to the FrameTreeNode 6134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // when the RenderViewHost commits (see AttachToFrameTree()). 6144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // 6154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // TODO(ajwong): Make this reference non-owning. The root FrameTreeNode of 6164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // the FrameTree should be responsible for owning the main frame's 6174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // RenderFrameHost. 618868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) scoped_ptr<RenderFrameHostImpl> main_render_frame_host_; 619868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 6205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Our delegate, which wants to know about changes in the RenderView. 6215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RenderViewHostDelegate* delegate_; 6225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The SiteInstance associated with this RenderViewHost. All pages drawn 6245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // in this RenderViewHost are part of this SiteInstance. Should not change 6255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // over time. 6265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<SiteInstanceImpl> instance_; 6275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // true if we are currently waiting for a response for drag context 6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // information. 6305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool waiting_for_drag_context_response_; 6315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // A bitwise OR of bindings types that have been enabled for this RenderView. 6335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // See BindingsPolicy for details. 6345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int enabled_bindings_; 6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Whether we should buffer outgoing Navigate messages rather than sending 6375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // them. This will be true when a RenderViewHost is created for a cross-site 6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // request, until we hear back from the onbeforeunload handler of the old 6395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // RenderViewHost. 6405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool navigations_suspended_; 6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 642c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // We only buffer the params for a suspended navigation while we have a 643c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // pending RVH for a WebContentsImpl. There will only ever be one suspended 644c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // navigation, because WebContentsImpl will destroy the pending RVH and create 645c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // a new one if a second navigation occurs. 646c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_ptr<ViewMsg_Navigate_Params> suspended_nav_params_; 6475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 648868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // Whether the initial empty page of this view has been accessed by another 649868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // page, making it unsafe to show the pending URL. Usually false unless 650868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // another window tries to modify the blank page. Always false after the 651868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // first commit. 652868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) bool has_accessed_initial_document_; 653868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 6545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Whether this RenderViewHost is currently swapped out, such that the view is 6555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // being rendered by another process. 6565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool is_swapped_out_; 6575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Whether this RenderView is responsible for displaying a subframe in a 6592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // different process from its parent page. 6602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool is_subframe_; 6612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 662b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) // The frame id of the main (top level) frame. This value is set on the 6637dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // initial navigation of a RenderView and reset when the RenderView's 6647dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // process is terminated (in RenderProcessGone). 665b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) int64 main_frame_id_; 666b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 6675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If we were asked to RunModal, then this will hold the reply_msg that we 6685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // must return to the renderer to unblock it. 6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC::Message* run_modal_reply_msg_; 6705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This will hold the routing id of the RenderView that opened us. 6715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int run_modal_opener_id_; 6725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set to true when there is a pending ViewMsg_ShouldClose message. This 6745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ensures we don't spam the renderer with multiple beforeunload requests. 6755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // When either this value or is_waiting_for_unload_ack_ is true, the value of 6765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // unload_ack_is_for_cross_site_transition_ indicates whether this is for a 6775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // cross-site transition or a tab close attempt. 6785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool is_waiting_for_beforeunload_ack_; 6795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set to true when there is a pending ViewMsg_Close message. Also see 6815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // is_waiting_for_beforeunload_ack_, unload_ack_is_for_cross_site_transition_. 6825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool is_waiting_for_unload_ack_; 6835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set to true when waiting for ViewHostMsg_SwapOut_ACK has timed out. 6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool has_timed_out_on_unload_; 6865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Valid only when is_waiting_for_beforeunload_ack_ or 6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // is_waiting_for_unload_ack_ is true. This tells us if the unload request 6895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // is for closing the entire tab ( = false), or only this RenderViewHost in 6905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the case of a cross-site transition ( = true). 6915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool unload_ack_is_for_cross_site_transition_; 6925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool are_javascript_messages_suppressed_; 6945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // The mapping of pending javascript calls created by 6962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // ExecuteJavascriptInWebFrameCallbackResult and their corresponding 6972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // callbacks. 6982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::map<int, JavascriptResultCallback> javascript_callbacks_; 6992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 7007d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Accessibility callback for testing. 70158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) base::Callback<void(WebKit::WebAXEvent)> accessibility_testing_callback_; 7027d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 7037d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // The most recently received accessibility tree - for testing only. 7047d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) AccessibilityNodeDataTreeNode accessibility_tree_; 7052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 7065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // True if the render view can be shut down suddenly. 7075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool sudden_termination_allowed_; 7085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The termination status of the last render view that terminated. 7105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::TerminationStatus render_view_termination_status_; 7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // When the last ShouldClose message was sent. 7135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::TimeTicks send_should_close_start_time_; 7145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID) 7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Manages all the android mediaplayer objects and handling IPCs for video. 7171e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) scoped_ptr<BrowserMediaPlayerManager> media_player_manager_; 7185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 7195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(RenderViewHostImpl); 7215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 7225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(COMPILER_MSVC) 7245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#pragma warning(pop) 7255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 7265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace content 7285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CONTENT_BROWSER_RENDERER_HOST_RENDER_VIEW_HOST_IMPL_H_ 730