render_view_impl.h revision d0247b1b59f9c528cb6df88b4f2b9afaf80d181e
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_RENDERER_RENDER_VIEW_IMPL_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CONTENT_RENDERER_RENDER_VIEW_IMPL_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <deque>
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <map>
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <set>
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string>
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <vector>
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/gtest_prod_util.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/id_map.h"
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/linked_ptr.h"
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/weak_ptr.h"
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/observer_list.h"
20bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch#include "base/process/process.h"
213551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "base/strings/string16.h"
22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/timer/timer.h"
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "build/build_config.h"
2490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "cc/input/top_controls_state.h"
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/content_export.h"
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/drag_event_source_info.h"
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/edit_command.h"
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.h"
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/navigation_gesture.h"
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/view_message_enums.h"
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/common/javascript_message_type.h"
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/common/page_zoom.h"
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/common/referrer.h"
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/common/renderer_preferences.h"
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/common/stop_find_action.h"
3690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "content/public/common/top_controls_state.h"
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/renderer/render_view.h"
387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "content/renderer/media/webmediaplayer_delegate.h"
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/renderer/mouse_lock_dispatcher.h"
40868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "content/renderer/render_frame_impl.h"
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/renderer/render_widget.h"
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/renderer/renderer_webcookiejar_impl.h"
43868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "content/renderer/stats_collection_observer.h"
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ipc/ipc_platform_file.h"
45868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "third_party/WebKit/public/platform/WebGraphicsContext3D.h"
4658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "third_party/WebKit/public/web/WebAXObject.h"
477d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebConsoleMessage.h"
487d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebDataSource.h"
497d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebFrameClient.h"
507d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebHistoryItem.h"
517d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebIconURL.h"
527d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebInputEvent.h"
537d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebNavigationType.h"
547d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebNode.h"
557d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebPageSerializerClient.h"
567d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebPageVisibilityState.h"
577d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebSecurityOrigin.h"
587d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebViewClient.h"
59eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ui/base/ui_base_types.h"
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/surface/transport_dib.h"
61868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "webkit/common/webpreferences.h"
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID)
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/renderer/android/content_detector.h"
657d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebContentDetectionResult.h"
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(COMPILER_MSVC)
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// RenderViewImpl is a diamond-shaped hierarchy, with WebWidgetClient at the
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// root. VS warns when we inherit the WebWidgetClient method implementations
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// from RenderWidget.  It's safe to ignore that warning.
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#pragma warning(disable: 4250)
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CommandLine;
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PepperDeviceTest;
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SkBitmap;
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct PP_NetAddress_Private;
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ViewMsg_Navigate_Params;
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ViewMsg_PostMessage_Params;
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ViewMsg_StopFinding_Params;
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ui {
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct SelectedFileInfo;
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace ui
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace WebKit {
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebApplicationCacheHost;
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebApplicationCacheHostClient;
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebDOMMessageEvent;
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebDataSource;
922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class WebDateTimeChooserCompletion;
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebDragData;
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebGeolocationClient;
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebGestureEvent;
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebIconURL;
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebImage;
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebPeerConnection00Handler;
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebPeerConnection00HandlerClient;
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebMediaPlayer;
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebMediaPlayerClient;
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebMouseEvent;
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebPeerConnectionHandler;
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebPeerConnectionHandlerClient;
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebSocketStreamHandle;
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebSpeechInputController;
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebSpeechInputListener;
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebSpeechRecognizer;
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebStorageNamespace;
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebTouchEvent;
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebURLRequest;
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebUserMediaClient;
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct WebActiveWheelFlingParameters;
1143240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdochstruct WebCursorInfo;
1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct WebDateTimeChooserParams;
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct WebFileChooserParams;
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct WebFindOptions;
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct WebMediaPlayerAction;
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct WebPluginAction;
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct WebPoint;
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct WebWindowFeatures;
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID)
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebHitTestResult;
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
128bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdochnamespace webkit_glue {
129bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdochclass WebURLResponseExtraDataImpl;
130bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch}
131bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class BrowserPluginManager;
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DeviceOrientationDispatcher;
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DevToolsAgent;
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DocumentState;
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DomAutomationController;
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ExternalPopupMenu;
1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class FaviconHelper;
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class GeolocationDispatcher;
141a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)class ImageResourceFetcher;
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class InputTagSpeechDispatcher;
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class JavaBridgeDispatcher;
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class LoadProgressTracker;
14558e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdochclass MIDIDispatcher;
1467dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochclass MediaStreamClient;
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MediaStreamDispatcher;
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MouseLockDispatcher;
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class NavigationState;
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class NotificationProvider;
15158e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdochclass PepperPluginInstanceImpl;
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RenderViewObserver;
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RenderViewTest;
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RendererAccessibility;
1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class RendererDateTimePicker;
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RendererPpapiHost;
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RendererWebColorChooserImpl;
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RenderWidgetFullscreenPepper;
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SpeechRecognitionDispatcher;
160868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)class StatsCollectionController;
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebPluginDelegateProxy;
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct CustomContextMenuContext;
163eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochstruct DropData;
164c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)struct FaviconURL;
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct FileChooserParams;
1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct RenderViewImplParams;
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID)
1697dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochclass RendererMediaPlayerManager;
170eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass WebMediaPlayerProxyAndroid;
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// RenderView is an object that manages a WebView object, and provides a
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// communication interface with an embedding application process
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class CONTENT_EXPORT RenderViewImpl
1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    : public RenderWidget,
1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      NON_EXPORTED_BASE(public WebKit::WebViewClient),
1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      NON_EXPORTED_BASE(public WebKit::WebFrameClient),
1812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      NON_EXPORTED_BASE(public WebKit::WebPageSerializerClient),
1822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      public RenderView,
1837dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch      NON_EXPORTED_BASE(public WebMediaPlayerDelegate),
1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      public base::SupportsWeakPtr<RenderViewImpl> {
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
186d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  // Creates a new RenderView. |opener_id| is the routing ID of the RenderView
187d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  // responsible for creating this RenderView.
1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  static RenderViewImpl* Create(
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int32 opener_id,
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const RendererPreferences& renderer_prefs,
191c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      const WebPreferences& webkit_prefs,
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int32 routing_id,
193868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)      int32 main_frame_routing_id,
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int32 surface_id,
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int64 session_storage_namespace_id,
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const string16& frame_name,
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      bool is_renderer_created,
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      bool swapped_out,
1993551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      bool hidden,
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int32 next_page_id,
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebScreenInfo& screen_info,
2022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      AccessibilityMode accessibility_mode,
2032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      bool allow_partial_swap);
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Used by content_layouttest_support to hook into the creation of
2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // RenderViewImpls.
2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  static void InstallCreateHook(
2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      RenderViewImpl* (*create_render_view_impl)(RenderViewImplParams*));
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Returns the RenderViewImpl containing the given WebView.
2112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  static RenderViewImpl* FromWebView(WebKit::WebView* webview);
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Returns the RenderViewImpl for the given routing ID.
2142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  static RenderViewImpl* FromRoutingID(int routing_id);
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // May return NULL when the view is closing.
2172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  WebKit::WebView* webview() const;
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int history_list_offset() const { return history_list_offset_; }
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
221c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  const WebPreferences& webkit_preferences() const {
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return webkit_preferences_;
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void set_send_content_state_immediately(bool value) {
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    send_content_state_immediately_ = value;
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MediaStreamDispatcher* media_stream_dispatcher() {
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return media_stream_dispatcher_;
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MouseLockDispatcher* mouse_lock_dispatcher() {
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return mouse_lock_dispatcher_;
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
237ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  RendererWebCookieJarImpl* cookie_jar() { return &cookie_jar_; }
238ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID)
2407dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  RendererMediaPlayerManager* media_player_manager() {
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return media_player_manager_.get();
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Lazily initialize this view's BrowserPluginManager and return it.
246c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  BrowserPluginManager* GetBrowserPluginManager();
2472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Functions to add and remove observers for this object.
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void AddObserver(RenderViewObserver* observer);
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void RemoveObserver(RenderViewObserver* observer);
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
252868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  // Returns the StatsCollectionObserver associated with this view, or NULL
253868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  // if one wasn't created;
254868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  StatsCollectionObserver* GetStatsCollectionObserver() {
255868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    return stats_collection_observer_.get();
256868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  }
257868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Adds the given file chooser request to the file_chooser_completion_ queue
2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // (see that var for more) and requests the chooser be displayed if there are
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // no other waiting items in the queue.
2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns true if the chooser was successfully scheduled. False means we
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // didn't schedule anything.
2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool ScheduleFileChooser(const FileChooserParams& params,
2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           WebKit::WebFileChooserCompletion* completion);
2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void LoadNavigationErrorPage(
2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebFrame* frame,
2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebURLRequest& failed_request,
2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebURLError& error,
2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::string& html,
2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      bool replace);
2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Plugin-related functions --------------------------------------------------
2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2763240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch#if defined(ENABLE_PLUGINS)
2773240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // Indicates that the given instance has been created.
2783240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  void PepperInstanceCreated(PepperPluginInstanceImpl* instance);
2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2803240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // Indicates that the given instance is being destroyed. This is called from
2813240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // the destructor, so it's important that the instance is not dereferenced
2823240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // from this call.
2833240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  void PepperInstanceDeleted(PepperPluginInstanceImpl* instance);
2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2853240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // Notifies that |instance| has changed the cursor.
2863240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // This will update the cursor appearance if it is currently over the plugin
2873240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // instance.
2883240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  void PepperDidChangeCursor(PepperPluginInstanceImpl* instance,
2893240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch                             const WebKit::WebCursorInfo& cursor);
2903240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch
2913240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // Notifies that |instance| has received a mouse event.
2923240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  void PepperDidReceiveMouseEvent(PepperPluginInstanceImpl* instance);
2933240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch
2943240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // Notification that the given plugin is focused or unfocused.
2953240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  void PepperFocusChanged(PepperPluginInstanceImpl* instance, bool focused);
2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Informs the render view that a PPAPI plugin has changed text input status.
2983240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  void PepperTextInputTypeChanged(PepperPluginInstanceImpl* instance);
2993240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  void PepperCaretPositionChanged(PepperPluginInstanceImpl* instance);
3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Cancels current composition.
3023240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  void PepperCancelComposition(PepperPluginInstanceImpl* instance);
3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Informs the render view that a PPAPI plugin has changed selection.
3053240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  void PepperSelectionChanged(PepperPluginInstanceImpl* instance);
3063240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch
3073240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // Creates a fullscreen container for a pepper plugin instance.
3083240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  RenderWidgetFullscreenPepper* CreatePepperFullscreenContainer(
3093240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch      PepperPluginInstanceImpl* plugin);
3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Notification that a PPAPI plugin has been created.
3123240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  void PepperPluginCreated(RendererPpapiHost* host);
3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Retrieves the current caret position if a PPAPI plugin has focus.
3153240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  bool GetPepperCaretBounds(gfx::Rect* rect);
3163240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch
3173240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  bool IsPepperAcceptingCompositionEvents() const;
3183240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch
3193240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // Notification that the given plugin has crashed.
3203240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  void PluginCrashed(const base::FilePath& plugin_path,
3213240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch                     base::ProcessId plugin_pid);
3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Simulates IME events for testing purpose.
3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SimulateImeSetComposition(
3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const string16& text,
3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::vector<WebKit::WebCompositionUnderline>& underlines,
3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int selection_start,
3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int selection_end);
3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SimulateImeConfirmComposition(const string16& text,
33058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)                                     const gfx::Range& replacement_range);
3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) || defined(OS_WIN)
3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Informs the render view that the given plugin has gained or lost focus.
3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void PluginFocusChanged(bool focused, int plugin_id);
3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX)
3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Starts plugin IME.
3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void StartPluginIme();
3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void RegisterPluginDelegate(WebPluginDelegateProxy* delegate);
3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UnregisterPluginDelegate(WebPluginDelegateProxy* delegate);
3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Helper function to retrieve information about a plugin for a URL and mime
3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // type. Returns false if no plugin was found.
3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // |actual_mime_type| is the actual mime type supported by the
3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // plugin found that match the URL given (one for each item in
3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // |info|).
3502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  bool GetPluginInfo(const GURL& url,
3512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                     const GURL& page_url,
3522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                     const std::string& mime_type,
353ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch                     WebPluginInfo* plugin_info,
3542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                     std::string* actual_mime_type);
3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
356bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#endif  // ENABLE_PLUGINS
357bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void TransferActiveWheelFlingAnimation(
3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebActiveWheelFlingParameters& params);
3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns true if the focused element is editable text from the perspective
3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // of IME support (also used for on-screen keyboard). Works correctly inside
3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // supported PPAPI plug-ins.
3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool HasIMETextFocus();
3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Callback for use with GetWindowSnapshot.
3672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  typedef base::Callback<void(
3682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const gfx::Size&, const std::vector<unsigned char>&)>
3692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      WindowSnapshotCallback;
3702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void GetWindowSnapshot(const WindowSnapshotCallback& callback);
3722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Dispatches the current navigation state to the browser. Called on a
3742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // periodic timer so we don't send too many messages.
3752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void SyncNavigationState();
3762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Returns the length of the session history of this RenderView. Note that
3782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // this only coincides with the actual length of the session history if this
3792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // RenderView is the currently active RenderView of a WebContents.
3802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  unsigned GetLocalSessionHistoryLengthForTesting() const;
3812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Invokes OnSetFocus and marks the widget as active depending on the value
3832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // of |enable|. This is used for layout tests that need to control the focus
3842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // synchronously from the renderer.
3852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void SetFocusAndActivateForTesting(bool enable);
3862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Change the device scale factor and force the compositor to resize.
3882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void SetDeviceScaleFactorForTesting(float factor);
3892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
39090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // Control autoresize mode.
39190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  void EnableAutoResizeForTesting(const gfx::Size& min_size,
39290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                                  const gfx::Size& max_size);
39390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  void DisableAutoResizeForTesting(const gfx::Size& new_size);
39490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
3957dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  // Overrides the MediaStreamClient used when creating MediaStream players.
3967dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  // Must be called before any players are created.
3977dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  void SetMediaStreamClientForTesting(MediaStreamClient* media_stream_client);
3987dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IPC::Listener implementation ----------------------------------------------
4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE;
4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // WebKit::WebWidgetClient implementation ------------------------------------
4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Most methods are handled by RenderWidget.
4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didFocus();
4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didBlur();
4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void show(WebKit::WebNavigationPolicy policy);
4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void runModal();
4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool enterFullScreen();
4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void exitFullScreen();
4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool requestPointerLock();
4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void requestPointerUnlock();
4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool isPointerLocked();
4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didActivateCompositor(int input_handler_identifier);
4162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void didHandleGestureEvent(const WebKit::WebGestureEvent& event,
4172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                     bool event_cancelled) OVERRIDE;
418a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch  virtual void initializeLayerTreeView() OVERRIDE;
4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // WebKit::WebViewClient implementation --------------------------------------
4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebView* createView(
4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebFrame* creator,
4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebURLRequest& request,
4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebWindowFeatures& features,
4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebString& frame_name,
4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebNavigationPolicy policy);
4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebWidget* createPopupMenu(WebKit::WebPopupType popup_type);
4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebExternalPopupMenu* createExternalPopupMenu(
4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebPopupMenuInfo& popup_menu_info,
4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebExternalPopupMenuClient* popup_menu_client);
432eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  virtual WebKit::WebStorageNamespace* createSessionStorageNamespace();
4333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  virtual bool shouldReportDetailedMessageForSource(
4343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      const WebKit::WebString& source);
4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didAddMessageToConsole(
4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebConsoleMessage& message,
4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebString& source_name,
438424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)      unsigned source_line,
439424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)      const WebKit::WebString& stack_trace);
4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void printPage(WebKit::WebFrame* frame);
4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebNotificationPresenter* notificationPresenter();
4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool enumerateChosenDirectory(
4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebString& path,
4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebFileChooserCompletion* chooser_completion);
4455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void initializeHelperPluginWebFrame(WebKit::WebHelperPlugin*);
4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didStartLoading();
4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didStopLoading();
4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didChangeLoadProgress(WebKit::WebFrame* frame,
4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     double load_progress);
4502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void didCancelCompositionOnSelectionChange();
4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didChangeSelection(bool is_selection_empty);
4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didExecuteCommand(const WebKit::WebString& command_name);
4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool handleCurrentKeyboardEvent();
4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebColorChooser* createColorChooser(
4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebColorChooserClient*, const WebKit::WebColor& initial_color);
4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool runFileChooser(
4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebFileChooserParams& params,
4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebFileChooserCompletion* chooser_completion);
4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void runModalAlertDialog(WebKit::WebFrame* frame,
4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   const WebKit::WebString& message);
4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool runModalConfirmDialog(WebKit::WebFrame* frame,
4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     const WebKit::WebString& message);
4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool runModalPromptDialog(WebKit::WebFrame* frame,
4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    const WebKit::WebString& message,
4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    const WebKit::WebString& default_value,
4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    WebKit::WebString* actual_value);
4675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool runModalBeforeUnloadDialog(WebKit::WebFrame* frame,
468a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)                                          bool is_reload,
469a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)                                          const WebKit::WebString& message);
470a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  // DEPRECATED
471a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  virtual bool runModalBeforeUnloadDialog(WebKit::WebFrame* frame,
4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          const WebKit::WebString& message);
4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void showContextMenu(WebKit::WebFrame* frame,
4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               const WebKit::WebContextMenuData& data);
4753551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  virtual void clearContextMenu();
4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void setStatusText(const WebKit::WebString& text);
4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void setMouseOverURL(const WebKit::WebURL& url);
4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void setKeyboardFocusURL(const WebKit::WebURL& url);
4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void startDragging(WebKit::WebFrame* frame,
4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                             const WebKit::WebDragData& data,
4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                             WebKit::WebDragOperationsMask mask,
4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                             const WebKit::WebImage& image,
4835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                             const WebKit::WebPoint& imageOffset);
4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool acceptsLoadDrops();
4855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void focusNext();
4865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void focusPrevious();
4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void focusedNodeChanged(const WebKit::WebNode& node);
4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void numberOfWheelEventHandlersChanged(unsigned num_handlers);
4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didUpdateLayout();
4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID)
4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool didTapMultipleTargets(
4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebGestureEvent& event,
4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebVector<WebKit::WebRect>& target_rects);
4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
4955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void navigateBackForwardSoon(int offset);
4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int historyBackListCount();
4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int historyForwardListCount();
49858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual void postAccessibilityEvent(
49958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      const WebKit::WebAXObject& obj, WebKit::WebAXEvent event);
5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didUpdateInspectorSetting(const WebKit::WebString& key,
5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                         const WebKit::WebString& value);
5025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebGeolocationClient* geolocationClient();
5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebSpeechInputController* speechInputController(
5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebSpeechInputListener* listener);
5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebSpeechRecognizer* speechRecognizer();
5065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebDeviceOrientationClient* deviceOrientationClient();
5075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void zoomLimitsChanged(double minimum_level, double maximum_level);
5085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void zoomLevelChanged();
50958e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch  virtual double zoomLevelToZoomFactor(double zoom_level) const;
51058e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch  virtual double zoomFactorToZoomLevel(double factor) const;
5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void registerProtocolHandler(const WebKit::WebString& scheme,
5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                       const WebKit::WebString& base_url,
5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                       const WebKit::WebString& url,
5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                       const WebKit::WebString& title);
5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebPageVisibilityState visibilityState() const;
5165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebUserMediaClient* userMediaClient();
51758e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch  virtual WebKit::WebMIDIClient* webMIDIClient();
5185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void draggableRegionsChanged();
5195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID)
5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void scheduleContentIntent(const WebKit::WebURL& intent);
5225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void cancelScheduledContentIntents();
5235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebContentDetectionResult detectContentAround(
5245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebHitTestResult& touch_hit);
5252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
5262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Only used on Android since all other platforms implement
5272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // date and time input fields using MULTIPLE_FIELDS_UI
5282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool openDateTimeChooser(const WebKit::WebDateTimeChooserParams&,
5292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                   WebKit::WebDateTimeChooserCompletion*);
5307d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  virtual void didScrollWithKeyboard(const WebKit::WebSize& delta);
5315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // WebKit::WebFrameClient implementation -------------------------------------
5345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebMediaPlayer* createMediaPlayer(
5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebFrame* frame,
5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebURL& url,
5385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebMediaPlayerClient* client);
5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebCookieJar* cookieJar(WebKit::WebFrame* frame);
540868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  virtual void didAccessInitialDocument(WebKit::WebFrame* frame);
5412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void didDisownOpener(WebKit::WebFrame* frame);
5425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void frameDetached(WebKit::WebFrame* frame);
5435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void willClose(WebKit::WebFrame* frame);
544c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
545c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // The WebDataSource::ExtraData* is assumed to be a DocumentState* subclass.
546c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual WebKit::WebNavigationPolicy decidePolicyForNavigation(
547c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      WebKit::WebFrame* frame,
548c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      WebKit::WebDataSource::ExtraData* extraData,
549c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      const WebKit::WebURLRequest& request,
550c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      WebKit::WebNavigationType type,
551c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      WebKit::WebNavigationPolicy default_policy,
552c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      bool is_redirect);
553c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // DEPRECATED.
5545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebNavigationPolicy decidePolicyForNavigation(
5555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebFrame* frame,
5565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebURLRequest& request,
5575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebNavigationType type,
5585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebNavigationPolicy default_policy,
5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      bool is_redirect);
5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void willSendSubmitEvent(WebKit::WebFrame* frame,
5615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   const WebKit::WebFormElement& form);
5625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void willSubmitForm(WebKit::WebFrame* frame,
5635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              const WebKit::WebFormElement& form);
5645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didCreateDataSource(WebKit::WebFrame* frame,
5655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   WebKit::WebDataSource* datasource);
5665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didStartProvisionalLoad(WebKit::WebFrame* frame);
5675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didReceiveServerRedirectForProvisionalLoad(
5685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebFrame* frame);
5695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didFailProvisionalLoad(WebKit::WebFrame* frame,
5705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      const WebKit::WebURLError& error);
5715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didCommitProvisionalLoad(WebKit::WebFrame* frame,
5725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                        bool is_new_navigation);
5735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didClearWindowObject(WebKit::WebFrame* frame);
5745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didCreateDocumentElement(WebKit::WebFrame* frame);
5755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didReceiveTitle(WebKit::WebFrame* frame,
5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               const WebKit::WebString& title,
5775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               WebKit::WebTextDirection direction);
5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didChangeIcon(WebKit::WebFrame*,
579eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                             WebKit::WebIconURL::Type);
5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didFinishDocumentLoad(WebKit::WebFrame* frame);
5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didHandleOnloadEvents(WebKit::WebFrame* frame);
5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didFailLoad(WebKit::WebFrame* frame,
5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           const WebKit::WebURLError& error);
5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didFinishLoad(WebKit::WebFrame* frame);
5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didNavigateWithinPage(WebKit::WebFrame* frame,
5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     bool is_new_navigation);
5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didUpdateCurrentHistoryItem(WebKit::WebFrame* frame);
5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void willSendRequest(WebKit::WebFrame* frame,
5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               unsigned identifier,
5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               WebKit::WebURLRequest& request,
5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               const WebKit::WebURLResponse& redirect_response);
5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didReceiveResponse(WebKit::WebFrame* frame,
5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  unsigned identifier,
5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  const WebKit::WebURLResponse& response);
5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didFinishResourceLoad(WebKit::WebFrame* frame,
5965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     unsigned identifier);
5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didLoadResourceFromMemoryCache(
5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebFrame* frame,
5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebURLRequest& request,
6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebURLResponse&);
6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didDisplayInsecureContent(WebKit::WebFrame* frame);
6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didRunInsecureContent(
6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebFrame* frame,
6045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebSecurityOrigin& origin,
6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebURL& target);
6065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didExhaustMemoryAvailableForScript(WebKit::WebFrame* frame);
6075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didCreateScriptContext(WebKit::WebFrame* frame,
6085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      v8::Handle<v8::Context>,
6095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      int extension_group,
6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      int world_id);
6115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void willReleaseScriptContext(WebKit::WebFrame* frame,
6125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                        v8::Handle<v8::Context>,
6135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                        int world_id);
6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didChangeScrollOffset(WebKit::WebFrame* frame);
615eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  virtual void willInsertBody(WebKit::WebFrame* frame);
616eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  virtual void didFirstVisuallyNonEmptyLayout(WebKit::WebFrame*);
6175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didChangeContentsSize(WebKit::WebFrame* frame,
6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     const WebKit::WebSize& size);
6195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void reportFindInPageMatchCount(int request_id,
6205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          int count,
6215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          bool final_update);
6225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void reportFindInPageSelection(int request_id,
6235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                         int active_match_ordinal,
6245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                         const WebKit::WebRect& sel);
6255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void requestStorageQuota(
6265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebFrame* frame,
6275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebStorageQuotaType type,
6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      unsigned long long requested_size,
6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebStorageQuotaCallbacks* callbacks);
6305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void willOpenSocketStream(
6315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebSocketStreamHandle* handle);
6325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void willStartUsingPeerConnectionHandler(WebKit::WebFrame* frame,
633eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      WebKit::WebRTCPeerConnectionHandler* handler);
6345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool willCheckAndDispatchMessageEvent(
6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebFrame* sourceFrame,
6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebFrame* targetFrame,
6375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebSecurityOrigin targetOrigin,
638eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      WebKit::WebDOMMessageEvent event);
639eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  virtual WebKit::WebString acceptLanguages();
6405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebString userAgentOverride(
6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebFrame* frame,
642eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      const WebKit::WebURL& url);
643eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  virtual WebKit::WebString doNotTrackValue(WebKit::WebFrame* frame);
644eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  virtual bool allowWebGL(WebKit::WebFrame* frame, bool default_value);
6452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void didLoseWebGLContext(
6462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      WebKit::WebFrame* frame,
647eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      int arb_robustness_status_code);
6485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // WebKit::WebPageSerializerClient implementation ----------------------------
6505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didSerializeDataForFrame(
6525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebURL& frame_url,
6535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebCString& data,
6545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      PageSerializationStatus status) OVERRIDE;
6555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // RenderView implementation -------------------------------------------------
6575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool Send(IPC::Message* message) OVERRIDE;
6595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int GetRoutingID() const OVERRIDE;
6605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int GetPageId() const OVERRIDE;
6615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual gfx::Size GetSize() const OVERRIDE;
662c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual WebPreferences& GetWebkitPreferences() OVERRIDE;
663c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void SetWebkitPreferences(const WebPreferences& preferences) OVERRIDE;
6645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebView* GetWebView() OVERRIDE;
6655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebNode GetFocusedNode() const OVERRIDE;
6665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebNode GetContextMenuNode() const OVERRIDE;
6675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsEditableNode(const WebKit::WebNode& node) const OVERRIDE;
6685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebPlugin* CreatePlugin(
6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebFrame* frame,
670ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch      const WebPluginInfo& info,
6715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebPluginParams& params) OVERRIDE;
6725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void EvaluateScript(const string16& frame_xpath,
6735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              const string16& jscript,
6745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              int id,
6755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              bool notify_result) OVERRIDE;
6765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool ShouldDisplayScrollbars(int width, int height) const OVERRIDE;
6775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int GetEnabledBindings() const OVERRIDE;
6785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool GetContentStateImmediately() const OVERRIDE;
6795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual float GetFilteredTimePerFrame() const OVERRIDE;
6805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int ShowContextMenu(ContextMenuClient* client,
6815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              const ContextMenuParams& params) OVERRIDE;
6825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void CancelContextMenu(int request_id) OVERRIDE;
6835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebPageVisibilityState GetVisibilityState() const OVERRIDE;
6845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RunModalAlertDialog(WebKit::WebFrame* frame,
6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   const WebKit::WebString& message) OVERRIDE;
6865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void LoadURLExternally(
6875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebFrame* frame,
6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebURLRequest& request,
6895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebNavigationPolicy policy) OVERRIDE;
690ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  virtual void DidStartLoading() OVERRIDE;
691ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  virtual void DidStopLoading() OVERRIDE;
6925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Repaint(const gfx::Size& size) OVERRIDE;
6935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetEditCommandForNextKeyEvent(const std::string& name,
6945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                             const std::string& value) OVERRIDE;
6955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ClearEditCommands() OVERRIDE;
6962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual SSLStatus GetSSLStatusOfFrame(WebKit::WebFrame* frame) const OVERRIDE;
6972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_ANDROID)
69890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  virtual void UpdateTopControlsState(TopControlsState constraints,
69990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                                      TopControlsState current,
70090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                                      bool animate) OVERRIDE;
7012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
7025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7037dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  // WebMediaPlayerDelegate implementation -----------------------
7045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DidPlay(WebKit::WebMediaPlayer* player) OVERRIDE;
7065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DidPause(WebKit::WebMediaPlayer* player) OVERRIDE;
7075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void PlayerGone(WebKit::WebMediaPlayer* player) OVERRIDE;
7085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Please do not add your stuff randomly to the end here. If there is an
7105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // appropriate section, add it there. If not, there are some random functions
7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // nearer to the top you can add it to.
7125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Cannot use std::set unfortunately since linked_ptr<> does not support
7145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // operator<.
715a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  typedef std::vector<linked_ptr<ImageResourceFetcher> >
7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ImageResourceFetcherList;
7175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected:
7195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // RenderWidget overrides:
7205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Close() OVERRIDE;
72190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  virtual void OnResize(const ViewMsg_Resize_Params& params) OVERRIDE;
7225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void WillInitiatePaint() OVERRIDE;
7235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DidInitiatePaint() OVERRIDE;
7245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DidFlushPaint() OVERRIDE;
72558e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch  virtual PepperPluginInstanceImpl* GetBitmapForOptimizedPluginPaint(
7265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const gfx::Rect& paint_bounds,
7275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      TransportDIB** dib,
7285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      gfx::Rect* location,
7295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      gfx::Rect* clip,
7305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      float* scale_factor) OVERRIDE;
7315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual gfx::Vector2d GetScrollOffset() OVERRIDE;
7325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DidHandleKeyEvent() OVERRIDE;
7335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool WillHandleMouseEvent(
7345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebMouseEvent& event) OVERRIDE;
7357d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  virtual bool WillHandleKeyEvent(
7367d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)      const WebKit::WebKeyboardEvent& event) OVERRIDE;
7375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool WillHandleGestureEvent(
7385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebGestureEvent& event) OVERRIDE;
7395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DidHandleMouseEvent(const WebKit::WebMouseEvent& event) OVERRIDE;
7405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DidHandleTouchEvent(const WebKit::WebTouchEvent& event) OVERRIDE;
7412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool HasTouchEventHandlersAt(const gfx::Point& point) const OVERRIDE;
7425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnSetFocus(bool enable) OVERRIDE;
7435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnWasHidden() OVERRIDE;
7445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnWasShown(bool needs_repainting) OVERRIDE;
7452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual GURL GetURLForGraphicsContext3D() OVERRIDE;
7465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool ForceCompositingModeEnabled() OVERRIDE;
7475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnImeSetComposition(
7485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const string16& text,
7495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::vector<WebKit::WebCompositionUnderline>& underlines,
7505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int selection_start,
7515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int selection_end) OVERRIDE;
7527dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  virtual void OnImeConfirmComposition(const string16& text,
75358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)                                       const gfx::Range& replacement_range,
7547dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                                       bool keep_selection) OVERRIDE;
7552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void SetDeviceScaleFactor(float device_scale_factor) OVERRIDE;
7565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ui::TextInputType GetTextInputType() OVERRIDE;
7575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetSelectionBounds(gfx::Rect* start, gfx::Rect* end) OVERRIDE;
7587dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#if defined(OS_MACOSX) || defined(OS_WIN) || defined(USE_AURA)
7595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetCompositionCharacterBounds(
7605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      std::vector<gfx::Rect>* character_bounds) OVERRIDE;
76158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual void GetCompositionRange(gfx::Range* range) OVERRIDE;
7627dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#endif
7635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool CanComposeInline() OVERRIDE;
7642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void DidCommitCompositorFrame() OVERRIDE;
7652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void InstrumentWillBeginFrame() OVERRIDE;
7662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void InstrumentDidBeginFrame() OVERRIDE;
7672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void InstrumentDidCancelFrame() OVERRIDE;
7682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void InstrumentWillComposite() OVERRIDE;
7692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool AllowPartialSwap() const OVERRIDE;
7702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
7712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected:
7722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  explicit RenderViewImpl(RenderViewImplParams* params);
7732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
7742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void Initialize(RenderViewImplParams* params);
7752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
7762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Do not delete directly.  This class is reference counted.
7772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual ~RenderViewImpl();
7785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
7805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // For unit tests.
7815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  friend class ExternalPopupMenuTest;
7825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  friend class PepperDeviceTest;
7835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  friend class RendererAccessibilityTest;
7845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  friend class RenderViewTest;
7855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
786bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch  // TODO(nasko): Temporarily friend RenderFrameImpl, so we don't duplicate
787bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch  // utility functions needed in both classes, while we move frame specific
788bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch  // code away from this class.
789bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch  friend class RenderFrameImpl;
790bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch
7915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(ExternalPopupMenuRemoveTest, RemoveOnChange);
7925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(ExternalPopupMenuTest, NormalCase);
7935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(ExternalPopupMenuTest, ShowPopupThenNavigate);
794eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  FRIEND_TEST_ALL_PREFIXES(RendererAccessibilityTest,
795eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                           AccessibilityMessagesQueueWhileSwappedOut);
7965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, DecideNavigationPolicyForWebUI);
7975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest,
798c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                           DidFailProvisionalLoadWithErrorForError);
799c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest,
800c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                           DidFailProvisionalLoadWithErrorForCancellation);
801c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest,
8025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           DontIgnoreBackAfterNavEntryLimit);
8035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, ImeComposition);
8045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, InsertCharacters);
8055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, JSBlockSentAfterPageLoad);
8065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, LastCommittedUpdateState);
8075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnExtendSelectionAndDelete);
8085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnHandleKeyboardEvent);
8097d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnImeTypeChanged);
8105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnNavStateChanged);
8115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnSetTextDirection);
8125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnUpdateWebPreferences);
8135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, SendSwapOutACK);
8142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, ReloadWhileSwappedOut);
8155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest,
8165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           SetEditableSelectionAndComposition);
8175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, StaleNavigationsIgnored);
8185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, UpdateTargetURLWithInvalidURL);
8195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest,
8205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           GetCompositionCharacterBoundsTest);
8215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnNavigationHttpPost);
8225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX)
8235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewTest, MacTestCmdUp);
8245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
8255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, SetHistoryLengthAndPrune);
8265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, ZoomLimit);
8272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, NavigateFrame);
8282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest,
8292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                           ShouldUpdateSelectionTextFromContextMenuParams);
830868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, BasicRenderFrame);
8319ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, TextInputTypeWithPepper);
8325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  typedef std::map<GURL, double> HostZoomLevels;
8345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  enum ErrorPageType {
8365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    DNS_ERROR,
8375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    HTTP_404,
8385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    CONNECTION_ERROR,
8395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
8405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
841bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch  static WebKit::WebReferrerPolicy GetReferrerPolicyFromRequest(
842bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch      WebKit::WebFrame* frame,
843bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch      const WebKit::WebURLRequest& request);
844bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch
845bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch  static Referrer GetReferrerFromRequest(
846bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch      WebKit::WebFrame* frame,
847bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch      const WebKit::WebURLRequest& request);
848bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch
849bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch  static webkit_glue::WebURLResponseExtraDataImpl* GetExtraDataFromResponse(
850bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch      const WebKit::WebURLResponse& response);
851bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch
8525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateURL(WebKit::WebFrame* frame);
8535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateTitle(WebKit::WebFrame* frame, const string16& title,
8545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                   WebKit::WebTextDirection title_direction);
8555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateSessionHistory(WebKit::WebFrame* frame);
8565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SendUpdateState(const WebKit::WebHistoryItem& item);
8575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Update current main frame's encoding and send it to browser window.
8595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Since we want to let users see the right encoding info from menu
8605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // before finishing loading, we call the UpdateEncoding in
8615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // a) function:DidCommitLoadForFrame. When this function is called,
8625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // that means we have got first data. In here we try to get encoding
8635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // of page if it has been specified in http header.
8645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // b) function:DidReceiveTitle. When this function is called,
8655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // that means we have got specified title. Because in most of webpages,
8665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // title tags will follow meta tags. In here we try to get encoding of
8675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // page if it has been specified in meta tag.
8685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // c) function:DidFinishDocumentLoadForFrame. When this function is
8695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // called, that means we have got whole html page. In here we should
8705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // finally get right encoding of page.
8715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateEncoding(WebKit::WebFrame* frame,
8725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      const std::string& encoding_name);
8735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OpenURL(WebKit::WebFrame* frame,
8755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)               const GURL& url,
8765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)               const Referrer& referrer,
8775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)               WebKit::WebNavigationPolicy policy);
8785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool RunJavaScriptMessage(JavaScriptMessageType type,
8805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            const string16& message,
8815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            const string16& default_value,
8825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            const GURL& frame_url,
8835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            string16* result);
8845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Sends a message and runs a nested message loop.
8865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool SendAndRunNestedMessageLoop(IPC::SyncMessage* message);
8875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Called when the "pinned to left/right edge" state needs to be updated.
8895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateScrollState(WebKit::WebFrame* frame);
8905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IPC message handlers ------------------------------------------------------
8925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
8935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The documentation for these functions should be in
894c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // content/common/*_messages.h for the message that the function is handling.
895c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
896c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnCopy();
897c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnCut();
898c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnDelete();
899c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnExecuteEditCommand(const std::string& name, const std::string& value);
900c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnMoveCaret(const gfx::Point& point);
901c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnPaste();
902c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnPasteAndMatchStyle();
903c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnRedo();
904c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnReplace(const string16& text);
905c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnReplaceMisspelling(const string16& text);
906c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnScrollFocusedEditableNodeIntoRect(const gfx::Rect& rect);
907c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnSelectAll();
908c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnSelectRange(const gfx::Point& start, const gfx::Point& end);
909c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnSetEditCommandsForNextKeyEvent(const EditCommands& edit_commands);
910c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnUndo();
911c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnUnselect();
9125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnAllowBindings(int enabled_bindings_flags);
9145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnAllowScriptToClose(bool script_can_close);
9155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnCancelDownload(int32 download_id);
9165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnClearFocusedNode();
9175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnClosePage();
9185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnContextMenuClosed(const CustomContextMenuContext& custom_context);
9197d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  void OnShowContextMenu(const gfx::Point& location);
9205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnCopyImageAt(int x, int y);
9215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnCSSInsertRequest(const string16& frame_xpath,
9225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          const std::string& css);
9235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnCustomContextMenuAction(const CustomContextMenuContext& custom_context,
9245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      unsigned action);
9252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnSetName(const std::string& name);
9265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnDeterminePageLanguage();
9275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnDisableScrollbarsForSmallWindows(
9285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const gfx::Size& disable_scrollbars_size_limit);
9295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnDragSourceEndedOrMoved(const gfx::Point& client_point,
9305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                const gfx::Point& screen_point,
9315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                bool ended,
9325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                WebKit::WebDragOperation drag_operation);
9335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnDragSourceSystemDragEnded();
9345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnDragTargetDrop(const gfx::Point& client_pt,
9355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        const gfx::Point& screen_pt,
9365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        int key_modifiers);
937eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  void OnDragTargetDragEnter(const DropData& drop_data,
9385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                             const gfx::Point& client_pt,
9395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                             const gfx::Point& screen_pt,
9405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                             WebKit::WebDragOperationsMask operations_allowed,
9415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                             int key_modifiers);
9425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnDragTargetDragLeave();
9435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnDragTargetDragOver(const gfx::Point& client_pt,
9445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            const gfx::Point& screen_pt,
9455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            WebKit::WebDragOperationsMask operations_allowed,
9465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            int key_modifiers);
9475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnEnablePreferredSizeChangedMode();
9485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnEnableAutoResize(const gfx::Size& min_size, const gfx::Size& max_size);
9495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnDisableAutoResize(const gfx::Size& new_size);
9502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnEnumerateDirectoryResponse(int id,
9512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                    const std::vector<base::FilePath>& paths);
9522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnExtendSelectionAndDelete(int before, int after);
9535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnFileChooserResponse(
9545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::vector<ui::SelectedFileInfo>& files);
9555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnFind(int request_id, const string16&, const WebKit::WebFindOptions&);
9565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnGetAllSavableResourceLinksForCurrentPage(const GURL& page_url);
9575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnGetSerializedHtmlDataForCurrentPageWithLocalLinks(
9585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::vector<GURL>& links,
9592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const std::vector<base::FilePath>& local_paths,
9602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const base::FilePath& local_directory_name);
9615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnMediaPlayerActionAt(const gfx::Point& location,
9625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                             const WebKit::WebMediaPlayerAction& action);
9635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Screen has rotated. 0 = default (portrait), 90 = one turn right, and so on.
9655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnOrientationChangeEvent(int orientation);
9665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnPluginActionAt(const gfx::Point& location,
9685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        const WebKit::WebPluginAction& action);
9695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnMoveOrResizeStarted();
9702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnNavigate(const ViewMsg_Navigate_Params& params);
9715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnPostMessageEvent(const ViewMsg_PostMessage_Params& params);
9725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnReleaseDisambiguationPopupDIB(TransportDIB::Handle dib_handle);
9735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnReloadFrame();
9745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnResetPageEncodingToDefault();
9755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnScriptEvalRequest(const string16& frame_xpath,
9765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           const string16& jscript,
9775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           int id,
9785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           bool notify_result);
9792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnSetAccessibilityMode(AccessibilityMode new_mode);
9805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnSetActive(bool active);
9815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnSetAltErrorPageURL(const GURL& gurl);
9825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnSetBackground(const SkBitmap& background);
9832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnSetCompositionFromExistingText(
9845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int start, int end,
9855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::vector<WebKit::WebCompositionUnderline>& underlines);
986c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnExitFullscreen();
9872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnSetEditableSelectionOffsets(int start, int end);
9882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnSetHistoryLengthAndPrune(int history_length, int32 minimum_page_id);
9895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnSetInitialFocus(bool reverse);
9905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnSetPageEncoding(const std::string& encoding_name);
9915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnSetRendererPrefs(const RendererPreferences& renderer_prefs);
992c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnSetWebUIProperty(const std::string& name, const std::string& value);
9935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnSetZoomLevel(double zoom_level);
9942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnSetZoomLevelForLoadingURL(const GURL& url, double zoom_level);
9955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnShouldClose();
9965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnStop();
9975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnStopFinding(StopFindAction action);
9987d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  void OnSwapOut();
9995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnThemeChanged();
10005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnUpdateTargetURLAck();
10015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnUpdateTimezone();
1002c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnUpdateWebPreferences(const WebPreferences& prefs);
10035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnZoom(PageZoom zoom);
10055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnZoomFactor(PageZoom zoom, int zoom_center_x, int zoom_center_y);
10065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnEnableViewSourceMode();
10085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnJavaBridgeInit();
10105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnDisownOpener();
10125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID)
10145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnActivateNearestFindResult(int request_id, float x, float y);
10155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnFindMatchRects(int current_version);
10165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnSelectPopupMenuItems(bool canceled,
10175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              const std::vector<int>& selected_indices);
10185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnUndoScrollFocusedEditableNodeIntoRect();
1019c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnUpdateTopControlsState(bool enable_hiding,
1020c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                bool enable_showing,
1021c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                bool animate);
10225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(OS_MACOSX)
10235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnCopyToFindPboard();
10245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnPluginImeCompositionCompleted(const string16& text, int plugin_id);
10252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnSelectPopupMenuItem(int selected_index);
10265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnSetInLiveResize(bool in_live_resize);
10275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnSetWindowVisibility(bool visible);
10285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnWindowFrameChanged(const gfx::Rect& window_frame,
10295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            const gfx::Rect& view_frame);
10305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
10315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnWindowSnapshotCompleted(const int snapshot_id,
10332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const gfx::Size& size, const std::vector<unsigned char>& png);
10342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
10355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Adding a new message handler? Please add it in alphabetical order above
10375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // and put it in the same position in the .cc file.
10385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Misc private functions ----------------------------------------------------
10405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void ZoomFactorHelper(PageZoom zoom, int zoom_center_x, int zoom_center_y,
10415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        float scaling_increment);
10425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void AltErrorPageFinished(WebKit::WebFrame* frame,
1044c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                            const WebKit::WebURLRequest& original_request,
10455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            const WebKit::WebURLError& original_error,
10465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            const std::string& html);
10475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Check whether the preferred size has changed.
10495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void CheckPreferredSize();
10505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  // Initializes |media_stream_client_|, returning true if successful. Returns
105258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  // false if it wasn't possible to create a MediaStreamClient (e.g., WebRTC is
105358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  // disabled) in which case |media_stream_client_| is NULL.
105458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  bool InitializeMediaStreamClient();
10555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // This callback is triggered when DownloadFavicon completes, either
10575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // succesfully or with a failure. See DownloadFavicon for more
10585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // details.
1059a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  void DidDownloadFavicon(ImageResourceFetcher* fetcher,
10605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          const SkBitmap& image);
10615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Requests to download a favicon image. When done, the RenderView is notified
10635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // by way of DidDownloadFavicon. Returns true if the request was successfully
10645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // started, false otherwise. id is used to uniquely identify the request and
10655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // passed back to the DidDownloadFavicon method. If the image has multiple
10665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // frames, the frame whose size is image_size is returned. If the image
10675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // doesn't have a frame at the specified size, the first is returned.
10685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool DownloadFavicon(int id, const GURL& image_url, int image_size);
10695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GURL GetAlternateErrorPageURL(const GURL& failed_url,
10715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                ErrorPageType error_type);
10725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Locates a sub frame with given xpath
10745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WebKit::WebFrame* GetChildFrame(const string16& frame_xpath) const;
10755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns the URL being loaded by the given frame's request.
10775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GURL GetLoadingUrl(WebKit::WebFrame* frame) const;
10785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Should only be called if this object wraps a PluginDocument.
10805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WebKit::WebPlugin* GetWebPluginFromPluginDocument();
10815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns true if the |params| navigation is to an entry that has been
10835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // cropped due to a recent navigation the browser did not know about.
10845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool IsBackForwardToStaleEntry(const ViewMsg_Navigate_Params& params,
10855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 bool is_reload);
10865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool MaybeLoadAlternateErrorPage(WebKit::WebFrame* frame,
10885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   const WebKit::WebURLError& error,
10895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   bool replace);
10905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Make this RenderView show an empty, unscriptable page.
10925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void NavigateToSwappedOutURL(WebKit::WebFrame* frame);
10935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // If we initiated a navigation, this function will populate |document_state|
10955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // with the navigation information saved in OnNavigate().
10965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void PopulateDocumentStateFromPending(DocumentState* document_state);
10975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns a new NavigationState populated with the navigation information
10995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // saved in OnNavigate().
11005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NavigationState* CreateNavigationStateFromPending();
11015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Processes the command-line flags --enable-viewport,
11032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // --enable-fixed-layout[=w,h] and --enable-pinch.
11045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void ProcessViewLayoutFlags(const CommandLine& command_line);
11055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID)
11075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Launch an Android content intent with the given URL.
11085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void LaunchAndroidContentIntent(const GURL& intent_url, size_t request_id);
11095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
11105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Sends a reply to the current find operation handling if it was a
11125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // synchronous find request.
11135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SendFindReply(int request_id,
11145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     int match_count,
11155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     int ordinal,
11165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     const WebKit::WebRect& selection_rect,
11175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     bool final_status_update);
11185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Returns whether |params.selection_text| should be synchronized to the
11202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // browser before bringing up the context menu. Static for testing.
11212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  static bool ShouldUpdateSelectionTextFromContextMenuParams(
11222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const string16& selection_text,
11232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      size_t selection_text_offset,
112458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      const gfx::Range& selection_range,
11252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const ContextMenuParams& params);
11262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
11275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Starts nav_state_sync_timer_ if it isn't already running.
11285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void StartNavStateSyncTimerIfNecessary();
11295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Dispatches the current state of selection on the webpage to the browser if
11315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // it has changed.
11325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // TODO(varunjain): delete this method once we figure out how to keep
11335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // selection handles in sync with the webpage.
11345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SyncSelectionIfRequired();
11355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_POSIX) && !defined(OS_MACOSX)
11375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateFontRenderingFromRendererPrefs();
11385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else
11395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateFontRenderingFromRendererPrefs() {}
11405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
11415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Update the target url and tell the browser that the target URL has changed.
11435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // If |url| is empty, show |fallback_url|.
11445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateTargetURL(const GURL& url, const GURL& fallback_url);
11455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1146c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Tells the browser what the new list of favicons for the webpage is.
1147c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void SendUpdateFaviconURL(const std::vector<FaviconURL>& urls);
1148c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
1149c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Invoked from DidStopLoading(). Sends the current list of loaded favicons to
1150c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // the browser.
1151c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void DidStopLoadingIcons();
1152c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
11532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Coordinate conversion -----------------------------------------------------
11542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
11552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  gfx::RectF ClientRectToPhysicalWindowRect(const gfx::RectF& rect) const;
11562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
11575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // ---------------------------------------------------------------------------
11585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // ADDING NEW FUNCTIONS? Please keep private functions alphabetized and put
11595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // it in the same order in the .cc file as it was in the header.
11605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // ---------------------------------------------------------------------------
11615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Settings ------------------------------------------------------------------
11635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1164c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  WebPreferences webkit_preferences_;
11655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  RendererPreferences renderer_preferences_;
11665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  HostZoomLevels host_zoom_levels_;
11685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Whether content state (such as form state, scroll position and page
11705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // contents) should be sent to the browser immediately. This is normally
11715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // false, but set to true by some tests.
11725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool send_content_state_immediately_;
11735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Bitwise-ORed set of extra bindings that have been enabled.  See
11755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // BindingsPolicy for details.
11765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int enabled_bindings_;
11775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The alternate error page URL, if one exists.
11795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GURL alternate_error_page_url_;
11805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // If true, we send IPC messages when |preferred_size_| changes.
11825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool send_preferred_size_changes_;
11835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // If non-empty, and |send_preferred_size_changes_| is true, disable drawing
11855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // scroll bars on windows smaller than this size.  Used for windows that the
11865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // browser resizes to the size of the content, such as browser action popups.
11875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // If a render view is set to the minimum size of its content, webkit may add
11885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // scroll bars.  This makes sense for fixed sized windows, but it does not
11895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // make sense when the size of the view was chosen to fit the content.
11905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // This setting ensures that no scroll bars are drawn.  The size limit exists
11915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // because if the view grows beyond a size known to the browser, scroll bars
11925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // should be drawn.
11935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gfx::Size disable_scrollbars_size_limit_;
11945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Loading state -------------------------------------------------------------
11965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // True if the top level frame is currently being loaded.
11985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool is_loading_;
11995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The gesture that initiated the current navigation.
12015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NavigationGesture navigation_gesture_;
12025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Used for popups.
12045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool opened_by_user_gesture_;
12055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Whether this RenderView was created by a frame that was suppressing its
12075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // opener. If so, we may want to load pages in a separate process.  See
12085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // decidePolicyForNavigation for details.
12095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool opener_suppressed_;
12105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Holds state pertaining to a navigation that we initiated.  This is held by
12125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // the WebDataSource::ExtraData attribute.  We use pending_navigation_state_
12135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // as a temporary holder for the state until the WebDataSource corresponding
12145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // to the new navigation is created.  See DidCreateDataSource.
12155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<ViewMsg_Navigate_Params> pending_navigation_params_;
12165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Timer used to delay the updating of nav state (see SyncNavigationState).
12185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::OneShotTimer<RenderViewImpl> nav_state_sync_timer_;
12195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Page IDs ------------------------------------------------------------------
12215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // See documentation in RenderView.
12225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int32 page_id_;
12235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Indicates the ID of the last page that we sent a FrameNavigate to the
12255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // browser for. This is used to determine if the most recent transition
12265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // generated a history entry (less than page_id_), or not (equal to or
12275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // greater than). Note that this will be greater than page_id_ if the user
12285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // goes back.
12295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int32 last_page_id_sent_to_browser_;
12305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The next available page ID to use for this RenderView.  These IDs are
12325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // specific to a given RenderView and the frames within it.
12335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int32 next_page_id_;
12345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The offset of the current item in the history list.
12365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int history_list_offset_;
12375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The RenderView's current impression of the history length.  This includes
12395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // any items that have committed in this process, but because of cross-process
12405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // navigations, the history may have some entries that were committed in other
12415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // processes.  We won't know about them until the next navigation in this
12425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // process.
12435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int history_list_length_;
12445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The list of page IDs for each history item this RenderView knows about.
12465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Some entries may be -1 if they were rendered by other processes or were
12475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // restored from a previous session.  This lets us detect attempts to
12485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // navigate to stale entries that have been cropped from our history.
12495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::vector<int32> history_page_ids_;
12505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Page info -----------------------------------------------------------------
12525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The last gotten main frame's encoding.
12545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string last_encoding_name_;
12555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // UI state ------------------------------------------------------------------
12575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The state of our target_url transmissions. When we receive a request to
12595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // send a URL to the browser, we set this to TARGET_INFLIGHT until an ACK
12605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // comes back - if a new request comes in before the ACK, we store the new
12615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // URL in pending_target_url_ and set the status to TARGET_PENDING. If an
12625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // ACK comes back and we are in TARGET_PENDING, we send the stored URL and
12635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // revert to TARGET_INFLIGHT.
12645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
12655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // We don't need a queue of URLs to send, as only the latest is useful.
12665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  enum {
12675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    TARGET_NONE,
12685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    TARGET_INFLIGHT,  // We have a request in-flight, waiting for an ACK
12695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    TARGET_PENDING    // INFLIGHT + we have a URL waiting to be sent
12705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  } target_url_status_;
12715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The URL we show the user in the status bar. We use this to determine if we
12735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // want to send a new one (we do not need to send duplicates). It will be
12745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // equal to either |mouse_over_url_| or |focus_url_|, depending on which was
12755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // updated last.
12765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GURL target_url_;
12775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The URL the user's mouse is hovering over.
12795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GURL mouse_over_url_;
12805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The URL that has keyboard focus.
12825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GURL focus_url_;
12835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The next target URL we want to send to the browser.
12855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GURL pending_target_url_;
12865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // The text selection the last time DidChangeSelection got called. May contain
12882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // additional characters before and after the selected text, for IMEs. The
12892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // portion of this string that is the actual selected text starts at index
12902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // |selection_range_.GetMin() - selection_text_offset_| and has length
12912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // |selection_range_.length()|.
12925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  string16 selection_text_;
12932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // The offset corresponding to the start of |selection_text_| in the document.
12945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  size_t selection_text_offset_;
12952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Range over the document corresponding to the actual selected text (which
12962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // could correspond to a substring of |selection_text_|; see above).
129758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  gfx::Range selection_range_;
12985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // External context menu requests we're waiting for. "Internal"
13005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // (WebKit-originated) context menu events will have an ID of 0 and will not
13015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // be in this map.
13025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
13035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // We don't want to add internal ones since some of the "special" page
13045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // handlers in the browser process just ignore the context menu requests so
13055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // avoid showing context menus, and so this will cause right clicks to leak
13065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // entries in this map. Most users of the custom context menu (e.g. Pepper
13075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // plugins) are normally only on "regular" pages and the regular pages will
13085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // always respond properly to the request, so we don't have to worry so
13095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // much about leaks.
13105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IDMap<ContextMenuClient, IDMapExternalPointer> pending_context_menus_;
13115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#if defined(OS_ANDROID)
13137d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  // Cache the old top controls state constraints. Used when updating
13147d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  // current value only without altering the constraints.
13157d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  cc::TopControlsState top_controls_constraints_;
13167d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#endif
13177d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
13185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // View ----------------------------------------------------------------------
13195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Cache the preferred size of the page in order to prevent sending the IPC
13215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // when layout() recomputes but doesn't actually change sizes.
13225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gfx::Size preferred_size_;
13235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Used to delay determining the preferred size (to avoid intermediate
13255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // states for the sizes).
13265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::OneShotTimer<RenderViewImpl> check_preferred_size_timer_;
13275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // These store the "is main frame is scrolled all the way to the left
13295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // or right" state that was last sent to the browser.
13305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool cached_is_main_frame_pinned_to_left_;
13315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool cached_is_main_frame_pinned_to_right_;
13325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // These store the "has scrollbars" state last sent to the browser.
13345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool cached_has_main_frame_horizontal_scrollbar_;
13355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool cached_has_main_frame_vertical_scrollbar_;
13365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Helper objects ------------------------------------------------------------
13385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1339868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  scoped_ptr<RenderFrameImpl> main_render_frame_;
1340868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
13415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  RendererWebCookieJarImpl cookie_jar_;
13425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The next group of objects all implement RenderViewObserver, so are deleted
13445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // along with the RenderView automatically.  This is why we just store
13455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // weak references.
13465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Holds a reference to the service which provides desktop notifications.
13485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NotificationProvider* notification_provider_;
13495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The geolocation dispatcher attached to this view, lazily initialized.
13515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GeolocationDispatcher* geolocation_dispatcher_;
13525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The speech dispatcher attached to this view, lazily initialized.
13545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InputTagSpeechDispatcher* input_tag_speech_dispatcher_;
13555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The speech recognition dispatcher attached to this view, lazily
13575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // initialized.
13585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SpeechRecognitionDispatcher* speech_recognition_dispatcher_;
13595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Device orientation dispatcher attached to this view; lazily initialized.
13615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DeviceOrientationDispatcher* device_orientation_dispatcher_;
13625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // MediaStream dispatcher attached to this view; lazily initialized.
13645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MediaStreamDispatcher* media_stream_dispatcher_;
13655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // BrowserPluginManager attached to this view; lazily initialized.
13672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_refptr<BrowserPluginManager> browser_plugin_manager_;
13682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
13697dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  // MediaStreamClient attached to this view; lazily initialized.
13707dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  MediaStreamClient* media_stream_client_;
13717dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  WebKit::WebUserMediaClient* web_user_media_client_;
13725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
137358e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch  // MIDIClient attached to this view; lazily initialized.
137458e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch  MIDIDispatcher* midi_dispatcher_;
137558e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch
13765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DevToolsAgent* devtools_agent_;
13775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The current accessibility mode.
13795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AccessibilityMode accessibility_mode_;
13805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Only valid if |accessibility_mode_| is anything other than
13825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // AccessibilityModeOff.
13835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  RendererAccessibility* renderer_accessibility_;
13845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Java Bridge dispatcher attached to this view; lazily initialized.
13865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  JavaBridgeDispatcher* java_bridge_dispatcher_;
13875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Mouse Lock dispatcher attached to this view.
13895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MouseLockDispatcher* mouse_lock_dispatcher_;
13905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID)
13925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Android Specific ---------------------------------------------------------
13935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The background color of the document body element. This is used as the
13955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // default background color for filling the screen areas for which we don't
13965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // have the actual content.
13975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SkColor body_background_color_;
13985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Expected id of the next content intent launched. Used to prevent scheduled
14005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // intents to be launched if aborted.
14015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  size_t expected_content_intent_id_;
14025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // List of click-based content detectors.
14045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  typedef std::vector< linked_ptr<ContentDetector> > ContentDetectorList;
14055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ContentDetectorList content_detectors_;
14065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Proxy class for WebMediaPlayer to communicate with the real media player
14085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // objects in browser process.
1409eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  WebMediaPlayerProxyAndroid* media_player_proxy_;
14105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The media player manager for managing all the media players on this view.
14127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  scoped_ptr<RendererMediaPlayerManager> media_player_manager_;
14135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // A date/time picker object for date and time related input elements.
14152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_ptr<RendererDateTimePicker> date_time_picker_client_;
14165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
14175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1418c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Plugins -------------------------------------------------------------------
1419c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
1420c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // All the currently active plugin delegates for this RenderView; kept so
1421c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // that we can enumerate them to send updates about things like window
1422c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // location or tab focus and visibily. These are non-owning references.
1423c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  std::set<WebPluginDelegateProxy*> plugin_delegates_;
1424c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
1425c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#if defined(OS_WIN)
1426c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // The ID of the focused NPAPI plug-in.
1427c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  int focused_plugin_id_;
1428c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif
1429c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
14303240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch#if defined(ENABLE_PLUGINS)
14313240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  typedef std::set<PepperPluginInstanceImpl*> PepperPluginSet;
14323240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  PepperPluginSet active_pepper_instances_;
14333240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch
14343240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // Whether or not the focus is on a PPAPI plugin
14353240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  PepperPluginInstanceImpl* focused_pepper_plugin_;
14363240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch
14373240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // Current text input composition text. Empty if no composition is in
14383240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // progress.
14393240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  string16 pepper_composition_text_;
14403240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch
14413240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // The plugin instance that received the last mouse event. It is set to NULL
14423240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // if the last mouse event went to elements other than Pepper plugins.
14433240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // |pepper_last_mouse_event_target_| is not owned by this class. We can know
14443240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // about when it is destroyed via InstanceDeleted().
14453240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  PepperPluginInstanceImpl* pepper_last_mouse_event_target_;
14463240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch#endif
14473240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch
14485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Misc ----------------------------------------------------------------------
14495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The current and pending file chooser completion objects. If the queue is
14515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // nonempty, the first item represents the currently running file chooser
14525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // callback, and the remaining elements are the other file chooser completion
14535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // still waiting to be run (in order).
14545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct PendingFileChooser;
14555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::deque< linked_ptr<PendingFileChooser> > file_chooser_completions_;
14565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The current directory enumeration callback
14585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::map<int, WebKit::WebFileChooserCompletion*> enumeration_completions_;
14595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int enumeration_completion_id_;
14605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Reports load progress to the browser.
14625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<LoadProgressTracker> load_progress_tracker_;
14635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The SessionStorage namespace that we're assigned to has an ID, and that ID
14655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // is passed to us upon creation.  WebKit asks for this ID upon first use and
14665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // uses it whenever asking the browser process to allocate new storage areas.
14675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int64 session_storage_namespace_id_;
14685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Stores edit commands associated to the next key event.
14705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shall be cleared as soon as the next key event is processed.
14715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EditCommands edit_commands_;
14725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The external popup for the currently showing select popup.
14745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<ExternalPopupMenu> external_popup_menu_;
14755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The node that the context menu was pressed over.
14775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WebKit::WebNode context_menu_node_;
14785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // All the registered observers.  We expect this list to be small, so vector
14805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // is fine.
14815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ObserverList<RenderViewObserver> observers_;
14825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Used to inform didChangeSelection() when it is called in the context
1484c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // of handling a InputMsg_SelectRange IPC.
14855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool handling_select_range_;
14865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Wraps the |webwidget_| as a MouseLockDispatcher::LockTarget interface.
14885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<MouseLockDispatcher::LockTarget> webwidget_mouse_lock_target_;
14895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // State associated with the GetWindowSnapshot function.
14912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int next_snapshot_id_;
14923240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  typedef std::map<int, WindowSnapshotCallback> PendingSnapshotMap;
14932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PendingSnapshotMap pending_snapshots_;
14942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1495c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Allows to selectively disable partial buffer swap for this renderer's
1496c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // compositor.
14972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  bool allow_partial_swap_;
14982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
14995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Allows JS to access DOM automation. The JS object is only exposed when the
15005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // DOM automation bindings are enabled.
15015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<DomAutomationController> dom_automation_controller_;
15025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
150358e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch  // Allows JS to read out a variety of internal various metrics. The JS object
150458e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch  // is only exposed when the stats collection bindings are enabled.
150558e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch  scoped_ptr<StatsCollectionController> stats_collection_controller_;
1506868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
15075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // This field stores drag/drop related info for the event that is currently
15085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // being handled. If the current event results in starting a drag/drop
15095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // session, this info is sent to the browser along with other drag/drop info.
15105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DragEventSourceInfo possible_drag_event_info_;
15115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15123240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // NOTE: stats_collection_observer_ should be the last members because their
15133240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // constructors call the AddObservers method of RenderViewImpl.
1514868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  scoped_ptr<StatsCollectionObserver> stats_collection_observer_;
15152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1516eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  ui::MenuSourceType context_menu_source_type_;
15177d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  gfx::Point touch_editing_context_menu_location_;
15187d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
15195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // ---------------------------------------------------------------------------
15205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // ADDING NEW DATA? Please see if it fits appropriately in one of the above
15215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // sections rather than throwing it randomly at the end. If you're adding a
15225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // bunch of stuff, you should probably create a helper class and put your
15235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // data and methods on that to avoid bloating RenderView more.  You can
15245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // use the Observer interface to filter IPC messages and receive frame change
15255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // notifications.
15265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // ---------------------------------------------------------------------------
15275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(RenderViewImpl);
15295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
15305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace content
15325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CONTENT_RENDERER_RENDER_VIEW_IMPL_H_
1534