render_view_impl.h revision 58537e28ecd584eab876aee8be7156509866d23a
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)// We need to prevent a page from trying to create infinite popups. It is not
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// as simple as keeping a count of the number of immediate children
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// popups. Having an html file that window.open()s itself would create
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// an unlimited chain of RenderViews who only have one RenderView child.
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Therefore, each new top level RenderView creates a new counter and shares it
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// with all its children and grandchildren popup RenderViewImpls created with
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// createView() to have a sort of global limit for the page so no more than
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// kMaximumNumberOfPopups popups are created.
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This is a RefCounted holder of an int because I can't say
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// scoped_refptr<int>.
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef base::RefCountedData<int> SharedRenderViewCounter;
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// RenderView is an object that manages a WebView object, and provides a
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// communication interface with an embedding application process
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class CONTENT_EXPORT RenderViewImpl
1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    : public RenderWidget,
1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      NON_EXPORTED_BASE(public WebKit::WebViewClient),
1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      NON_EXPORTED_BASE(public WebKit::WebFrameClient),
1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      NON_EXPORTED_BASE(public WebKit::WebPageSerializerClient),
1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      public RenderView,
1977dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch      NON_EXPORTED_BASE(public WebMediaPlayerDelegate),
1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      public base::SupportsWeakPtr<RenderViewImpl> {
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Creates a new RenderView. If this is a blocked popup or as a new tab,
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // opener_id is the routing ID of the RenderView responsible for creating this
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // RenderView. |counter| is either a currently initialized counter, or NULL
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // (in which case we treat this RenderView as a top level window).
2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  static RenderViewImpl* Create(
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int32 opener_id,
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const RendererPreferences& renderer_prefs,
207c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      const WebPreferences& webkit_prefs,
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      SharedRenderViewCounter* counter,
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int32 routing_id,
210868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)      int32 main_frame_routing_id,
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int32 surface_id,
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int64 session_storage_namespace_id,
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const string16& frame_name,
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      bool is_renderer_created,
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      bool swapped_out,
2163551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      bool hidden,
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int32 next_page_id,
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebScreenInfo& screen_info,
2192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      AccessibilityMode accessibility_mode,
2202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      bool allow_partial_swap);
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Used by content_layouttest_support to hook into the creation of
2232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // RenderViewImpls.
2242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  static void InstallCreateHook(
2252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      RenderViewImpl* (*create_render_view_impl)(RenderViewImplParams*));
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Returns the RenderViewImpl containing the given WebView.
2282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  static RenderViewImpl* FromWebView(WebKit::WebView* webview);
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Returns the RenderViewImpl for the given routing ID.
2312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  static RenderViewImpl* FromRoutingID(int routing_id);
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // May return NULL when the view is closing.
2342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  WebKit::WebView* webview() const;
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int history_list_offset() const { return history_list_offset_; }
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
238c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  const WebPreferences& webkit_preferences() const {
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return webkit_preferences_;
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void set_send_content_state_immediately(bool value) {
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    send_content_state_immediately_ = value;
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MediaStreamDispatcher* media_stream_dispatcher() {
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return media_stream_dispatcher_;
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MouseLockDispatcher* mouse_lock_dispatcher() {
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return mouse_lock_dispatcher_;
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
254ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  RendererWebCookieJarImpl* cookie_jar() { return &cookie_jar_; }
255ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID)
2577dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  RendererMediaPlayerManager* media_player_manager() {
2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return media_player_manager_.get();
2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Lazily initialize this view's BrowserPluginManager and return it.
263c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  BrowserPluginManager* GetBrowserPluginManager();
2642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Functions to add and remove observers for this object.
2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void AddObserver(RenderViewObserver* observer);
2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void RemoveObserver(RenderViewObserver* observer);
2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
269868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  // Returns the StatsCollectionObserver associated with this view, or NULL
270868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  // if one wasn't created;
271868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  StatsCollectionObserver* GetStatsCollectionObserver() {
272868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    return stats_collection_observer_.get();
273868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  }
274868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Adds the given file chooser request to the file_chooser_completion_ queue
2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // (see that var for more) and requests the chooser be displayed if there are
2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // no other waiting items in the queue.
2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns true if the chooser was successfully scheduled. False means we
2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // didn't schedule anything.
2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool ScheduleFileChooser(const FileChooserParams& params,
2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           WebKit::WebFileChooserCompletion* completion);
2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void LoadNavigationErrorPage(
2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebFrame* frame,
2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebURLRequest& failed_request,
2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebURLError& error,
2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::string& html,
2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      bool replace);
2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Plugin-related functions --------------------------------------------------
2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2933240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch#if defined(ENABLE_PLUGINS)
2943240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // Indicates that the given instance has been created.
2953240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  void PepperInstanceCreated(PepperPluginInstanceImpl* instance);
2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2973240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // Indicates that the given instance is being destroyed. This is called from
2983240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // the destructor, so it's important that the instance is not dereferenced
2993240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // from this call.
3003240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  void PepperInstanceDeleted(PepperPluginInstanceImpl* instance);
3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3023240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // Notifies that |instance| has changed the cursor.
3033240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // This will update the cursor appearance if it is currently over the plugin
3043240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // instance.
3053240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  void PepperDidChangeCursor(PepperPluginInstanceImpl* instance,
3063240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch                             const WebKit::WebCursorInfo& cursor);
3073240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch
3083240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // Notifies that |instance| has received a mouse event.
3093240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  void PepperDidReceiveMouseEvent(PepperPluginInstanceImpl* instance);
3103240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch
3113240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // Notification that the given plugin is focused or unfocused.
3123240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  void PepperFocusChanged(PepperPluginInstanceImpl* instance, bool focused);
3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Informs the render view that a PPAPI plugin has changed text input status.
3153240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  void PepperTextInputTypeChanged(PepperPluginInstanceImpl* instance);
3163240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  void PepperCaretPositionChanged(PepperPluginInstanceImpl* instance);
3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Cancels current composition.
3193240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  void PepperCancelComposition(PepperPluginInstanceImpl* instance);
3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Informs the render view that a PPAPI plugin has changed selection.
3223240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  void PepperSelectionChanged(PepperPluginInstanceImpl* instance);
3233240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch
3243240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // Creates a fullscreen container for a pepper plugin instance.
3253240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  RenderWidgetFullscreenPepper* CreatePepperFullscreenContainer(
3263240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch      PepperPluginInstanceImpl* plugin);
3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Notification that a PPAPI plugin has been created.
3293240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  void PepperPluginCreated(RendererPpapiHost* host);
3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Retrieves the current caret position if a PPAPI plugin has focus.
3323240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  bool GetPepperCaretBounds(gfx::Rect* rect);
3333240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch
3343240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  bool IsPepperAcceptingCompositionEvents() const;
3353240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch
3363240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // Notification that the given plugin has crashed.
3373240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  void PluginCrashed(const base::FilePath& plugin_path,
3383240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch                     base::ProcessId plugin_pid);
3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Simulates IME events for testing purpose.
3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SimulateImeSetComposition(
3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const string16& text,
3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::vector<WebKit::WebCompositionUnderline>& underlines,
3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int selection_start,
3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int selection_end);
3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SimulateImeConfirmComposition(const string16& text,
34758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)                                     const gfx::Range& replacement_range);
3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) || defined(OS_WIN)
3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Informs the render view that the given plugin has gained or lost focus.
3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void PluginFocusChanged(bool focused, int plugin_id);
3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX)
3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Starts plugin IME.
3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void StartPluginIme();
3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void RegisterPluginDelegate(WebPluginDelegateProxy* delegate);
3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UnregisterPluginDelegate(WebPluginDelegateProxy* delegate);
3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Helper function to retrieve information about a plugin for a URL and mime
3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // type. Returns false if no plugin was found.
3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // |actual_mime_type| is the actual mime type supported by the
3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // plugin found that match the URL given (one for each item in
3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // |info|).
3672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  bool GetPluginInfo(const GURL& url,
3682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                     const GURL& page_url,
3692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                     const std::string& mime_type,
370ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch                     WebPluginInfo* plugin_info,
3712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                     std::string* actual_mime_type);
3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
373bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#endif  // ENABLE_PLUGINS
374bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch
3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void TransferActiveWheelFlingAnimation(
3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebActiveWheelFlingParameters& params);
3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns true if the focused element is editable text from the perspective
3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // of IME support (also used for on-screen keyboard). Works correctly inside
3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // supported PPAPI plug-ins.
3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool HasIMETextFocus();
3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Callback for use with GetWindowSnapshot.
3842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  typedef base::Callback<void(
3852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const gfx::Size&, const std::vector<unsigned char>&)>
3862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      WindowSnapshotCallback;
3872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void GetWindowSnapshot(const WindowSnapshotCallback& callback);
3892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Dispatches the current navigation state to the browser. Called on a
3912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // periodic timer so we don't send too many messages.
3922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void SyncNavigationState();
3932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Returns the length of the session history of this RenderView. Note that
3952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // this only coincides with the actual length of the session history if this
3962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // RenderView is the currently active RenderView of a WebContents.
3972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  unsigned GetLocalSessionHistoryLengthForTesting() const;
3982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Invokes OnSetFocus and marks the widget as active depending on the value
4002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // of |enable|. This is used for layout tests that need to control the focus
4012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // synchronously from the renderer.
4022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void SetFocusAndActivateForTesting(bool enable);
4032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
4042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Change the device scale factor and force the compositor to resize.
4052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void SetDeviceScaleFactorForTesting(float factor);
4062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
40790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // Control autoresize mode.
40890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  void EnableAutoResizeForTesting(const gfx::Size& min_size,
40990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                                  const gfx::Size& max_size);
41090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  void DisableAutoResizeForTesting(const gfx::Size& new_size);
41190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
4127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  // Overrides the MediaStreamClient used when creating MediaStream players.
4137dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  // Must be called before any players are created.
4147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  void SetMediaStreamClientForTesting(MediaStreamClient* media_stream_client);
4157dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IPC::Listener implementation ----------------------------------------------
4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE;
4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // WebKit::WebWidgetClient implementation ------------------------------------
4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Most methods are handled by RenderWidget.
4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didFocus();
4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didBlur();
4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void show(WebKit::WebNavigationPolicy policy);
4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void runModal();
4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool enterFullScreen();
4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void exitFullScreen();
4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool requestPointerLock();
4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void requestPointerUnlock();
4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool isPointerLocked();
4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didActivateCompositor(int input_handler_identifier);
4332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void didHandleGestureEvent(const WebKit::WebGestureEvent& event,
4342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                     bool event_cancelled) OVERRIDE;
435a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch  virtual void initializeLayerTreeView() OVERRIDE;
4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // WebKit::WebViewClient implementation --------------------------------------
4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebView* createView(
4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebFrame* creator,
4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebURLRequest& request,
4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebWindowFeatures& features,
4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebString& frame_name,
4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebNavigationPolicy policy);
4455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebWidget* createPopupMenu(WebKit::WebPopupType popup_type);
4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebExternalPopupMenu* createExternalPopupMenu(
4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebPopupMenuInfo& popup_menu_info,
4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebExternalPopupMenuClient* popup_menu_client);
449eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  virtual WebKit::WebStorageNamespace* createSessionStorageNamespace();
4503551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  virtual bool shouldReportDetailedMessageForSource(
4513551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      const WebKit::WebString& source);
4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didAddMessageToConsole(
4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebConsoleMessage& message,
4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebString& source_name,
455424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)      unsigned source_line,
456424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)      const WebKit::WebString& stack_trace);
4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void printPage(WebKit::WebFrame* frame);
4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebNotificationPresenter* notificationPresenter();
4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool enumerateChosenDirectory(
4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebString& path,
4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebFileChooserCompletion* chooser_completion);
4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void initializeHelperPluginWebFrame(WebKit::WebHelperPlugin*);
4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didStartLoading();
4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didStopLoading();
4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didChangeLoadProgress(WebKit::WebFrame* frame,
4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     double load_progress);
4672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void didCancelCompositionOnSelectionChange();
4685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didChangeSelection(bool is_selection_empty);
4695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didExecuteCommand(const WebKit::WebString& command_name);
4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool handleCurrentKeyboardEvent();
4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebColorChooser* createColorChooser(
4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebColorChooserClient*, const WebKit::WebColor& initial_color);
4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool runFileChooser(
4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebFileChooserParams& params,
4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebFileChooserCompletion* chooser_completion);
4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void runModalAlertDialog(WebKit::WebFrame* frame,
4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   const WebKit::WebString& message);
4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool runModalConfirmDialog(WebKit::WebFrame* frame,
4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     const WebKit::WebString& message);
4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool runModalPromptDialog(WebKit::WebFrame* frame,
4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    const WebKit::WebString& message,
4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    const WebKit::WebString& default_value,
4835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    WebKit::WebString* actual_value);
4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool runModalBeforeUnloadDialog(WebKit::WebFrame* frame,
485a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)                                          bool is_reload,
486a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)                                          const WebKit::WebString& message);
487a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  // DEPRECATED
488a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  virtual bool runModalBeforeUnloadDialog(WebKit::WebFrame* frame,
4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          const WebKit::WebString& message);
4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void showContextMenu(WebKit::WebFrame* frame,
4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               const WebKit::WebContextMenuData& data);
4923551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  virtual void clearContextMenu();
4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void setStatusText(const WebKit::WebString& text);
4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void setMouseOverURL(const WebKit::WebURL& url);
4955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void setKeyboardFocusURL(const WebKit::WebURL& url);
4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void startDragging(WebKit::WebFrame* frame,
4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                             const WebKit::WebDragData& data,
4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                             WebKit::WebDragOperationsMask mask,
4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                             const WebKit::WebImage& image,
5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                             const WebKit::WebPoint& imageOffset);
5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool acceptsLoadDrops();
5025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void focusNext();
5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void focusPrevious();
5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void focusedNodeChanged(const WebKit::WebNode& node);
5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void numberOfWheelEventHandlersChanged(unsigned num_handlers);
5065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didUpdateLayout();
5075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID)
5085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool didTapMultipleTargets(
5095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebGestureEvent& event,
5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebVector<WebKit::WebRect>& target_rects);
5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void navigateBackForwardSoon(int offset);
5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int historyBackListCount();
5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int historyForwardListCount();
51558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual void postAccessibilityEvent(
51658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      const WebKit::WebAXObject& obj, WebKit::WebAXEvent event);
5175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didUpdateInspectorSetting(const WebKit::WebString& key,
5185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                         const WebKit::WebString& value);
5195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebGeolocationClient* geolocationClient();
5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebSpeechInputController* speechInputController(
5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebSpeechInputListener* listener);
5225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebSpeechRecognizer* speechRecognizer();
5235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebDeviceOrientationClient* deviceOrientationClient();
5245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void zoomLimitsChanged(double minimum_level, double maximum_level);
5255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void zoomLevelChanged();
52658e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch  virtual double zoomLevelToZoomFactor(double zoom_level) const;
52758e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch  virtual double zoomFactorToZoomLevel(double factor) const;
5285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void registerProtocolHandler(const WebKit::WebString& scheme,
5295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                       const WebKit::WebString& base_url,
5305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                       const WebKit::WebString& url,
5315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                       const WebKit::WebString& title);
5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebPageVisibilityState visibilityState() const;
5335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebUserMediaClient* userMediaClient();
53458e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch  virtual WebKit::WebMIDIClient* webMIDIClient();
5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void draggableRegionsChanged();
5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID)
5385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void scheduleContentIntent(const WebKit::WebURL& intent);
5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void cancelScheduledContentIntents();
5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebContentDetectionResult detectContentAround(
5415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebHitTestResult& touch_hit);
5422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
5432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Only used on Android since all other platforms implement
5442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // date and time input fields using MULTIPLE_FIELDS_UI
5452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool openDateTimeChooser(const WebKit::WebDateTimeChooserParams&,
5462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                   WebKit::WebDateTimeChooserCompletion*);
5477d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  virtual void didScrollWithKeyboard(const WebKit::WebSize& delta);
5485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
5495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // WebKit::WebFrameClient implementation -------------------------------------
5515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebMediaPlayer* createMediaPlayer(
5535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebFrame* frame,
5545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebURL& url,
5555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebMediaPlayerClient* client);
5565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebCookieJar* cookieJar(WebKit::WebFrame* frame);
557868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  virtual void didAccessInitialDocument(WebKit::WebFrame* frame);
5582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void didDisownOpener(WebKit::WebFrame* frame);
5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void frameDetached(WebKit::WebFrame* frame);
5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void willClose(WebKit::WebFrame* frame);
561c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
562c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // The WebDataSource::ExtraData* is assumed to be a DocumentState* subclass.
563c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual WebKit::WebNavigationPolicy decidePolicyForNavigation(
564c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      WebKit::WebFrame* frame,
565c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      WebKit::WebDataSource::ExtraData* extraData,
566c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      const WebKit::WebURLRequest& request,
567c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      WebKit::WebNavigationType type,
568c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      WebKit::WebNavigationPolicy default_policy,
569c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      bool is_redirect);
570c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // DEPRECATED.
5715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebNavigationPolicy decidePolicyForNavigation(
5725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebFrame* frame,
5735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebURLRequest& request,
5745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebNavigationType type,
5755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebNavigationPolicy default_policy,
5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      bool is_redirect);
5775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void willSendSubmitEvent(WebKit::WebFrame* frame,
5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   const WebKit::WebFormElement& form);
5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void willSubmitForm(WebKit::WebFrame* frame,
5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              const WebKit::WebFormElement& form);
5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didCreateDataSource(WebKit::WebFrame* frame,
5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   WebKit::WebDataSource* datasource);
5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didStartProvisionalLoad(WebKit::WebFrame* frame);
5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didReceiveServerRedirectForProvisionalLoad(
5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebFrame* frame);
5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didFailProvisionalLoad(WebKit::WebFrame* frame,
5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      const WebKit::WebURLError& error);
5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didCommitProvisionalLoad(WebKit::WebFrame* frame,
5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                        bool is_new_navigation);
5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didClearWindowObject(WebKit::WebFrame* frame);
5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didCreateDocumentElement(WebKit::WebFrame* frame);
5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didReceiveTitle(WebKit::WebFrame* frame,
5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               const WebKit::WebString& title,
5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               WebKit::WebTextDirection direction);
5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didChangeIcon(WebKit::WebFrame*,
596eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                             WebKit::WebIconURL::Type);
5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didFinishDocumentLoad(WebKit::WebFrame* frame);
5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didHandleOnloadEvents(WebKit::WebFrame* frame);
5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didFailLoad(WebKit::WebFrame* frame,
6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           const WebKit::WebURLError& error);
6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didFinishLoad(WebKit::WebFrame* frame);
6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didNavigateWithinPage(WebKit::WebFrame* frame,
6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     bool is_new_navigation);
6045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didUpdateCurrentHistoryItem(WebKit::WebFrame* frame);
6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void willSendRequest(WebKit::WebFrame* frame,
6065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               unsigned identifier,
6075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               WebKit::WebURLRequest& request,
6085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               const WebKit::WebURLResponse& redirect_response);
6095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didReceiveResponse(WebKit::WebFrame* frame,
6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  unsigned identifier,
6115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  const WebKit::WebURLResponse& response);
6125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didFinishResourceLoad(WebKit::WebFrame* frame,
6135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     unsigned identifier);
6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didLoadResourceFromMemoryCache(
6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebFrame* frame,
6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebURLRequest& request,
6175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebURLResponse&);
6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didDisplayInsecureContent(WebKit::WebFrame* frame);
6195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didRunInsecureContent(
6205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebFrame* frame,
6215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebSecurityOrigin& origin,
6225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebURL& target);
6235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didExhaustMemoryAvailableForScript(WebKit::WebFrame* frame);
6245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didCreateScriptContext(WebKit::WebFrame* frame,
6255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      v8::Handle<v8::Context>,
6265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      int extension_group,
6275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      int world_id);
6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void willReleaseScriptContext(WebKit::WebFrame* frame,
6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                        v8::Handle<v8::Context>,
6305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                        int world_id);
6315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didChangeScrollOffset(WebKit::WebFrame* frame);
632eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  virtual void willInsertBody(WebKit::WebFrame* frame);
633eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  virtual void didFirstVisuallyNonEmptyLayout(WebKit::WebFrame*);
6345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didChangeContentsSize(WebKit::WebFrame* frame,
6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                     const WebKit::WebSize& size);
6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void reportFindInPageMatchCount(int request_id,
6375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          int count,
6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          bool final_update);
6395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void reportFindInPageSelection(int request_id,
6405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                         int active_match_ordinal,
6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                         const WebKit::WebRect& sel);
6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void requestStorageQuota(
6435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebFrame* frame,
6445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebStorageQuotaType type,
6455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      unsigned long long requested_size,
6465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebStorageQuotaCallbacks* callbacks);
6475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void willOpenSocketStream(
6485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebSocketStreamHandle* handle);
6495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void willStartUsingPeerConnectionHandler(WebKit::WebFrame* frame,
650eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      WebKit::WebRTCPeerConnectionHandler* handler);
6515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool willCheckAndDispatchMessageEvent(
6525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebFrame* sourceFrame,
6535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebFrame* targetFrame,
6545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebSecurityOrigin targetOrigin,
655eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      WebKit::WebDOMMessageEvent event);
656eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  virtual WebKit::WebString acceptLanguages();
6575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebString userAgentOverride(
6585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebFrame* frame,
659eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      const WebKit::WebURL& url);
660eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  virtual WebKit::WebString doNotTrackValue(WebKit::WebFrame* frame);
661eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  virtual bool allowWebGL(WebKit::WebFrame* frame, bool default_value);
6622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void didLoseWebGLContext(
6632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      WebKit::WebFrame* frame,
664eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      int arb_robustness_status_code);
6655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // WebKit::WebPageSerializerClient implementation ----------------------------
6675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void didSerializeDataForFrame(
6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebURL& frame_url,
6705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebCString& data,
6715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      PageSerializationStatus status) OVERRIDE;
6725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // RenderView implementation -------------------------------------------------
6745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool Send(IPC::Message* message) OVERRIDE;
6765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int GetRoutingID() const OVERRIDE;
6775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int GetPageId() const OVERRIDE;
6785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual gfx::Size GetSize() const OVERRIDE;
679c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual WebPreferences& GetWebkitPreferences() OVERRIDE;
680c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void SetWebkitPreferences(const WebPreferences& preferences) OVERRIDE;
6815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebView* GetWebView() OVERRIDE;
6825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebNode GetFocusedNode() const OVERRIDE;
6835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebNode GetContextMenuNode() const OVERRIDE;
6845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsEditableNode(const WebKit::WebNode& node) const OVERRIDE;
6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebPlugin* CreatePlugin(
6865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebFrame* frame,
687ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch      const WebPluginInfo& info,
6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebPluginParams& params) OVERRIDE;
6895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void EvaluateScript(const string16& frame_xpath,
6905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              const string16& jscript,
6915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              int id,
6925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              bool notify_result) OVERRIDE;
6935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool ShouldDisplayScrollbars(int width, int height) const OVERRIDE;
6945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int GetEnabledBindings() const OVERRIDE;
6955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool GetContentStateImmediately() const OVERRIDE;
6965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual float GetFilteredTimePerFrame() const OVERRIDE;
6975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int ShowContextMenu(ContextMenuClient* client,
6985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              const ContextMenuParams& params) OVERRIDE;
6995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void CancelContextMenu(int request_id) OVERRIDE;
7005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WebKit::WebPageVisibilityState GetVisibilityState() const OVERRIDE;
7015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void RunModalAlertDialog(WebKit::WebFrame* frame,
7025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   const WebKit::WebString& message) OVERRIDE;
7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void LoadURLExternally(
7045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebFrame* frame,
7055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebURLRequest& request,
7065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      WebKit::WebNavigationPolicy policy) OVERRIDE;
707ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  virtual void DidStartLoading() OVERRIDE;
708ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  virtual void DidStopLoading() OVERRIDE;
7095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Repaint(const gfx::Size& size) OVERRIDE;
7105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetEditCommandForNextKeyEvent(const std::string& name,
7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                             const std::string& value) OVERRIDE;
7125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ClearEditCommands() OVERRIDE;
7132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual SSLStatus GetSSLStatusOfFrame(WebKit::WebFrame* frame) const OVERRIDE;
7142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_ANDROID)
71590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  virtual void UpdateTopControlsState(TopControlsState constraints,
71690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                                      TopControlsState current,
71790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                                      bool animate) OVERRIDE;
7182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
7195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  // WebMediaPlayerDelegate implementation -----------------------
7215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DidPlay(WebKit::WebMediaPlayer* player) OVERRIDE;
7235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DidPause(WebKit::WebMediaPlayer* player) OVERRIDE;
7245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void PlayerGone(WebKit::WebMediaPlayer* player) OVERRIDE;
7255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Please do not add your stuff randomly to the end here. If there is an
7275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // appropriate section, add it there. If not, there are some random functions
7285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // nearer to the top you can add it to.
7295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Cannot use std::set unfortunately since linked_ptr<> does not support
7315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // operator<.
732a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  typedef std::vector<linked_ptr<ImageResourceFetcher> >
7335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ImageResourceFetcherList;
7345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected:
7365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // RenderWidget overrides:
7375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Close() OVERRIDE;
73890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  virtual void OnResize(const ViewMsg_Resize_Params& params) OVERRIDE;
7395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void WillInitiatePaint() OVERRIDE;
7405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DidInitiatePaint() OVERRIDE;
7415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DidFlushPaint() OVERRIDE;
74258e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch  virtual PepperPluginInstanceImpl* GetBitmapForOptimizedPluginPaint(
7435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const gfx::Rect& paint_bounds,
7445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      TransportDIB** dib,
7455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      gfx::Rect* location,
7465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      gfx::Rect* clip,
7475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      float* scale_factor) OVERRIDE;
7485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual gfx::Vector2d GetScrollOffset() OVERRIDE;
7495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DidHandleKeyEvent() OVERRIDE;
7505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool WillHandleMouseEvent(
7515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebMouseEvent& event) OVERRIDE;
7527d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  virtual bool WillHandleKeyEvent(
7537d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)      const WebKit::WebKeyboardEvent& event) OVERRIDE;
7545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool WillHandleGestureEvent(
7555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const WebKit::WebGestureEvent& event) OVERRIDE;
7565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DidHandleMouseEvent(const WebKit::WebMouseEvent& event) OVERRIDE;
7575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DidHandleTouchEvent(const WebKit::WebTouchEvent& event) OVERRIDE;
7582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool HasTouchEventHandlersAt(const gfx::Point& point) const OVERRIDE;
7595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnSetFocus(bool enable) OVERRIDE;
7605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnWasHidden() OVERRIDE;
7615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnWasShown(bool needs_repainting) OVERRIDE;
7622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual GURL GetURLForGraphicsContext3D() OVERRIDE;
7635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool ForceCompositingModeEnabled() OVERRIDE;
7645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnImeSetComposition(
7655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const string16& text,
7665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::vector<WebKit::WebCompositionUnderline>& underlines,
7675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int selection_start,
7685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int selection_end) OVERRIDE;
7697dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  virtual void OnImeConfirmComposition(const string16& text,
77058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)                                       const gfx::Range& replacement_range,
7717dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                                       bool keep_selection) OVERRIDE;
7722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void SetDeviceScaleFactor(float device_scale_factor) OVERRIDE;
7735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ui::TextInputType GetTextInputType() OVERRIDE;
7745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetSelectionBounds(gfx::Rect* start, gfx::Rect* end) OVERRIDE;
7757dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#if defined(OS_MACOSX) || defined(OS_WIN) || defined(USE_AURA)
7765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void GetCompositionCharacterBounds(
7775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      std::vector<gfx::Rect>* character_bounds) OVERRIDE;
77858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual void GetCompositionRange(gfx::Range* range) OVERRIDE;
7797dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#endif
7805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool CanComposeInline() OVERRIDE;
7812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void DidCommitCompositorFrame() OVERRIDE;
7822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void InstrumentWillBeginFrame() OVERRIDE;
7832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void InstrumentDidBeginFrame() OVERRIDE;
7842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void InstrumentDidCancelFrame() OVERRIDE;
7852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void InstrumentWillComposite() OVERRIDE;
7862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool AllowPartialSwap() const OVERRIDE;
7872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
7882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected:
7892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  explicit RenderViewImpl(RenderViewImplParams* params);
7902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
7912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void Initialize(RenderViewImplParams* params);
7922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
7932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Do not delete directly.  This class is reference counted.
7942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual ~RenderViewImpl();
7955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
7975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // For unit tests.
7985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  friend class ExternalPopupMenuTest;
7995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  friend class PepperDeviceTest;
8005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  friend class RendererAccessibilityTest;
8015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  friend class RenderViewTest;
8025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
803bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch  // TODO(nasko): Temporarily friend RenderFrameImpl, so we don't duplicate
804bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch  // utility functions needed in both classes, while we move frame specific
805bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch  // code away from this class.
806bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch  friend class RenderFrameImpl;
807bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch
8085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(ExternalPopupMenuRemoveTest, RemoveOnChange);
8095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(ExternalPopupMenuTest, NormalCase);
8105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(ExternalPopupMenuTest, ShowPopupThenNavigate);
811eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  FRIEND_TEST_ALL_PREFIXES(RendererAccessibilityTest,
812eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                           AccessibilityMessagesQueueWhileSwappedOut);
8135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, DecideNavigationPolicyForWebUI);
8145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest,
815c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                           DidFailProvisionalLoadWithErrorForError);
816c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest,
817c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                           DidFailProvisionalLoadWithErrorForCancellation);
818c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest,
8195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           DontIgnoreBackAfterNavEntryLimit);
8205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, ImeComposition);
8215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, InsertCharacters);
8225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, JSBlockSentAfterPageLoad);
8235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, LastCommittedUpdateState);
8245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnExtendSelectionAndDelete);
8255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnHandleKeyboardEvent);
8267d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnImeTypeChanged);
8275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnNavStateChanged);
8285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnSetTextDirection);
8295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnUpdateWebPreferences);
8305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, SendSwapOutACK);
8312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, ReloadWhileSwappedOut);
8325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest,
8335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           SetEditableSelectionAndComposition);
8345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, StaleNavigationsIgnored);
8355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, UpdateTargetURLWithInvalidURL);
8365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest,
8375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           GetCompositionCharacterBoundsTest);
8385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnNavigationHttpPost);
8395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX)
8405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewTest, MacTestCmdUp);
8415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
8425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, SetHistoryLengthAndPrune);
8435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, ZoomLimit);
8442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, NavigateFrame);
8452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest,
8462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                           ShouldUpdateSelectionTextFromContextMenuParams);
847868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, BasicRenderFrame);
8489ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, TextInputTypeWithPepper);
8495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  typedef std::map<GURL, double> HostZoomLevels;
8515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  enum ErrorPageType {
8535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    DNS_ERROR,
8545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    HTTP_404,
8555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    CONNECTION_ERROR,
8565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
8575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
858bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch  static WebKit::WebReferrerPolicy GetReferrerPolicyFromRequest(
859bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch      WebKit::WebFrame* frame,
860bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch      const WebKit::WebURLRequest& request);
861bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch
862bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch  static Referrer GetReferrerFromRequest(
863bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch      WebKit::WebFrame* frame,
864bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch      const WebKit::WebURLRequest& request);
865bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch
866bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch  static webkit_glue::WebURLResponseExtraDataImpl* GetExtraDataFromResponse(
867bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch      const WebKit::WebURLResponse& response);
868bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch
8695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateURL(WebKit::WebFrame* frame);
8705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateTitle(WebKit::WebFrame* frame, const string16& title,
8715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                   WebKit::WebTextDirection title_direction);
8725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateSessionHistory(WebKit::WebFrame* frame);
8735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SendUpdateState(const WebKit::WebHistoryItem& item);
8745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Update current main frame's encoding and send it to browser window.
8765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Since we want to let users see the right encoding info from menu
8775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // before finishing loading, we call the UpdateEncoding in
8785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // a) function:DidCommitLoadForFrame. When this function is called,
8795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // that means we have got first data. In here we try to get encoding
8805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // of page if it has been specified in http header.
8815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // b) function:DidReceiveTitle. When this function is called,
8825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // that means we have got specified title. Because in most of webpages,
8835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // title tags will follow meta tags. In here we try to get encoding of
8845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // page if it has been specified in meta tag.
8855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // c) function:DidFinishDocumentLoadForFrame. When this function is
8865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // called, that means we have got whole html page. In here we should
8875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // finally get right encoding of page.
8885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateEncoding(WebKit::WebFrame* frame,
8895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      const std::string& encoding_name);
8905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OpenURL(WebKit::WebFrame* frame,
8925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)               const GURL& url,
8935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)               const Referrer& referrer,
8945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)               WebKit::WebNavigationPolicy policy);
8955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool RunJavaScriptMessage(JavaScriptMessageType type,
8975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            const string16& message,
8985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            const string16& default_value,
8995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            const GURL& frame_url,
9005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            string16* result);
9015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Sends a message and runs a nested message loop.
9035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool SendAndRunNestedMessageLoop(IPC::SyncMessage* message);
9045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Called when the "pinned to left/right edge" state needs to be updated.
9065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateScrollState(WebKit::WebFrame* frame);
9075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IPC message handlers ------------------------------------------------------
9095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
9105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The documentation for these functions should be in
911c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // content/common/*_messages.h for the message that the function is handling.
912c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
913c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnCopy();
914c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnCut();
915c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnDelete();
916c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnExecuteEditCommand(const std::string& name, const std::string& value);
917c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnMoveCaret(const gfx::Point& point);
918c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnPaste();
919c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnPasteAndMatchStyle();
920c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnRedo();
921c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnReplace(const string16& text);
922c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnReplaceMisspelling(const string16& text);
923c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnScrollFocusedEditableNodeIntoRect(const gfx::Rect& rect);
924c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnSelectAll();
925c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnSelectRange(const gfx::Point& start, const gfx::Point& end);
926c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnSetEditCommandsForNextKeyEvent(const EditCommands& edit_commands);
927c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnUndo();
928c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnUnselect();
9295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnAllowBindings(int enabled_bindings_flags);
9315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnAllowScriptToClose(bool script_can_close);
9325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnCancelDownload(int32 download_id);
9335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnClearFocusedNode();
9345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnClosePage();
9355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnContextMenuClosed(const CustomContextMenuContext& custom_context);
9367d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  void OnShowContextMenu(const gfx::Point& location);
9375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnCopyImageAt(int x, int y);
9385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnCSSInsertRequest(const string16& frame_xpath,
9395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          const std::string& css);
9405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnCustomContextMenuAction(const CustomContextMenuContext& custom_context,
9415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      unsigned action);
9422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnSetName(const std::string& name);
9435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnDeterminePageLanguage();
9445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnDisableScrollbarsForSmallWindows(
9455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const gfx::Size& disable_scrollbars_size_limit);
9465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnDisassociateFromPopupCount();
9475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnDragSourceEndedOrMoved(const gfx::Point& client_point,
9485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                const gfx::Point& screen_point,
9495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                bool ended,
9505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                WebKit::WebDragOperation drag_operation);
9515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnDragSourceSystemDragEnded();
9525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnDragTargetDrop(const gfx::Point& client_pt,
9535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        const gfx::Point& screen_pt,
9545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        int key_modifiers);
955eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  void OnDragTargetDragEnter(const DropData& drop_data,
9565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                             const gfx::Point& client_pt,
9575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                             const gfx::Point& screen_pt,
9585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                             WebKit::WebDragOperationsMask operations_allowed,
9595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                             int key_modifiers);
9605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnDragTargetDragLeave();
9615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnDragTargetDragOver(const gfx::Point& client_pt,
9625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            const gfx::Point& screen_pt,
9635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            WebKit::WebDragOperationsMask operations_allowed,
9645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            int key_modifiers);
9655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnEnablePreferredSizeChangedMode();
9665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnEnableAutoResize(const gfx::Size& min_size, const gfx::Size& max_size);
9675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnDisableAutoResize(const gfx::Size& new_size);
9682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnEnumerateDirectoryResponse(int id,
9692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                    const std::vector<base::FilePath>& paths);
9702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnExtendSelectionAndDelete(int before, int after);
9715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnFileChooserResponse(
9725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::vector<ui::SelectedFileInfo>& files);
9735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnFind(int request_id, const string16&, const WebKit::WebFindOptions&);
9745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnGetAllSavableResourceLinksForCurrentPage(const GURL& page_url);
9755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnGetSerializedHtmlDataForCurrentPageWithLocalLinks(
9765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::vector<GURL>& links,
9772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const std::vector<base::FilePath>& local_paths,
9782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const base::FilePath& local_directory_name);
9795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnMediaPlayerActionAt(const gfx::Point& location,
9805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                             const WebKit::WebMediaPlayerAction& action);
9815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Screen has rotated. 0 = default (portrait), 90 = one turn right, and so on.
9835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnOrientationChangeEvent(int orientation);
9845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnPluginActionAt(const gfx::Point& location,
9865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        const WebKit::WebPluginAction& action);
9875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnMoveOrResizeStarted();
9882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnNavigate(const ViewMsg_Navigate_Params& params);
9895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnPostMessageEvent(const ViewMsg_PostMessage_Params& params);
9905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnReleaseDisambiguationPopupDIB(TransportDIB::Handle dib_handle);
9915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnReloadFrame();
9925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnResetPageEncodingToDefault();
9935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnScriptEvalRequest(const string16& frame_xpath,
9945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           const string16& jscript,
9955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           int id,
9965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           bool notify_result);
9972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnSetAccessibilityMode(AccessibilityMode new_mode);
9985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnSetActive(bool active);
9995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnSetAltErrorPageURL(const GURL& gurl);
10005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnSetBackground(const SkBitmap& background);
10012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnSetCompositionFromExistingText(
10025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int start, int end,
10035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::vector<WebKit::WebCompositionUnderline>& underlines);
1004c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnExitFullscreen();
10052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnSetEditableSelectionOffsets(int start, int end);
10062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnSetHistoryLengthAndPrune(int history_length, int32 minimum_page_id);
10075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnSetInitialFocus(bool reverse);
10085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnSetPageEncoding(const std::string& encoding_name);
10095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnSetRendererPrefs(const RendererPreferences& renderer_prefs);
1010c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnSetWebUIProperty(const std::string& name, const std::string& value);
10115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnSetZoomLevel(double zoom_level);
10122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnSetZoomLevelForLoadingURL(const GURL& url, double zoom_level);
10135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnShouldClose();
10145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnStop();
10155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnStopFinding(StopFindAction action);
10167d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  void OnSwapOut();
10175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnThemeChanged();
10185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnUpdateTargetURLAck();
10195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnUpdateTimezone();
1020c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnUpdateWebPreferences(const WebPreferences& prefs);
10215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnZoom(PageZoom zoom);
10235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnZoomFactor(PageZoom zoom, int zoom_center_x, int zoom_center_y);
10245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnEnableViewSourceMode();
10265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnJavaBridgeInit();
10285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnDisownOpener();
10305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID)
10325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnActivateNearestFindResult(int request_id, float x, float y);
10335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnFindMatchRects(int current_version);
10345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnSelectPopupMenuItems(bool canceled,
10355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              const std::vector<int>& selected_indices);
10365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnUndoScrollFocusedEditableNodeIntoRect();
1037c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void OnUpdateTopControlsState(bool enable_hiding,
1038c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                bool enable_showing,
1039c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                bool animate);
10405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(OS_MACOSX)
10415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnCopyToFindPboard();
10425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnPluginImeCompositionCompleted(const string16& text, int plugin_id);
10432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnSelectPopupMenuItem(int selected_index);
10445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnSetInLiveResize(bool in_live_resize);
10455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnSetWindowVisibility(bool visible);
10465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnWindowFrameChanged(const gfx::Rect& window_frame,
10475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            const gfx::Rect& view_frame);
10485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
10495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnWindowSnapshotCompleted(const int snapshot_id,
10512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const gfx::Size& size, const std::vector<unsigned char>& png);
10522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
10535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Adding a new message handler? Please add it in alphabetical order above
10555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // and put it in the same position in the .cc file.
10565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Misc private functions ----------------------------------------------------
10585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void ZoomFactorHelper(PageZoom zoom, int zoom_center_x, int zoom_center_y,
10595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        float scaling_increment);
10605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void AltErrorPageFinished(WebKit::WebFrame* frame,
1062c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                            const WebKit::WebURLRequest& original_request,
10635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            const WebKit::WebURLError& original_error,
10645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            const std::string& html);
10655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Check whether the preferred size has changed.
10675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void CheckPreferredSize();
10685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
106958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  // Initializes |media_stream_client_|, returning true if successful. Returns
107058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  // false if it wasn't possible to create a MediaStreamClient (e.g., WebRTC is
107158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  // disabled) in which case |media_stream_client_| is NULL.
107258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  bool InitializeMediaStreamClient();
10735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // This callback is triggered when DownloadFavicon completes, either
10755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // succesfully or with a failure. See DownloadFavicon for more
10765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // details.
1077a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  void DidDownloadFavicon(ImageResourceFetcher* fetcher,
10785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          const SkBitmap& image);
10795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Requests to download a favicon image. When done, the RenderView is notified
10815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // by way of DidDownloadFavicon. Returns true if the request was successfully
10825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // started, false otherwise. id is used to uniquely identify the request and
10835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // passed back to the DidDownloadFavicon method. If the image has multiple
10845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // frames, the frame whose size is image_size is returned. If the image
10855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // doesn't have a frame at the specified size, the first is returned.
10865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool DownloadFavicon(int id, const GURL& image_url, int image_size);
10875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GURL GetAlternateErrorPageURL(const GURL& failed_url,
10895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                ErrorPageType error_type);
10905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Locates a sub frame with given xpath
10925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WebKit::WebFrame* GetChildFrame(const string16& frame_xpath) const;
10935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns the URL being loaded by the given frame's request.
10955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GURL GetLoadingUrl(WebKit::WebFrame* frame) const;
10965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Should only be called if this object wraps a PluginDocument.
10985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WebKit::WebPlugin* GetWebPluginFromPluginDocument();
10995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns true if the |params| navigation is to an entry that has been
11015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // cropped due to a recent navigation the browser did not know about.
11025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool IsBackForwardToStaleEntry(const ViewMsg_Navigate_Params& params,
11035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 bool is_reload);
11045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool MaybeLoadAlternateErrorPage(WebKit::WebFrame* frame,
11065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   const WebKit::WebURLError& error,
11075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   bool replace);
11085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Make this RenderView show an empty, unscriptable page.
11105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void NavigateToSwappedOutURL(WebKit::WebFrame* frame);
11115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // If we initiated a navigation, this function will populate |document_state|
11135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // with the navigation information saved in OnNavigate().
11145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void PopulateDocumentStateFromPending(DocumentState* document_state);
11155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns a new NavigationState populated with the navigation information
11175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // saved in OnNavigate().
11185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NavigationState* CreateNavigationStateFromPending();
11195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Processes the command-line flags --enable-viewport,
11212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // --enable-fixed-layout[=w,h] and --enable-pinch.
11225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void ProcessViewLayoutFlags(const CommandLine& command_line);
11235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID)
11255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Launch an Android content intent with the given URL.
11265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void LaunchAndroidContentIntent(const GURL& intent_url, size_t request_id);
11275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
11285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Sends a reply to the current find operation handling if it was a
11305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // synchronous find request.
11315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SendFindReply(int request_id,
11325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     int match_count,
11335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     int ordinal,
11345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     const WebKit::WebRect& selection_rect,
11355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     bool final_status_update);
11365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Returns whether |params.selection_text| should be synchronized to the
11382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // browser before bringing up the context menu. Static for testing.
11392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  static bool ShouldUpdateSelectionTextFromContextMenuParams(
11402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const string16& selection_text,
11412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      size_t selection_text_offset,
114258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      const gfx::Range& selection_range,
11432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const ContextMenuParams& params);
11442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
11455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Starts nav_state_sync_timer_ if it isn't already running.
11465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void StartNavStateSyncTimerIfNecessary();
11475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Dispatches the current state of selection on the webpage to the browser if
11495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // it has changed.
11505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // TODO(varunjain): delete this method once we figure out how to keep
11515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // selection handles in sync with the webpage.
11525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SyncSelectionIfRequired();
11535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_POSIX) && !defined(OS_MACOSX)
11555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateFontRenderingFromRendererPrefs();
11565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else
11575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateFontRenderingFromRendererPrefs() {}
11585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
11595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Update the target url and tell the browser that the target URL has changed.
11615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // If |url| is empty, show |fallback_url|.
11625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateTargetURL(const GURL& url, const GURL& fallback_url);
11635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1164c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Tells the browser what the new list of favicons for the webpage is.
1165c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void SendUpdateFaviconURL(const std::vector<FaviconURL>& urls);
1166c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
1167c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Invoked from DidStopLoading(). Sends the current list of loaded favicons to
1168c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // the browser.
1169c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void DidStopLoadingIcons();
1170c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
11712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Coordinate conversion -----------------------------------------------------
11722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
11732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  gfx::RectF ClientRectToPhysicalWindowRect(const gfx::RectF& rect) const;
11742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
11755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // ---------------------------------------------------------------------------
11765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // ADDING NEW FUNCTIONS? Please keep private functions alphabetized and put
11775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // it in the same order in the .cc file as it was in the header.
11785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // ---------------------------------------------------------------------------
11795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Settings ------------------------------------------------------------------
11815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1182c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  WebPreferences webkit_preferences_;
11835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  RendererPreferences renderer_preferences_;
11845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  HostZoomLevels host_zoom_levels_;
11865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Whether content state (such as form state, scroll position and page
11885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // contents) should be sent to the browser immediately. This is normally
11895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // false, but set to true by some tests.
11905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool send_content_state_immediately_;
11915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Bitwise-ORed set of extra bindings that have been enabled.  See
11935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // BindingsPolicy for details.
11945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int enabled_bindings_;
11955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The alternate error page URL, if one exists.
11975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GURL alternate_error_page_url_;
11985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // If true, we send IPC messages when |preferred_size_| changes.
12005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool send_preferred_size_changes_;
12015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // If non-empty, and |send_preferred_size_changes_| is true, disable drawing
12035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // scroll bars on windows smaller than this size.  Used for windows that the
12045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // browser resizes to the size of the content, such as browser action popups.
12055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // If a render view is set to the minimum size of its content, webkit may add
12065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // scroll bars.  This makes sense for fixed sized windows, but it does not
12075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // make sense when the size of the view was chosen to fit the content.
12085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // This setting ensures that no scroll bars are drawn.  The size limit exists
12095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // because if the view grows beyond a size known to the browser, scroll bars
12105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // should be drawn.
12115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gfx::Size disable_scrollbars_size_limit_;
12125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Loading state -------------------------------------------------------------
12145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // True if the top level frame is currently being loaded.
12165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool is_loading_;
12175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The gesture that initiated the current navigation.
12195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NavigationGesture navigation_gesture_;
12205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Used for popups.
12225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool opened_by_user_gesture_;
12235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Whether this RenderView was created by a frame that was suppressing its
12255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // opener. If so, we may want to load pages in a separate process.  See
12265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // decidePolicyForNavigation for details.
12275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool opener_suppressed_;
12285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Holds state pertaining to a navigation that we initiated.  This is held by
12305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // the WebDataSource::ExtraData attribute.  We use pending_navigation_state_
12315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // as a temporary holder for the state until the WebDataSource corresponding
12325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // to the new navigation is created.  See DidCreateDataSource.
12335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<ViewMsg_Navigate_Params> pending_navigation_params_;
12345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Timer used to delay the updating of nav state (see SyncNavigationState).
12365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::OneShotTimer<RenderViewImpl> nav_state_sync_timer_;
12375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Page IDs ------------------------------------------------------------------
12395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // See documentation in RenderView.
12405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int32 page_id_;
12415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Indicates the ID of the last page that we sent a FrameNavigate to the
12435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // browser for. This is used to determine if the most recent transition
12445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // generated a history entry (less than page_id_), or not (equal to or
12455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // greater than). Note that this will be greater than page_id_ if the user
12465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // goes back.
12475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int32 last_page_id_sent_to_browser_;
12485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The next available page ID to use for this RenderView.  These IDs are
12505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // specific to a given RenderView and the frames within it.
12515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int32 next_page_id_;
12525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The offset of the current item in the history list.
12545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int history_list_offset_;
12555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The RenderView's current impression of the history length.  This includes
12575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // any items that have committed in this process, but because of cross-process
12585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // navigations, the history may have some entries that were committed in other
12595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // processes.  We won't know about them until the next navigation in this
12605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // process.
12615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int history_list_length_;
12625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The list of page IDs for each history item this RenderView knows about.
12645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Some entries may be -1 if they were rendered by other processes or were
12655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // restored from a previous session.  This lets us detect attempts to
12665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // navigate to stale entries that have been cropped from our history.
12675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::vector<int32> history_page_ids_;
12685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Page info -----------------------------------------------------------------
12705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The last gotten main frame's encoding.
12725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string last_encoding_name_;
12735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // UI state ------------------------------------------------------------------
12755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The state of our target_url transmissions. When we receive a request to
12775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // send a URL to the browser, we set this to TARGET_INFLIGHT until an ACK
12785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // comes back - if a new request comes in before the ACK, we store the new
12795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // URL in pending_target_url_ and set the status to TARGET_PENDING. If an
12805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // ACK comes back and we are in TARGET_PENDING, we send the stored URL and
12815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // revert to TARGET_INFLIGHT.
12825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
12835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // We don't need a queue of URLs to send, as only the latest is useful.
12845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  enum {
12855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    TARGET_NONE,
12865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    TARGET_INFLIGHT,  // We have a request in-flight, waiting for an ACK
12875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    TARGET_PENDING    // INFLIGHT + we have a URL waiting to be sent
12885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  } target_url_status_;
12895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The URL we show the user in the status bar. We use this to determine if we
12915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // want to send a new one (we do not need to send duplicates). It will be
12925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // equal to either |mouse_over_url_| or |focus_url_|, depending on which was
12935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // updated last.
12945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GURL target_url_;
12955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The URL the user's mouse is hovering over.
12975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GURL mouse_over_url_;
12985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The URL that has keyboard focus.
13005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GURL focus_url_;
13015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The next target URL we want to send to the browser.
13035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GURL pending_target_url_;
13045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // The text selection the last time DidChangeSelection got called. May contain
13062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // additional characters before and after the selected text, for IMEs. The
13072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // portion of this string that is the actual selected text starts at index
13082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // |selection_range_.GetMin() - selection_text_offset_| and has length
13092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // |selection_range_.length()|.
13105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  string16 selection_text_;
13112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // The offset corresponding to the start of |selection_text_| in the document.
13125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  size_t selection_text_offset_;
13132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Range over the document corresponding to the actual selected text (which
13142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // could correspond to a substring of |selection_text_|; see above).
131558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  gfx::Range selection_range_;
13165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // External context menu requests we're waiting for. "Internal"
13185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // (WebKit-originated) context menu events will have an ID of 0 and will not
13195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // be in this map.
13205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
13215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // We don't want to add internal ones since some of the "special" page
13225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // handlers in the browser process just ignore the context menu requests so
13235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // avoid showing context menus, and so this will cause right clicks to leak
13245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // entries in this map. Most users of the custom context menu (e.g. Pepper
13255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // plugins) are normally only on "regular" pages and the regular pages will
13265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // always respond properly to the request, so we don't have to worry so
13275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // much about leaks.
13285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IDMap<ContextMenuClient, IDMapExternalPointer> pending_context_menus_;
13295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13307d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#if defined(OS_ANDROID)
13317d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  // Cache the old top controls state constraints. Used when updating
13327d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  // current value only without altering the constraints.
13337d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  cc::TopControlsState top_controls_constraints_;
13347d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#endif
13357d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
13365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // View ----------------------------------------------------------------------
13375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Cache the preferred size of the page in order to prevent sending the IPC
13395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // when layout() recomputes but doesn't actually change sizes.
13405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gfx::Size preferred_size_;
13415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Used to delay determining the preferred size (to avoid intermediate
13435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // states for the sizes).
13445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::OneShotTimer<RenderViewImpl> check_preferred_size_timer_;
13455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // These store the "is main frame is scrolled all the way to the left
13475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // or right" state that was last sent to the browser.
13485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool cached_is_main_frame_pinned_to_left_;
13495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool cached_is_main_frame_pinned_to_right_;
13505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // These store the "has scrollbars" state last sent to the browser.
13525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool cached_has_main_frame_horizontal_scrollbar_;
13535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool cached_has_main_frame_vertical_scrollbar_;
13545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Helper objects ------------------------------------------------------------
13565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1357868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  scoped_ptr<RenderFrameImpl> main_render_frame_;
1358868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
13595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  RendererWebCookieJarImpl cookie_jar_;
13605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The next group of objects all implement RenderViewObserver, so are deleted
13625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // along with the RenderView automatically.  This is why we just store
13635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // weak references.
13645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Holds a reference to the service which provides desktop notifications.
13665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NotificationProvider* notification_provider_;
13675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The geolocation dispatcher attached to this view, lazily initialized.
13695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GeolocationDispatcher* geolocation_dispatcher_;
13705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The speech dispatcher attached to this view, lazily initialized.
13725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InputTagSpeechDispatcher* input_tag_speech_dispatcher_;
13735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The speech recognition dispatcher attached to this view, lazily
13755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // initialized.
13765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SpeechRecognitionDispatcher* speech_recognition_dispatcher_;
13775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Device orientation dispatcher attached to this view; lazily initialized.
13795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DeviceOrientationDispatcher* device_orientation_dispatcher_;
13805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // MediaStream dispatcher attached to this view; lazily initialized.
13825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MediaStreamDispatcher* media_stream_dispatcher_;
13835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // BrowserPluginManager attached to this view; lazily initialized.
13852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_refptr<BrowserPluginManager> browser_plugin_manager_;
13862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
13877dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  // MediaStreamClient attached to this view; lazily initialized.
13887dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  MediaStreamClient* media_stream_client_;
13897dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  WebKit::WebUserMediaClient* web_user_media_client_;
13905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
139158e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch  // MIDIClient attached to this view; lazily initialized.
139258e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch  MIDIDispatcher* midi_dispatcher_;
139358e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch
13945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DevToolsAgent* devtools_agent_;
13955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The current accessibility mode.
13975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AccessibilityMode accessibility_mode_;
13985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Only valid if |accessibility_mode_| is anything other than
14005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // AccessibilityModeOff.
14015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  RendererAccessibility* renderer_accessibility_;
14025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Java Bridge dispatcher attached to this view; lazily initialized.
14045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  JavaBridgeDispatcher* java_bridge_dispatcher_;
14055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Mouse Lock dispatcher attached to this view.
14075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MouseLockDispatcher* mouse_lock_dispatcher_;
14085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID)
14105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Android Specific ---------------------------------------------------------
14115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The background color of the document body element. This is used as the
14135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // default background color for filling the screen areas for which we don't
14145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // have the actual content.
14155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SkColor body_background_color_;
14165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Expected id of the next content intent launched. Used to prevent scheduled
14185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // intents to be launched if aborted.
14195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  size_t expected_content_intent_id_;
14205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // List of click-based content detectors.
14225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  typedef std::vector< linked_ptr<ContentDetector> > ContentDetectorList;
14235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ContentDetectorList content_detectors_;
14245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Proxy class for WebMediaPlayer to communicate with the real media player
14265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // objects in browser process.
1427eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  WebMediaPlayerProxyAndroid* media_player_proxy_;
14285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The media player manager for managing all the media players on this view.
14307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  scoped_ptr<RendererMediaPlayerManager> media_player_manager_;
14315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // A date/time picker object for date and time related input elements.
14332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_ptr<RendererDateTimePicker> date_time_picker_client_;
14345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
14355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1436c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Plugins -------------------------------------------------------------------
1437c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
1438c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // All the currently active plugin delegates for this RenderView; kept so
1439c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // that we can enumerate them to send updates about things like window
1440c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // location or tab focus and visibily. These are non-owning references.
1441c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  std::set<WebPluginDelegateProxy*> plugin_delegates_;
1442c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
1443c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#if defined(OS_WIN)
1444c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // The ID of the focused NPAPI plug-in.
1445c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  int focused_plugin_id_;
1446c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif
1447c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
14483240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch#if defined(ENABLE_PLUGINS)
14493240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  typedef std::set<PepperPluginInstanceImpl*> PepperPluginSet;
14503240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  PepperPluginSet active_pepper_instances_;
14513240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch
14523240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // Whether or not the focus is on a PPAPI plugin
14533240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  PepperPluginInstanceImpl* focused_pepper_plugin_;
14543240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch
14553240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // Current text input composition text. Empty if no composition is in
14563240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // progress.
14573240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  string16 pepper_composition_text_;
14583240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch
14593240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // The plugin instance that received the last mouse event. It is set to NULL
14603240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // if the last mouse event went to elements other than Pepper plugins.
14613240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // |pepper_last_mouse_event_target_| is not owned by this class. We can know
14623240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // about when it is destroyed via InstanceDeleted().
14633240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  PepperPluginInstanceImpl* pepper_last_mouse_event_target_;
14643240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch#endif
14653240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch
14665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Misc ----------------------------------------------------------------------
14675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The current and pending file chooser completion objects. If the queue is
14695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // nonempty, the first item represents the currently running file chooser
14705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // callback, and the remaining elements are the other file chooser completion
14715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // still waiting to be run (in order).
14725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct PendingFileChooser;
14735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::deque< linked_ptr<PendingFileChooser> > file_chooser_completions_;
14745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The current directory enumeration callback
14765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::map<int, WebKit::WebFileChooserCompletion*> enumeration_completions_;
14775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int enumeration_completion_id_;
14785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Reports load progress to the browser.
14805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<LoadProgressTracker> load_progress_tracker_;
14815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The SessionStorage namespace that we're assigned to has an ID, and that ID
14835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // is passed to us upon creation.  WebKit asks for this ID upon first use and
14845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // uses it whenever asking the browser process to allocate new storage areas.
14855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int64 session_storage_namespace_id_;
14865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The total number of unrequested popups that exist and can be followed back
14885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // to a common opener. This count is shared among all RenderViews created with
14895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // createView(). All popups are treated as unrequested until specifically
14905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // instructed otherwise by the Browser process.
14915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_refptr<SharedRenderViewCounter> shared_popup_counter_;
14925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Whether this is a top level window (instead of a popup). Top level windows
14945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // shouldn't count against their own |shared_popup_counter_|.
14955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool decrement_shared_popup_at_destruction_;
14965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Stores edit commands associated to the next key event.
14985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Shall be cleared as soon as the next key event is processed.
14995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EditCommands edit_commands_;
15005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The external popup for the currently showing select popup.
15025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<ExternalPopupMenu> external_popup_menu_;
15035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The node that the context menu was pressed over.
15055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WebKit::WebNode context_menu_node_;
15065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // All the registered observers.  We expect this list to be small, so vector
15085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // is fine.
15095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ObserverList<RenderViewObserver> observers_;
15105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Used to inform didChangeSelection() when it is called in the context
1512c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // of handling a InputMsg_SelectRange IPC.
15135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool handling_select_range_;
15145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Wraps the |webwidget_| as a MouseLockDispatcher::LockTarget interface.
15165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<MouseLockDispatcher::LockTarget> webwidget_mouse_lock_target_;
15175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // State associated with the GetWindowSnapshot function.
15192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  int next_snapshot_id_;
15203240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  typedef std::map<int, WindowSnapshotCallback> PendingSnapshotMap;
15212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PendingSnapshotMap pending_snapshots_;
15222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1523c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Allows to selectively disable partial buffer swap for this renderer's
1524c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // compositor.
15252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  bool allow_partial_swap_;
15262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
15275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Allows JS to access DOM automation. The JS object is only exposed when the
15285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // DOM automation bindings are enabled.
15295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<DomAutomationController> dom_automation_controller_;
15305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
153158e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch  // Allows JS to read out a variety of internal various metrics. The JS object
153258e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch  // is only exposed when the stats collection bindings are enabled.
153358e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch  scoped_ptr<StatsCollectionController> stats_collection_controller_;
1534868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
15355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // This field stores drag/drop related info for the event that is currently
15365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // being handled. If the current event results in starting a drag/drop
15375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // session, this info is sent to the browser along with other drag/drop info.
15385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DragEventSourceInfo possible_drag_event_info_;
15395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15403240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // NOTE: stats_collection_observer_ should be the last members because their
15413240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch  // constructors call the AddObservers method of RenderViewImpl.
1542868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  scoped_ptr<StatsCollectionObserver> stats_collection_observer_;
15432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1544eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  ui::MenuSourceType context_menu_source_type_;
15457d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  gfx::Point touch_editing_context_menu_location_;
15467d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
15475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // ---------------------------------------------------------------------------
15485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // ADDING NEW DATA? Please see if it fits appropriately in one of the above
15495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // sections rather than throwing it randomly at the end. If you're adding a
15505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // bunch of stuff, you should probably create a helper class and put your
15515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // data and methods on that to avoid bloating RenderView more.  You can
15525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // use the Observer interface to filter IPC messages and receive frame change
15535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // notifications.
15545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // ---------------------------------------------------------------------------
15555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(RenderViewImpl);
15575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
15585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace content
15605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CONTENT_RENDERER_RENDER_VIEW_IMPL_H_
1562