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" 250529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "cc/resources/shared_bitmap.h" 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/content_export.h" 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/drag_event_source_info.h" 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/edit_command.h" 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.h" 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/navigation_gesture.h" 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/view_message_enums.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" 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "content/public/common/web_preferences.h" 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/renderer/render_view.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" 42868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "content/renderer/stats_collection_observer.h" 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ipc/ipc_platform_file.h" 44868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "third_party/WebKit/public/platform/WebGraphicsContext3D.h" 4558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "third_party/WebKit/public/web/WebAXObject.h" 467d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebConsoleMessage.h" 477d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebDataSource.h" 48a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "third_party/WebKit/public/web/WebElement.h" 497d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebHistoryItem.h" 507d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebIconURL.h" 517d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebInputEvent.h" 527d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebNavigationType.h" 537d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebNode.h" 547d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebPageSerializerClient.h" 557d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebPageVisibilityState.h" 567d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebSecurityOrigin.h" 577d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebViewClient.h" 58a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ui/base/window_open_disposition.h" 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/surface/transport_dib.h" 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID) 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/renderer/android/content_detector.h" 63116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "content/renderer/android/renderer_date_time_picker.h" 647d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebContentDetectionResult.h" 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(COMPILER_MSVC) 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// RenderViewImpl is a diamond-shaped hierarchy, with WebWidgetClient at the 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// root. VS warns when we inherit the WebWidgetClient method implementations 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// from RenderWidget. It's safe to ignore that warning. 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#pragma warning(disable: 4250) 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PepperDeviceTest; 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SkBitmap; 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct PP_NetAddress_Private; 775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct FrameMsg_Navigate_Params; 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ViewMsg_PostMessage_Params; 79e578b2d213c837aab9cea5407d30f5c84065cd0eMarcin Kosibastruct ViewMsg_Resize_Params; 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ViewMsg_StopFinding_Params; 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)namespace base { 83a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class CommandLine; 84a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 85a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 86f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace blink { 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebApplicationCacheHost; 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebApplicationCacheHostClient; 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebDOMMessageEvent; 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebDataSource; 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class WebDateTimeChooserCompletion; 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebDragData; 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebGestureEvent; 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebIconURL; 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebImage; 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebPeerConnection00Handler; 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebPeerConnection00HandlerClient; 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebMouseEvent; 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebPeerConnectionHandler; 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebPeerConnectionHandlerClient; 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebSocketStreamHandle; 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebSpeechRecognizer; 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebStorageNamespace; 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebTouchEvent; 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebURLRequest; 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct WebActiveWheelFlingParameters; 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct WebDateTimeChooserParams; 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct WebFileChooserParams; 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct WebFindOptions; 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct WebMediaPlayerAction; 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct WebPluginAction; 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct WebPoint; 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct WebWindowFeatures; 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID) 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebHitTestResult; 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 118116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace blink 119116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 120116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace ui { 121116680a4aac90f2aa7413d9095a592090648e557Ben Murdochstruct SelectedFileInfo; 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 1251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class BrowserPluginManager; 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DevToolsAgent; 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DocumentState; 129a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochclass HistoryController; 1305c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuclass HistoryEntry; 131a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)class ImageResourceFetcher; 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MouseLockDispatcher; 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class NavigationState; 13458e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdochclass PepperPluginInstanceImpl; 135116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass RenderViewImplTest; 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RenderViewObserver; 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RenderViewTest; 1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class RendererDateTimePicker; 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RendererWebColorChooserImpl; 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SpeechRecognitionDispatcher; 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebPluginDelegateProxy; 142eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochstruct DropData; 143c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)struct FaviconURL; 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct FileChooserParams; 1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct RenderViewImplParams; 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID) 148eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass WebMediaPlayerProxyAndroid; 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// RenderView is an object that manages a WebView object, and provides a 1531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// communication interface with an embedding application process. 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class CONTENT_EXPORT RenderViewImpl 1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : public RenderWidget, 157f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) NON_EXPORTED_BASE(public blink::WebViewClient), 158f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) NON_EXPORTED_BASE(public blink::WebPageSerializerClient), 1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public RenderView, 1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public base::SupportsWeakPtr<RenderViewImpl> { 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 162d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) // Creates a new RenderView. |opener_id| is the routing ID of the RenderView 1630529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // responsible for creating this RenderView. Note that if the original opener 1640529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // has been closed, |window_was_created_with_opener| will be true and 165cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // |opener_id| will be MSG_ROUTING_NONE. When |swapped_out| is true, the 166cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // |proxy_routing_id| is specified, so a RenderFrameProxy can be created for 167cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // this RenderView's main RenderFrame. 168a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) static RenderViewImpl* Create(int32 opener_id, 1690529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch bool window_was_created_with_opener, 170a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const RendererPreferences& renderer_prefs, 171a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const WebPreferences& webkit_prefs, 172a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int32 routing_id, 173a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int32 main_frame_routing_id, 174a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int32 surface_id, 175a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int64 session_storage_namespace_id, 176a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const base::string16& frame_name, 177a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) bool is_renderer_created, 178a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) bool swapped_out, 179cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) int32 proxy_routing_id, 180a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) bool hidden, 1810529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch bool never_visible, 182a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int32 next_page_id, 183e578b2d213c837aab9cea5407d30f5c84065cd0eMarcin Kosiba const ViewMsg_Resize_Params& initial_size, 184e578b2d213c837aab9cea5407d30f5c84065cd0eMarcin Kosiba bool enable_auto_resize, 185e578b2d213c837aab9cea5407d30f5c84065cd0eMarcin Kosiba const gfx::Size& min_size, 186e578b2d213c837aab9cea5407d30f5c84065cd0eMarcin Kosiba const gfx::Size& max_size); 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Used by content_layouttest_support to hook into the creation of 1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // RenderViewImpls. 1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static void InstallCreateHook( 1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) RenderViewImpl* (*create_render_view_impl)(RenderViewImplParams*)); 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns the RenderViewImpl containing the given WebView. 194f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static RenderViewImpl* FromWebView(blink::WebView* webview); 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns the RenderViewImpl for the given routing ID. 1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static RenderViewImpl* FromRoutingID(int routing_id); 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 199f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) static size_t GetRenderViewCount(); 200f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 2012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // May return NULL when the view is closing. 202f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebView* webview() const; 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int history_list_offset() const { return history_list_offset_; } 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 206c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const WebPreferences& webkit_preferences() const { 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return webkit_preferences_; 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 210a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const RendererPreferences& renderer_preferences() const { 211a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return renderer_preferences_; 212a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 213a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void set_send_content_state_immediately(bool value) { 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) send_content_state_immediately_ = value; 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MouseLockDispatcher* mouse_lock_dispatcher() { 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mouse_lock_dispatcher_; 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 222a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch HistoryController* history_controller() { 223a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch return history_controller_.get(); 224a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch } 225a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 2262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Lazily initialize this view's BrowserPluginManager and return it. 227c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) BrowserPluginManager* GetBrowserPluginManager(); 2282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Functions to add and remove observers for this object. 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void AddObserver(RenderViewObserver* observer); 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void RemoveObserver(RenderViewObserver* observer); 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 233868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // Returns the StatsCollectionObserver associated with this view, or NULL 234868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // if one wasn't created; 235868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) StatsCollectionObserver* GetStatsCollectionObserver() { 236868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) return stats_collection_observer_.get(); 237868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) } 238868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Adds the given file chooser request to the file_chooser_completion_ queue 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // (see that var for more) and requests the chooser be displayed if there are 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // no other waiting items in the queue. 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if the chooser was successfully scheduled. False means we 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // didn't schedule anything. 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool ScheduleFileChooser(const FileChooserParams& params, 246f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebFileChooserCompletion* completion); 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 248a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#if defined(OS_ANDROID) 249a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void DismissDateTimeDialog(); 250a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#endif 251effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 252effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch bool is_loading() const { return frames_in_progress_ != 0; } 253effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 254effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch void FrameDidStartLoading(blink::WebFrame* frame); 255effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch void FrameDidStopLoading(blink::WebFrame* frame); 256effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Plugin-related functions -------------------------------------------------- 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2593240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch#if defined(ENABLE_PLUGINS) 26023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) // Get/set the plugin which will be used as to handle document find requests. 26123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) void set_plugin_find_handler(PepperPluginInstanceImpl* plugin) { 26223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) plugin_find_handler_ = plugin; 26323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) } 26423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) PepperPluginInstanceImpl* plugin_find_handler() { 26523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) return plugin_find_handler_; 26623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) } 26723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 268a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) PepperPluginInstanceImpl* focused_pepper_plugin() { 269a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return focused_pepper_plugin_; 270a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 271a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) PepperPluginInstanceImpl* pepper_last_mouse_event_target() { 272a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return pepper_last_mouse_event_target_; 273a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 274a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void set_pepper_last_mouse_event_target(PepperPluginInstanceImpl* plugin) { 275a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) pepper_last_mouse_event_target_ = plugin; 276a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) || defined(OS_WIN) 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Informs the render view that the given plugin has gained or lost focus. 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void PluginFocusChanged(bool focused, int plugin_id); 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Starts plugin IME. 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void StartPluginIme(); 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Indicates that the given instance has been created. 2895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void PepperInstanceCreated(PepperPluginInstanceImpl* instance); 2905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Indicates that the given instance is being destroyed. This is called from 2925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // the destructor, so it's important that the instance is not dereferenced 2935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // from this call. 2945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void PepperInstanceDeleted(PepperPluginInstanceImpl* instance); 2955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Notification that the given plugin is focused or unfocused. 2975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void PepperFocusChanged(PepperPluginInstanceImpl* instance, bool focused); 2985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void RegisterPluginDelegate(WebPluginDelegateProxy* delegate); 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void UnregisterPluginDelegate(WebPluginDelegateProxy* delegate); 301bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#endif // ENABLE_PLUGINS 302bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void TransferActiveWheelFlingAnimation( 304f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebActiveWheelFlingParameters& params); 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if the focused element is editable text from the perspective 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // of IME support (also used for on-screen keyboard). Works correctly inside 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // supported PPAPI plug-ins. 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool HasIMETextFocus(); 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Callback for use with GetWindowSnapshot. 3122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) typedef base::Callback<void( 3132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const gfx::Size&, const std::vector<unsigned char>&)> 3142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WindowSnapshotCallback; 3152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void GetWindowSnapshot(const WindowSnapshotCallback& callback); 3172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Dispatches the current navigation state to the browser. Called on a 3192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // periodic timer so we don't send too many messages. 3202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void SyncNavigationState(); 3212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns the length of the session history of this RenderView. Note that 3232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // this only coincides with the actual length of the session history if this 3242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // RenderView is the currently active RenderView of a WebContents. 3252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) unsigned GetLocalSessionHistoryLengthForTesting() const; 3262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Invokes OnSetFocus and marks the widget as active depending on the value 3282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // of |enable|. This is used for layout tests that need to control the focus 3292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // synchronously from the renderer. 3302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void SetFocusAndActivateForTesting(bool enable); 3312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Change the device scale factor and force the compositor to resize. 3332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void SetDeviceScaleFactorForTesting(float factor); 3342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 335010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Change the device ICC color profile while running a layout test. 336010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) void SetDeviceColorProfileForTesting(const std::vector<char>& color_profile); 3371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void ResetDeviceColorProfileForTesting() OVERRIDE; 338010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 3391e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Used to force the size of a window when running layout tests. 3401e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) void ForceResizeForTesting(const gfx::Size& new_size); 3411e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 3421e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) void UseSynchronousResizeModeForTesting(bool enable); 3431e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 34490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Control autoresize mode. 34590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void EnableAutoResizeForTesting(const gfx::Size& min_size, 34690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const gfx::Size& max_size); 34790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void DisableAutoResizeForTesting(const gfx::Size& new_size); 34890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // IPC::Listener implementation ---------------------------------------------- 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE; 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 353f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // blink::WebWidgetClient implementation ------------------------------------ 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Most methods are handled by RenderWidget. 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void didFocus(); 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void didBlur(); 358f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void show(blink::WebNavigationPolicy policy); 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void runModal(); 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool enterFullScreen(); 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void exitFullScreen(); 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool requestPointerLock(); 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void requestPointerUnlock(); 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool isPointerLocked(); 365f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void didHandleGestureEvent(const blink::WebGestureEvent& event, 3662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool event_cancelled) OVERRIDE; 367a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch virtual void initializeLayerTreeView() OVERRIDE; 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 369f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // blink::WebViewClient implementation -------------------------------------- 370f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 371c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual blink::WebView* createView(blink::WebLocalFrame* creator, 372c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const blink::WebURLRequest& request, 373c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const blink::WebWindowFeatures& features, 374c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const blink::WebString& frame_name, 375c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch blink::WebNavigationPolicy policy, 376c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch bool suppress_opener); 377f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebWidget* createPopupMenu(blink::WebPopupType popup_type); 378f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebStorageNamespace* createSessionStorageNamespace(); 379c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void printPage(blink::WebLocalFrame* frame); 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool enumerateChosenDirectory( 381f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebString& path, 382f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebFileChooserCompletion* chooser_completion); 3831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void saveImageFromDataURL(const blink::WebString& data_url); 3842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void didCancelCompositionOnSelectionChange(); 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool handleCurrentKeyboardEvent(); 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool runFileChooser( 387f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebFileChooserParams& params, 388f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebFileChooserCompletion* chooser_completion); 3891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetValidationMessageDirection(base::string16* main_text, 3901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci blink::WebTextDirection main_text_hint, 3911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::string16* sub_text, 3921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci blink::WebTextDirection sub_text_hint); 3935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void showValidationMessage(const blink::WebRect& anchor_in_root_view, 3945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const blink::WebString& main_text, 3951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci blink::WebTextDirection main_text_hint, 3965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const blink::WebString& sub_text, 3975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) blink::WebTextDirection hint) OVERRIDE; 3985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void hideValidationMessage() OVERRIDE; 3995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void moveValidationMessage( 4005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const blink::WebRect& anchor_in_root_view) OVERRIDE; 401f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void setStatusText(const blink::WebString& text); 402f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void setMouseOverURL(const blink::WebURL& url); 403f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void setKeyboardFocusURL(const blink::WebURL& url); 404c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void startDragging(blink::WebLocalFrame* frame, 405f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebDragData& data, 406f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebDragOperationsMask mask, 407f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebImage& image, 408f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebPoint& imageOffset); 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool acceptsLoadDrops(); 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void focusNext(); 4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void focusPrevious(); 412f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void focusedNodeChanged(const blink::WebNode& node); 4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void didUpdateLayout(); 4141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(OS_ANDROID) || defined(TOOLKIT_VIEWS) 4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool didTapMultipleTargets( 4161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const blink::WebSize& inner_viewport_offset, 4171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const blink::WebRect& touch_rect, 418f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebVector<blink::WebRect>& target_rects); 4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 4200529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch virtual blink::WebString acceptLanguages(); 4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void navigateBackForwardSoon(int offset); 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int historyBackListCount(); 4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int historyForwardListCount(); 424f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebSpeechRecognizer* speechRecognizer(); 4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void zoomLimitsChanged(double minimum_level, double maximum_level); 4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void zoomLevelChanged(); 42758e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch virtual double zoomLevelToZoomFactor(double zoom_level) const; 42858e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch virtual double zoomFactorToZoomLevel(double factor) const; 42903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual void registerProtocolHandler(const blink::WebString& scheme, 43003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const blink::WebURL& url, 43103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const blink::WebString& title); 43203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual void unregisterProtocolHandler(const blink::WebString& scheme, 43303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const blink::WebURL& url); 434f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebPageVisibilityState visibilityState() const; 435c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual blink::WebPushClient* webPushClient(); 4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void draggableRegionsChanged(); 4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID) 439f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void scheduleContentIntent(const blink::WebURL& intent); 4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void cancelScheduledContentIntents(); 441f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebContentDetectionResult detectContentAround( 442f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebHitTestResult& touch_hit); 4432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Only used on Android since all other platforms implement 4452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // date and time input fields using MULTIPLE_FIELDS_UI 446f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual bool openDateTimeChooser(const blink::WebDateTimeChooserParams&, 447f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebDateTimeChooserCompletion*); 448f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void didScrollWithKeyboard(const blink::WebSize& delta); 4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 4505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 451f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // blink::WebPageSerializerClient implementation ---------------------------- 4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void didSerializeDataForFrame( 454f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebURL& frame_url, 455f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebCString& data, 4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PageSerializationStatus status) OVERRIDE; 4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // RenderView implementation ------------------------------------------------- 4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool Send(IPC::Message* message) OVERRIDE; 4611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual RenderFrameImpl* GetMainRenderFrame() OVERRIDE; 4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int GetRoutingID() const OVERRIDE; 4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual gfx::Size GetSize() const OVERRIDE; 464c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual WebPreferences& GetWebkitPreferences() OVERRIDE; 465c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void SetWebkitPreferences(const WebPreferences& preferences) OVERRIDE; 466f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebView* GetWebView() OVERRIDE; 467a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual blink::WebElement GetFocusedElement() const OVERRIDE; 468f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual bool IsEditableNode(const blink::WebNode& node) const OVERRIDE; 4695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual bool NodeContainsPoint(const blink::WebNode& node, 4705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const gfx::Point& point) const OVERRIDE; 4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool ShouldDisplayScrollbars(int width, int height) const OVERRIDE; 4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int GetEnabledBindings() const OVERRIDE; 4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool GetContentStateImmediately() const OVERRIDE; 474f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebPageVisibilityState GetVisibilityState() const OVERRIDE; 475ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch virtual void DidStartLoading() OVERRIDE; 476ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch virtual void DidStopLoading() OVERRIDE; 4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Repaint(const gfx::Size& size) OVERRIDE; 4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetEditCommandForNextKeyEvent(const std::string& name, 4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& value) OVERRIDE; 4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ClearEditCommands() OVERRIDE; 481f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual SSLStatus GetSSLStatusOfFrame(blink::WebFrame* frame) const OVERRIDE; 4824e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual const std::string& GetAcceptLanguages() const OVERRIDE; 4832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_ANDROID) 48490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual void UpdateTopControlsState(TopControlsState constraints, 48590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) TopControlsState current, 48690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) bool animate) OVERRIDE; 4872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 488f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) bool uses_temporary_zoom_level() const { return uses_temporary_zoom_level_; } 4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Please do not add your stuff randomly to the end here. If there is an 4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // appropriate section, add it there. If not, there are some random functions 4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // nearer to the top you can add it to. 4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Cannot use std::set unfortunately since linked_ptr<> does not support 4955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // operator<. 496a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) typedef std::vector<linked_ptr<ImageResourceFetcher> > 4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ImageResourceFetcherList; 4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // RenderWidget overrides: 50146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) virtual void OnClose() OVERRIDE; 5025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Close() OVERRIDE; 50390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual void OnResize(const ViewMsg_Resize_Params& params) OVERRIDE; 5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DidInitiatePaint() OVERRIDE; 5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DidFlushPaint() OVERRIDE; 5065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual gfx::Vector2d GetScrollOffset() OVERRIDE; 5075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DidHandleKeyEvent() OVERRIDE; 5085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool WillHandleMouseEvent( 509f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebMouseEvent& event) OVERRIDE; 5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool WillHandleGestureEvent( 511f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebGestureEvent& event) OVERRIDE; 512f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void DidHandleMouseEvent(const blink::WebMouseEvent& event) OVERRIDE; 513f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void DidHandleTouchEvent(const blink::WebTouchEvent& event) OVERRIDE; 5142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool HasTouchEventHandlersAt(const gfx::Point& point) const OVERRIDE; 5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnSetFocus(bool enable) OVERRIDE; 5165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnWasHidden() OVERRIDE; 5176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual void OnWasShown(bool needs_repainting, 5186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const ui::LatencyInfo& latency_info) OVERRIDE; 5192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual GURL GetURLForGraphicsContext3D() OVERRIDE; 5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnImeSetComposition( 521a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& text, 522f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const std::vector<blink::WebCompositionUnderline>& underlines, 5235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int selection_start, 5245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int selection_end) OVERRIDE; 525a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual void OnImeConfirmComposition(const base::string16& text, 52658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const gfx::Range& replacement_range, 5277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch bool keep_selection) OVERRIDE; 5282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void SetDeviceScaleFactor(float device_scale_factor) OVERRIDE; 529f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual bool SetDeviceColorProfile( 530f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const std::vector<char>& color_profile) OVERRIDE; 531010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void OnOrientationChange() OVERRIDE; 5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ui::TextInputType GetTextInputType() OVERRIDE; 5335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void GetSelectionBounds(gfx::Rect* start, gfx::Rect* end) OVERRIDE; 534a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#if defined(OS_MACOSX) || defined(USE_AURA) 5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void GetCompositionCharacterBounds( 5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<gfx::Rect>* character_bounds) OVERRIDE; 53758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual void GetCompositionRange(gfx::Range* range) OVERRIDE; 5387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#endif 5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool CanComposeInline() OVERRIDE; 5402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void DidCommitCompositorFrame() OVERRIDE; 541f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void InstrumentWillBeginFrame(int frame_id) OVERRIDE; 5422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void InstrumentDidBeginFrame() OVERRIDE; 5432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void InstrumentDidCancelFrame() OVERRIDE; 5442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void InstrumentWillComposite() OVERRIDE; 5452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected: 5472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) explicit RenderViewImpl(RenderViewImplParams* params); 5482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5495c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu void Initialize(RenderViewImplParams* params); 5504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual void SetScreenMetricsEmulationParameters( 551f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) float device_scale_factor, 552f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const gfx::Point& root_layer_offset, 553f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) float root_layer_scale) OVERRIDE; 5542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Do not delete directly. This class is reference counted. 5562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~RenderViewImpl(); 5575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // For unit tests. 5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) friend class PepperDeviceTest; 561116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch friend class RenderViewImplTest; 5625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) friend class RenderViewTest; 563116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch friend class RendererAccessibilityTest; 5645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 565bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch // TODO(nasko): Temporarily friend RenderFrameImpl, so we don't duplicate 566bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch // utility functions needed in both classes, while we move frame specific 567bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch // code away from this class. 568bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch friend class RenderFrameImpl; 569bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 5705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, DecideNavigationPolicyForWebUI); 5715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, 572c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DidFailProvisionalLoadWithErrorForError); 573c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, 574c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DidFailProvisionalLoadWithErrorForCancellation); 575c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, 5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DontIgnoreBackAfterNavEntryLimit); 5775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, ImeComposition); 5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, InsertCharacters); 5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, JSBlockSentAfterPageLoad); 5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, LastCommittedUpdateState); 5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnHandleKeyboardEvent); 5827d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnImeTypeChanged); 5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnNavStateChanged); 5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnSetTextDirection); 5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnUpdateWebPreferences); 5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, 5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetEditableSelectionAndComposition); 5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, StaleNavigationsIgnored); 5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, UpdateTargetURLWithInvalidURL); 5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, 5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCompositionCharacterBoundsTest); 5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnNavigationHttpPost); 5935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, 5945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) DecideNavigationPolicyHandlesAllTopLevel); 5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) 5965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewTest, MacTestCmdUp); 5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, SetHistoryLengthAndPrune); 5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, ZoomLimit); 6002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, NavigateFrame); 601868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, BasicRenderFrame); 6029ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, TextInputTypeWithPepper); 603f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, 604f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) MessageOrderInDidChangeSelection); 605a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, SendCandidateWindowEvents); 6064e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(SuppressErrorPageTest, Suppresses); 6074e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(SuppressErrorPageTest, DoesNotSuppress); 6085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef std::map<GURL, double> HostZoomLevels; 6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enum ErrorPageType { 6125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DNS_ERROR, 6135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HTTP_404, 6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CONNECTION_ERROR, 6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6170529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // Old WebFrameClient implementations ---------------------------------------- 6180529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 6190529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // RenderViewImpl used to be a WebFrameClient, but now RenderFrameImpl is the 6200529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // WebFrameClient. However, many implementations of WebFrameClient methods 6210529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // still live here and are called from RenderFrameImpl. These implementations 6220529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // are to be moved to RenderFrameImpl <http://crbug.com/361761>. 6230529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 6240529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch void didCreateDataSource(blink::WebLocalFrame* frame, 6250529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch blink::WebDataSource* datasource); 626cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void didClearWindowObject(blink::WebLocalFrame* frame); 6270529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch void didChangeIcon(blink::WebLocalFrame*, blink::WebIconURL::Type); 6280529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch void didUpdateCurrentHistoryItem(blink::WebLocalFrame* frame); 6290529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch void didChangeScrollOffset(blink::WebLocalFrame* frame); 6300529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 6315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) static bool IsReload(const FrameMsg_Navigate_Params& params); 632bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 633bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch static Referrer GetReferrerFromRequest( 634f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebFrame* frame, 635f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebURLRequest& request); 636bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 637a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) static WindowOpenDisposition NavigationPolicyToDisposition( 638a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) blink::WebNavigationPolicy policy); 639bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 640f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void UpdateSessionHistory(blink::WebFrame* frame); 6415c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu void SendUpdateState(HistoryEntry* entry); 6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sends a message and runs a nested message loop. 6445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool SendAndRunNestedMessageLoop(IPC::SyncMessage* message); 6455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // IPC message handlers ------------------------------------------------------ 6475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 6485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The documentation for these functions should be in 649c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // content/common/*_messages.h for the message that the function is handling. 650c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void OnExecuteEditCommand(const std::string& name, const std::string& value); 651c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void OnMoveCaret(const gfx::Point& point); 652c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void OnScrollFocusedEditableNodeIntoRect(const gfx::Rect& rect); 653c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void OnSetEditCommandsForNextKeyEvent(const EditCommands& edit_commands); 6542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnAllowBindings(int enabled_bindings_flags); 6555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnAllowScriptToClose(bool script_can_close); 6565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnCancelDownload(int32 download_id); 657a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void OnClearFocusedElement(); 6585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnClosePage(); 6595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) void OnShowContextMenu(ui::MenuSourceType source_type, 6605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const gfx::Point& location); 6615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnCopyImageAt(int x, int y); 662010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) void OnSaveImageAt(int x, int y); 6635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnDeterminePageLanguage(); 6645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnDisableScrollbarsForSmallWindows( 6655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Size& disable_scrollbars_size_limit); 666c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch void OnDragSourceEnded(const gfx::Point& client_point, 667c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const gfx::Point& screen_point, 668c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch blink::WebDragOperation drag_operation); 6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnDragSourceSystemDragEnded(); 6705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnDragTargetDrop(const gfx::Point& client_pt, 6715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Point& screen_pt, 6725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int key_modifiers); 673eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void OnDragTargetDragEnter(const DropData& drop_data, 6745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Point& client_pt, 6755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Point& screen_pt, 676f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebDragOperationsMask operations_allowed, 6775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int key_modifiers); 6785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnDragTargetDragLeave(); 6795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnDragTargetDragOver(const gfx::Point& client_pt, 6805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Point& screen_pt, 681f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebDragOperationsMask operations_allowed, 6825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int key_modifiers); 6835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnEnablePreferredSizeChangedMode(); 6845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnEnableAutoResize(const gfx::Size& min_size, const gfx::Size& max_size); 6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnDisableAutoResize(const gfx::Size& new_size); 6862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnEnumerateDirectoryResponse(int id, 6872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::vector<base::FilePath>& paths); 6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnFileChooserResponse( 6895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::vector<ui::SelectedFileInfo>& files); 690a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void OnFind(int request_id, 691a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16&, 692a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const blink::WebFindOptions&); 6935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnGetAllSavableResourceLinksForCurrentPage(const GURL& page_url); 6945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnGetSerializedHtmlDataForCurrentPageWithLocalLinks( 6955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::vector<GURL>& links, 6962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::vector<base::FilePath>& local_paths, 6972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& local_directory_name); 6985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnMediaPlayerActionAt(const gfx::Point& location, 699f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebMediaPlayerAction& action); 7005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnPluginActionAt(const gfx::Point& location, 701f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebPluginAction& action); 7025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnMoveOrResizeStarted(); 7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnPostMessageEvent(const ViewMsg_PostMessage_Params& params); 7040529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch void OnReleaseDisambiguationPopupBitmap(const cc::SharedBitmapId& id); 7055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnResetPageEncodingToDefault(); 7065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnSetActive(bool active); 707cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void OnSetBackgroundOpaque(bool opaque); 708c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void OnExitFullscreen(); 7092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnSetHistoryLengthAndPrune(int history_length, int32 minimum_page_id); 7105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnSetInitialFocus(bool reverse); 7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnSetPageEncoding(const std::string& encoding_name); 7125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnSetRendererPrefs(const RendererPreferences& renderer_prefs); 713c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void OnSetWebUIProperty(const std::string& name, const std::string& value); 7142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnSetZoomLevelForLoadingURL(const GURL& url, double zoom_level); 715f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) void OnSetZoomLevelForView(bool uses_temporary_zoom_level, double level); 7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnStopFinding(StopFindAction action); 717f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void OnSuppressDialogsUntilSwapOut(); 7185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnThemeChanged(); 7195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnUpdateTargetURLAck(); 720c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void OnUpdateWebPreferences(const WebPreferences& prefs); 7215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnZoom(PageZoom zoom); 7225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnEnableViewSourceMode(); 7231e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) void OnWindowSnapshotCompleted(const int snapshot_id, 7241e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) const gfx::Size& size, const std::vector<unsigned char>& png); 725116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void OnForceRedraw(int request_id); 726cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void OnSelectWordAroundCaret(); 7275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID) 7285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnActivateNearestFindResult(int request_id, float x, float y); 7295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnFindMatchRects(int current_version); 7305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnUndoScrollFocusedEditableNodeIntoRect(); 731c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void OnUpdateTopControlsState(bool enable_hiding, 732c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool enable_showing, 733c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool animate); 7345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void OnExtractSmartClipData(const gfx::Rect& rect); 7355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(OS_MACOSX) 7366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) void OnGetRenderedText(); 737a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void OnPluginImeCompositionCompleted(const base::string16& text, 738a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) int plugin_id); 7395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnSetInLiveResize(bool in_live_resize); 7405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnSetWindowVisibility(bool visible); 7415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnWindowFrameChanged(const gfx::Rect& window_frame, 7425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Rect& view_frame); 7435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 7445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Adding a new message handler? Please add it in alphabetical order above 7465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // and put it in the same position in the .cc file. 7475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Misc private functions ---------------------------------------------------- 7495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Check whether the preferred size has changed. 7505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void CheckPreferredSize(); 7515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) // Called to get the WebPlugin to handle find requests in the document. 75323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) // Returns NULL if there is no such WebPlugin. 75423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) blink::WebPlugin* GetWebPluginForFind(); 7555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if the |params| navigation is to an entry that has been 7575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // cropped due to a recent navigation the browser did not know about. 7585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool IsBackForwardToStaleEntry(const FrameMsg_Navigate_Params& params, 7595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool is_reload); 7605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 761effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // Make the given |frame| show an empty, unscriptable page. 762effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // TODO(creis): Move this to RenderFrame. 763f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void NavigateToSwappedOutURL(blink::WebFrame* frame); 7645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If we initiated a navigation, this function will populate |document_state| 7665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // with the navigation information saved in OnNavigate(). 7675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void PopulateDocumentStateFromPending(DocumentState* document_state); 7685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns a new NavigationState populated with the navigation information 7705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // saved in OnNavigate(). 7715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NavigationState* CreateNavigationStateFromPending(); 7725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Processes the command-line flags --enable-viewport, 7742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // --enable-fixed-layout[=w,h] and --enable-pinch. 775a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void ProcessViewLayoutFlags(const base::CommandLine& command_line); 7765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID) 7785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Launch an Android content intent with the given URL. 7795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void LaunchAndroidContentIntent(const GURL& intent_url, size_t request_id); 7805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 7815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sends a reply to the current find operation handling if it was a 7835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // synchronous find request. 7845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SendFindReply(int request_id, 7855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int match_count, 7865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int ordinal, 787f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebRect& selection_rect, 7885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool final_status_update); 7895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Starts nav_state_sync_timer_ if it isn't already running. 7915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void StartNavStateSyncTimerIfNecessary(); 7925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_POSIX) && !defined(OS_MACOSX) 7945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void UpdateFontRenderingFromRendererPrefs(); 7955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 7965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void UpdateFontRenderingFromRendererPrefs() {} 7975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 7985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Update the target url and tell the browser that the target URL has changed. 8005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If |url| is empty, show |fallback_url|. 8015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void UpdateTargetURL(const GURL& url, const GURL& fallback_url); 8025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 803c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Tells the browser what the new list of favicons for the webpage is. 804c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void SendUpdateFaviconURL(const std::vector<FaviconURL>& urls); 805c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 806c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Invoked from DidStopLoading(). Sends the current list of loaded favicons to 807c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // the browser. 808c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void DidStopLoadingIcons(); 809c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 8102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Coordinate conversion ----------------------------------------------------- 8112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 8122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) gfx::RectF ClientRectToPhysicalWindowRect(const gfx::RectF& rect) const; 8132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 8148bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // RenderFrameImpl accessible state ------------------------------------------ 8158bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // The following section is the set of methods that RenderFrameImpl needs 8168bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // to access RenderViewImpl state. The set of state variables are page-level 8178bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // specific, so they don't belong in RenderFrameImpl and should remain in 8188bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // this object. 8198bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) ObserverList<RenderViewObserver>& observers() { 8208bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) return observers_; 8218bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) } 8228bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 8238bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // TODO(nasko): Remove this method when we move to frame proxy objects, since 8248bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // the concept of swapped out will be eliminated. 8258bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) void set_is_swapped_out(bool swapped_out) { 8268bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) is_swapped_out_ = swapped_out; 8278bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) } 8288bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 8298bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) NavigationGesture navigation_gesture() { 8308bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) return navigation_gesture_; 8318bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) } 8328bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) void set_navigation_gesture(NavigationGesture gesture) { 8338bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) navigation_gesture_ = gesture; 8348bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) } 8358bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 8365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // --------------------------------------------------------------------------- 8375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ADDING NEW FUNCTIONS? Please keep private functions alphabetized and put 8385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // it in the same order in the .cc file as it was in the header. 8395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // --------------------------------------------------------------------------- 8405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Settings ------------------------------------------------------------------ 8425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 843c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) WebPreferences webkit_preferences_; 8445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RendererPreferences renderer_preferences_; 8455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HostZoomLevels host_zoom_levels_; 8475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Whether content state (such as form state, scroll position and page 8495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // contents) should be sent to the browser immediately. This is normally 8505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // false, but set to true by some tests. 8515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool send_content_state_immediately_; 8525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Bitwise-ORed set of extra bindings that have been enabled. See 8545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // BindingsPolicy for details. 8555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int enabled_bindings_; 8565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If true, we send IPC messages when |preferred_size_| changes. 8585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool send_preferred_size_changes_; 8595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If non-empty, and |send_preferred_size_changes_| is true, disable drawing 8615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // scroll bars on windows smaller than this size. Used for windows that the 8625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // browser resizes to the size of the content, such as browser action popups. 8635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If a render view is set to the minimum size of its content, webkit may add 8645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // scroll bars. This makes sense for fixed sized windows, but it does not 8655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // make sense when the size of the view was chosen to fit the content. 8665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This setting ensures that no scroll bars are drawn. The size limit exists 8675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // because if the view grows beyond a size known to the browser, scroll bars 8685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // should be drawn. 8695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Size disable_scrollbars_size_limit_; 8705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Loading state ------------------------------------------------------------- 8725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The gesture that initiated the current navigation. 8745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // TODO(nasko): Move to RenderFrame, as this is per-frame state. 8755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NavigationGesture navigation_gesture_; 8765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Used for popups. 8785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool opened_by_user_gesture_; 8795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Whether this RenderView was created by a frame that was suppressing its 8815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // opener. If so, we may want to load pages in a separate process. See 8825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // decidePolicyForNavigation for details. 8835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool opener_suppressed_; 8845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 885f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Whether we must stop creating nested message loops for modal dialogs until 886f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // OnSwapOut is called. This is necessary because modal dialogs have a 887f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // PageGroupLoadDeferrer on the stack that interferes with swapping out. 888f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) bool suppress_dialogs_until_swap_out_; 889f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 8905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Holds state pertaining to a navigation that we initiated. This is held by 8915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the WebDataSource::ExtraData attribute. We use pending_navigation_state_ 8925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // as a temporary holder for the state until the WebDataSource corresponding 8935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // to the new navigation is created. See DidCreateDataSource. 8945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // TODO(nasko): Move to RenderFrame, as this is per-frame state. 8955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_ptr<FrameMsg_Navigate_Params> pending_navigation_params_; 8965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Timer used to delay the updating of nav state (see SyncNavigationState). 8985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::OneShotTimer<RenderViewImpl> nav_state_sync_timer_; 8995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Page IDs ------------------------------------------------------------------ 9015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // See documentation in RenderView. 9025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32 page_id_; 9035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Indicates the ID of the last page that we sent a FrameNavigate to the 9055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // browser for. This is used to determine if the most recent transition 9065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // generated a history entry (less than page_id_), or not (equal to or 9075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // greater than). Note that this will be greater than page_id_ if the user 9085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // goes back. 9095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32 last_page_id_sent_to_browser_; 9105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The next available page ID to use for this RenderView. These IDs are 9125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // specific to a given RenderView and the frames within it. 9135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32 next_page_id_; 9145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The offset of the current item in the history list. 9165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int history_list_offset_; 9175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The RenderView's current impression of the history length. This includes 9195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // any items that have committed in this process, but because of cross-process 9205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // navigations, the history may have some entries that were committed in other 9215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // processes. We won't know about them until the next navigation in this 9225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // process. 9235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int history_list_length_; 9245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 925cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Counter to track how many frames have sent start notifications but not stop 926cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // notifications. TODO(avi): Remove this once DidStartLoading/DidStopLoading 927cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // are gone. 928effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch int frames_in_progress_; 929effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 9305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The list of page IDs for each history item this RenderView knows about. 9315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Some entries may be -1 if they were rendered by other processes or were 9325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // restored from a previous session. This lets us detect attempts to 9335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // navigate to stale entries that have been cropped from our history. 9345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<int32> history_page_ids_; 9355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // UI state ------------------------------------------------------------------ 9375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The state of our target_url transmissions. When we receive a request to 9395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // send a URL to the browser, we set this to TARGET_INFLIGHT until an ACK 9405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // comes back - if a new request comes in before the ACK, we store the new 9415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // URL in pending_target_url_ and set the status to TARGET_PENDING. If an 9425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ACK comes back and we are in TARGET_PENDING, we send the stored URL and 9435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // revert to TARGET_INFLIGHT. 9445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 9455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // We don't need a queue of URLs to send, as only the latest is useful. 9465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enum { 9475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TARGET_NONE, 9485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TARGET_INFLIGHT, // We have a request in-flight, waiting for an ACK 9495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TARGET_PENDING // INFLIGHT + we have a URL waiting to be sent 9505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } target_url_status_; 9515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The URL we show the user in the status bar. We use this to determine if we 9535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // want to send a new one (we do not need to send duplicates). It will be 9545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // equal to either |mouse_over_url_| or |focus_url_|, depending on which was 9555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // updated last. 9565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL target_url_; 9575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The URL the user's mouse is hovering over. 9595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL mouse_over_url_; 9605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The URL that has keyboard focus. 9625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL focus_url_; 9635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The next target URL we want to send to the browser. 9655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL pending_target_url_; 9665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 967f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Indicates whether this view overrides url-based zoom settings. 968f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) bool uses_temporary_zoom_level_; 969f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 9707d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#if defined(OS_ANDROID) 9717d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Cache the old top controls state constraints. Used when updating 9727d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // current value only without altering the constraints. 9737d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) cc::TopControlsState top_controls_constraints_; 9747d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#endif 9757d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 9765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // View ---------------------------------------------------------------------- 9775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Cache the preferred size of the page in order to prevent sending the IPC 9795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // when layout() recomputes but doesn't actually change sizes. 9805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Size preferred_size_; 9815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Used to delay determining the preferred size (to avoid intermediate 9835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // states for the sizes). 9845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::OneShotTimer<RenderViewImpl> check_preferred_size_timer_; 9855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 986a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Bookkeeping to suppress redundant scroll and focus requests for an already 987a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // scrolled and focused editable node. 988a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) bool has_scrolled_focused_editable_node_into_rect_; 989a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) gfx::Rect rect_for_scrolled_focused_editable_node_; 990a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 9915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Helper objects ------------------------------------------------------------ 9925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 993868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) scoped_ptr<RenderFrameImpl> main_render_frame_; 994868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 9955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The next group of objects all implement RenderViewObserver, so are deleted 9965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // along with the RenderView automatically. This is why we just store 9975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // weak references. 9985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The speech recognition dispatcher attached to this view, lazily 10005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // initialized. 10015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SpeechRecognitionDispatcher* speech_recognition_dispatcher_; 10025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // BrowserPluginManager attached to this view; lazily initialized. 10042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_refptr<BrowserPluginManager> browser_plugin_manager_; 10052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 10065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DevToolsAgent* devtools_agent_; 10075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Mouse Lock dispatcher attached to this view. 10095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MouseLockDispatcher* mouse_lock_dispatcher_; 10105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1011a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch scoped_ptr<HistoryController> history_controller_; 1012a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 10135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID) 10145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Android Specific --------------------------------------------------------- 10155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Expected id of the next content intent launched. Used to prevent scheduled 10175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // intents to be launched if aborted. 10185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size_t expected_content_intent_id_; 10195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // List of click-based content detectors. 10215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef std::vector< linked_ptr<ContentDetector> > ContentDetectorList; 10225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContentDetectorList content_detectors_; 10235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // A date/time picker object for date and time related input elements. 10252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<RendererDateTimePicker> date_time_picker_client_; 10265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 10275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1028c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Plugins ------------------------------------------------------------------- 1029c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1030c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // All the currently active plugin delegates for this RenderView; kept so 1031c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // that we can enumerate them to send updates about things like window 1032c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // location or tab focus and visibily. These are non-owning references. 1033c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::set<WebPluginDelegateProxy*> plugin_delegates_; 1034c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1035c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#if defined(OS_WIN) 1036c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // The ID of the focused NPAPI plug-in. 1037c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int focused_plugin_id_; 1038c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif 1039c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 10403240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch#if defined(ENABLE_PLUGINS) 104123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) PepperPluginInstanceImpl* plugin_find_handler_; 104223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 10435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) typedef std::set<PepperPluginInstanceImpl*> PepperPluginSet; 10445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PepperPluginSet active_pepper_instances_; 10455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1046a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // TODO(jam): these belong on RenderFrame, once the browser knows which frame 1047a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // is focused and sends the IPCs which use these to the correct frame. Until 1048a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // then, we must store these on RenderView as that's the one place that knows 1049a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // about all the RenderFrames for a page. 10503240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch 10513240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch // Whether or not the focus is on a PPAPI plugin 10523240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch PepperPluginInstanceImpl* focused_pepper_plugin_; 10533240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch 10543240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch // The plugin instance that received the last mouse event. It is set to NULL 10553240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch // if the last mouse event went to elements other than Pepper plugins. 1056a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // |pepper_last_mouse_event_target_| is not owned by this class. We depend on 1057a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // the RenderFrameImpl to NULL it out when it destructs. 10583240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch PepperPluginInstanceImpl* pepper_last_mouse_event_target_; 10593240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch#endif 10603240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch 10615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Misc ---------------------------------------------------------------------- 10625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The current and pending file chooser completion objects. If the queue is 10645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // nonempty, the first item represents the currently running file chooser 10655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // callback, and the remaining elements are the other file chooser completion 10665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // still waiting to be run (in order). 10675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct PendingFileChooser; 10685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::deque< linked_ptr<PendingFileChooser> > file_chooser_completions_; 10695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The current directory enumeration callback 1071f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) std::map<int, blink::WebFileChooserCompletion*> enumeration_completions_; 10725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int enumeration_completion_id_; 10735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The SessionStorage namespace that we're assigned to has an ID, and that ID 10755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // is passed to us upon creation. WebKit asks for this ID upon first use and 10765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // uses it whenever asking the browser process to allocate new storage areas. 10775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 session_storage_namespace_id_; 10785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Stores edit commands associated to the next key event. 10805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shall be cleared as soon as the next key event is processed. 10815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EditCommands edit_commands_; 10825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // All the registered observers. We expect this list to be small, so vector 10845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // is fine. 10855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ObserverList<RenderViewObserver> observers_; 10865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Wraps the |webwidget_| as a MouseLockDispatcher::LockTarget interface. 10885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<MouseLockDispatcher::LockTarget> webwidget_mouse_lock_target_; 10895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // State associated with the GetWindowSnapshot function. 10912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int next_snapshot_id_; 10923240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch typedef std::map<int, WindowSnapshotCallback> PendingSnapshotMap; 10932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PendingSnapshotMap pending_snapshots_; 10942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 10955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This field stores drag/drop related info for the event that is currently 10965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // being handled. If the current event results in starting a drag/drop 10975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // session, this info is sent to the browser along with other drag/drop info. 10985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DragEventSourceInfo possible_drag_event_info_; 10995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11003240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch // NOTE: stats_collection_observer_ should be the last members because their 11013240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch // constructors call the AddObservers method of RenderViewImpl. 1102868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) scoped_ptr<StatsCollectionObserver> stats_collection_observer_; 11032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 11040529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch typedef std::map<cc::SharedBitmapId, cc::SharedBitmap*> BitmapMap; 11050529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch BitmapMap disambiguation_bitmaps_; 11060529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 11075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // --------------------------------------------------------------------------- 11085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ADDING NEW DATA? Please see if it fits appropriately in one of the above 11095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // sections rather than throwing it randomly at the end. If you're adding a 11105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // bunch of stuff, you should probably create a helper class and put your 11115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // data and methods on that to avoid bloating RenderView more. You can 11125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // use the Observer interface to filter IPC messages and receive frame change 11135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // notifications. 11145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // --------------------------------------------------------------------------- 11155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(RenderViewImpl); 11175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 11185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace content 11205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CONTENT_RENDERER_RENDER_VIEW_IMPL_H_ 1122