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" 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/renderer/render_view.h" 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/renderer/mouse_lock_dispatcher.h" 39868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "content/renderer/render_frame_impl.h" 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/renderer/render_widget.h" 41a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "content/renderer/renderer_date_time_picker.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" 60868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "webkit/common/webpreferences.h" 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/renderer/android/content_detector.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; 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ViewMsg_StopFinding_Params; 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 81a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)namespace base { 82a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class CommandLine; 83a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 84a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ui { 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct SelectedFileInfo; 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace ui 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 89f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace blink { 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebApplicationCacheHost; 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebApplicationCacheHostClient; 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebDOMMessageEvent; 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebDataSource; 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class WebDateTimeChooserCompletion; 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebDragData; 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebGestureEvent; 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebIconURL; 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebImage; 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebPeerConnection00Handler; 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebPeerConnection00HandlerClient; 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebMouseEvent; 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebPeerConnectionHandler; 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebPeerConnectionHandlerClient; 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebSocketStreamHandle; 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebSpeechRecognizer; 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebStorageNamespace; 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebTouchEvent; 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebURLRequest; 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct WebActiveWheelFlingParameters; 1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct WebDateTimeChooserParams; 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct WebFileChooserParams; 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct WebFindOptions; 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct WebMediaPlayerAction; 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct WebPluginAction; 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct WebPoint; 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct WebWindowFeatures; 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID) 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebHitTestResult; 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 123bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdochnamespace webkit_glue { 124bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdochclass WebURLResponseExtraDataImpl; 125bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch} 126bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class BrowserPluginManager; 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DevToolsAgent; 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DocumentState; 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ExternalPopupMenu; 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class FaviconHelper; 133a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochclass HistoryController; 1345c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuclass HistoryEntry; 135a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)class ImageResourceFetcher; 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MediaStreamDispatcher; 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MouseLockDispatcher; 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class NavigationState; 13958e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdochclass PepperPluginInstanceImpl; 140c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass PushMessagingDispatcher; 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RenderViewObserver; 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RenderViewTest; 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RendererAccessibility; 1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class RendererDateTimePicker; 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RendererWebColorChooserImpl; 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SpeechRecognitionDispatcher; 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebPluginDelegateProxy; 148eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochstruct DropData; 149c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)struct FaviconURL; 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct FileChooserParams; 1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct RenderViewImplParams; 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID) 154eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass WebMediaPlayerProxyAndroid; 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// RenderView is an object that manages a WebView object, and provides a 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// communication interface with an embedding application process 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class CONTENT_EXPORT RenderViewImpl 1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : public RenderWidget, 163f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) NON_EXPORTED_BASE(public blink::WebViewClient), 164f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) NON_EXPORTED_BASE(public blink::WebPageSerializerClient), 1652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public RenderView, 1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public base::SupportsWeakPtr<RenderViewImpl> { 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 168d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) // Creates a new RenderView. |opener_id| is the routing ID of the RenderView 1690529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // responsible for creating this RenderView. Note that if the original opener 1700529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // has been closed, |window_was_created_with_opener| will be true and 171cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // |opener_id| will be MSG_ROUTING_NONE. When |swapped_out| is true, the 172cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // |proxy_routing_id| is specified, so a RenderFrameProxy can be created for 173cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // this RenderView's main RenderFrame. 174a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) static RenderViewImpl* Create(int32 opener_id, 1750529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch bool window_was_created_with_opener, 176a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const RendererPreferences& renderer_prefs, 177a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const WebPreferences& webkit_prefs, 178a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int32 routing_id, 179a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int32 main_frame_routing_id, 180a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int32 surface_id, 181a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int64 session_storage_namespace_id, 182a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const base::string16& frame_name, 183a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) bool is_renderer_created, 184a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) bool swapped_out, 185cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) int32 proxy_routing_id, 186a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) bool hidden, 1870529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch bool never_visible, 188a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int32 next_page_id, 189a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const blink::WebScreenInfo& screen_info, 190effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch AccessibilityMode accessibility_mode); 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Used by content_layouttest_support to hook into the creation of 1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // RenderViewImpls. 1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static void InstallCreateHook( 1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) RenderViewImpl* (*create_render_view_impl)(RenderViewImplParams*)); 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns the RenderViewImpl containing the given WebView. 198f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static RenderViewImpl* FromWebView(blink::WebView* webview); 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns the RenderViewImpl for the given routing ID. 2012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static RenderViewImpl* FromRoutingID(int routing_id); 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 203f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) static size_t GetRenderViewCount(); 204f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 2052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // May return NULL when the view is closing. 206f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebView* webview() const; 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int history_list_offset() const { return history_list_offset_; } 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 210c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const WebPreferences& webkit_preferences() const { 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return webkit_preferences_; 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 214a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const RendererPreferences& renderer_preferences() const { 215a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return renderer_preferences_; 216a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 217a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void set_send_content_state_immediately(bool value) { 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) send_content_state_immediately_ = value; 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 222a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) RenderFrameImpl* main_render_frame() { return main_render_frame_.get(); } 223a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 224010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // TODO(jam): move to RenderFrameImpl 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MediaStreamDispatcher* media_stream_dispatcher() { 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return media_stream_dispatcher_; 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 229effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch AccessibilityMode accessibility_mode() { 230effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch return accessibility_mode_; 231effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch } 232effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 233a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) RendererAccessibility* renderer_accessibility() { 234a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return renderer_accessibility_; 235a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 236a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MouseLockDispatcher* mouse_lock_dispatcher() { 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return mouse_lock_dispatcher_; 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 241a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch HistoryController* history_controller() { 242a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch return history_controller_.get(); 243a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch } 244a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 2452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Lazily initialize this view's BrowserPluginManager and return it. 246c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) BrowserPluginManager* GetBrowserPluginManager(); 2472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Functions to add and remove observers for this object. 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void AddObserver(RenderViewObserver* observer); 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void RemoveObserver(RenderViewObserver* observer); 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 252868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // Returns the StatsCollectionObserver associated with this view, or NULL 253868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // if one wasn't created; 254868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) StatsCollectionObserver* GetStatsCollectionObserver() { 255868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) return stats_collection_observer_.get(); 256868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) } 257868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Adds the given file chooser request to the file_chooser_completion_ queue 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // (see that var for more) and requests the chooser be displayed if there are 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // no other waiting items in the queue. 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if the chooser was successfully scheduled. False means we 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // didn't schedule anything. 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool ScheduleFileChooser(const FileChooserParams& params, 265f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebFileChooserCompletion* completion); 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 267a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#if defined(OS_ANDROID) 268a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void DismissDateTimeDialog(); 269a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#endif 270effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#if defined(OS_MACOSX) || defined(OS_ANDROID) 271effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch void DidHideExternalPopupMenu(); 272effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#endif 273effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 274effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch bool is_loading() const { return frames_in_progress_ != 0; } 275effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 276effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch void FrameDidStartLoading(blink::WebFrame* frame); 277effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch void FrameDidStopLoading(blink::WebFrame* frame); 278effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Plugin-related functions -------------------------------------------------- 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2813240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch#if defined(ENABLE_PLUGINS) 28223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) // Get/set the plugin which will be used as to handle document find requests. 28323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) void set_plugin_find_handler(PepperPluginInstanceImpl* plugin) { 28423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) plugin_find_handler_ = plugin; 28523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) } 28623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) PepperPluginInstanceImpl* plugin_find_handler() { 28723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) return plugin_find_handler_; 28823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) } 28923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 290a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) PepperPluginInstanceImpl* focused_pepper_plugin() { 291a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return focused_pepper_plugin_; 292a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 293a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) PepperPluginInstanceImpl* pepper_last_mouse_event_target() { 294a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return pepper_last_mouse_event_target_; 295a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 296a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void set_pepper_last_mouse_event_target(PepperPluginInstanceImpl* plugin) { 297a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) pepper_last_mouse_event_target_ = plugin; 298a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) || defined(OS_WIN) 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Informs the render view that the given plugin has gained or lost focus. 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void PluginFocusChanged(bool focused, int plugin_id); 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Starts plugin IME. 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void StartPluginIme(); 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Indicates that the given instance has been created. 3115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void PepperInstanceCreated(PepperPluginInstanceImpl* instance); 3125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 3135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Indicates that the given instance is being destroyed. This is called from 3145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // the destructor, so it's important that the instance is not dereferenced 3155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // from this call. 3165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void PepperInstanceDeleted(PepperPluginInstanceImpl* instance); 3175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 3185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Notification that the given plugin is focused or unfocused. 3195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void PepperFocusChanged(PepperPluginInstanceImpl* instance, bool focused); 3205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void RegisterPluginDelegate(WebPluginDelegateProxy* delegate); 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void UnregisterPluginDelegate(WebPluginDelegateProxy* delegate); 323bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#endif // ENABLE_PLUGINS 324bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void TransferActiveWheelFlingAnimation( 326f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebActiveWheelFlingParameters& params); 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if the focused element is editable text from the perspective 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // of IME support (also used for on-screen keyboard). Works correctly inside 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // supported PPAPI plug-ins. 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool HasIMETextFocus(); 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Callback for use with GetWindowSnapshot. 3342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) typedef base::Callback<void( 3352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const gfx::Size&, const std::vector<unsigned char>&)> 3362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WindowSnapshotCallback; 3372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void GetWindowSnapshot(const WindowSnapshotCallback& callback); 3392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Dispatches the current navigation state to the browser. Called on a 3412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // periodic timer so we don't send too many messages. 3422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void SyncNavigationState(); 3432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns the length of the session history of this RenderView. Note that 3452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // this only coincides with the actual length of the session history if this 3462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // RenderView is the currently active RenderView of a WebContents. 3472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) unsigned GetLocalSessionHistoryLengthForTesting() const; 3482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Invokes OnSetFocus and marks the widget as active depending on the value 3502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // of |enable|. This is used for layout tests that need to control the focus 3512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // synchronously from the renderer. 3522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void SetFocusAndActivateForTesting(bool enable); 3532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Change the device scale factor and force the compositor to resize. 3552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void SetDeviceScaleFactorForTesting(float factor); 3562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 357cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Change screen orientation and force the compositor to resize. 358cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void SetScreenOrientationForTesting( 359cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const blink::WebScreenOrientationType& orientation); 360cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 361010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Change the device ICC color profile while running a layout test. 362010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) void SetDeviceColorProfileForTesting(const std::vector<char>& color_profile); 363010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 3641e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // Used to force the size of a window when running layout tests. 3651e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) void ForceResizeForTesting(const gfx::Size& new_size); 3661e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 3671e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) void UseSynchronousResizeModeForTesting(bool enable); 3681e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 36990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Control autoresize mode. 37090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void EnableAutoResizeForTesting(const gfx::Size& min_size, 37190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const gfx::Size& max_size); 37290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void DisableAutoResizeForTesting(const gfx::Size& new_size); 37390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // IPC::Listener implementation ---------------------------------------------- 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE; 3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 378f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // blink::WebWidgetClient implementation ------------------------------------ 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Most methods are handled by RenderWidget. 3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void didFocus(); 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void didBlur(); 383f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void show(blink::WebNavigationPolicy policy); 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void runModal(); 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool enterFullScreen(); 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void exitFullScreen(); 3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool requestPointerLock(); 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void requestPointerUnlock(); 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool isPointerLocked(); 390f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void didHandleGestureEvent(const blink::WebGestureEvent& event, 3912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool event_cancelled) OVERRIDE; 392a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch virtual void initializeLayerTreeView() OVERRIDE; 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 394f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // blink::WebViewClient implementation -------------------------------------- 395f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 396c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual blink::WebView* createView(blink::WebLocalFrame* creator, 397c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const blink::WebURLRequest& request, 398c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const blink::WebWindowFeatures& features, 399c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const blink::WebString& frame_name, 400c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch blink::WebNavigationPolicy policy, 401c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch bool suppress_opener); 402f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebWidget* createPopupMenu(blink::WebPopupType popup_type); 403f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebExternalPopupMenu* createExternalPopupMenu( 404f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebPopupMenuInfo& popup_menu_info, 405f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebExternalPopupMenuClient* popup_menu_client); 406f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebStorageNamespace* createSessionStorageNamespace(); 407c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void printPage(blink::WebLocalFrame* frame); 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool enumerateChosenDirectory( 409f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebString& path, 410f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebFileChooserCompletion* chooser_completion); 4112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void didCancelCompositionOnSelectionChange(); 4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool handleCurrentKeyboardEvent(); 4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool runFileChooser( 414f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebFileChooserParams& params, 415f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebFileChooserCompletion* chooser_completion); 4165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void showValidationMessage(const blink::WebRect& anchor_in_root_view, 4175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const blink::WebString& main_text, 4185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const blink::WebString& sub_text, 4195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) blink::WebTextDirection hint) OVERRIDE; 4205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void hideValidationMessage() OVERRIDE; 4215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void moveValidationMessage( 4225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const blink::WebRect& anchor_in_root_view) OVERRIDE; 423f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void setStatusText(const blink::WebString& text); 424f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void setMouseOverURL(const blink::WebURL& url); 425f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void setKeyboardFocusURL(const blink::WebURL& url); 426c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void startDragging(blink::WebLocalFrame* frame, 427f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebDragData& data, 428f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebDragOperationsMask mask, 429f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebImage& image, 430f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebPoint& imageOffset); 4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool acceptsLoadDrops(); 4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void focusNext(); 4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void focusPrevious(); 434f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void focusedNodeChanged(const blink::WebNode& node); 4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void didUpdateLayout(); 4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID) 4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool didTapMultipleTargets( 438f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebGestureEvent& event, 439f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebVector<blink::WebRect>& target_rects); 4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 4410529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch virtual blink::WebString acceptLanguages(); 4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void navigateBackForwardSoon(int offset); 4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int historyBackListCount(); 4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int historyForwardListCount(); 44558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual void postAccessibilityEvent( 446f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebAXObject& obj, blink::WebAXEvent event); 447f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void didUpdateInspectorSetting(const blink::WebString& key, 448f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebString& value); 449f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebSpeechRecognizer* speechRecognizer(); 4505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void zoomLimitsChanged(double minimum_level, double maximum_level); 4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void zoomLevelChanged(); 45258e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch virtual double zoomLevelToZoomFactor(double zoom_level) const; 45358e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch virtual double zoomFactorToZoomLevel(double factor) const; 454f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void registerProtocolHandler(const blink::WebString& scheme, 4555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const blink::WebURL& base_url, 4565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const blink::WebURL& url, 457f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebString& title); 458f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebPageVisibilityState visibilityState() const; 459c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual blink::WebPushClient* webPushClient(); 4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void draggableRegionsChanged(); 4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID) 463f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void scheduleContentIntent(const blink::WebURL& intent); 4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void cancelScheduledContentIntents(); 465f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebContentDetectionResult detectContentAround( 466f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebHitTestResult& touch_hit); 4672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Only used on Android since all other platforms implement 4692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // date and time input fields using MULTIPLE_FIELDS_UI 470f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual bool openDateTimeChooser(const blink::WebDateTimeChooserParams&, 471f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebDateTimeChooserCompletion*); 472f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void didScrollWithKeyboard(const blink::WebSize& delta); 4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 475f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // blink::WebPageSerializerClient implementation ---------------------------- 4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void didSerializeDataForFrame( 478f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebURL& frame_url, 479f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebCString& data, 4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PageSerializationStatus status) OVERRIDE; 4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // RenderView implementation ------------------------------------------------- 4835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool Send(IPC::Message* message) OVERRIDE; 485a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual RenderFrame* GetMainRenderFrame() OVERRIDE; 4865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int GetRoutingID() const OVERRIDE; 4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int GetPageId() const OVERRIDE; 4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual gfx::Size GetSize() const OVERRIDE; 489c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual WebPreferences& GetWebkitPreferences() OVERRIDE; 490c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void SetWebkitPreferences(const WebPreferences& preferences) OVERRIDE; 491f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebView* GetWebView() OVERRIDE; 492a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual blink::WebElement GetFocusedElement() const OVERRIDE; 493f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual bool IsEditableNode(const blink::WebNode& node) const OVERRIDE; 4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool ShouldDisplayScrollbars(int width, int height) const OVERRIDE; 4955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int GetEnabledBindings() const OVERRIDE; 4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool GetContentStateImmediately() const OVERRIDE; 497f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual blink::WebPageVisibilityState GetVisibilityState() const OVERRIDE; 498ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch virtual void DidStartLoading() OVERRIDE; 499ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch virtual void DidStopLoading() OVERRIDE; 5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Repaint(const gfx::Size& size) OVERRIDE; 5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetEditCommandForNextKeyEvent(const std::string& name, 5025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& value) OVERRIDE; 5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ClearEditCommands() OVERRIDE; 504f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual SSLStatus GetSSLStatusOfFrame(blink::WebFrame* frame) const OVERRIDE; 5054e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual const std::string& GetAcceptLanguages() const OVERRIDE; 5062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_ANDROID) 50790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual void UpdateTopControlsState(TopControlsState constraints, 50890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) TopControlsState current, 50990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) bool animate) OVERRIDE; 5102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 511f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) bool uses_temporary_zoom_level() const { return uses_temporary_zoom_level_; } 5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Please do not add your stuff randomly to the end here. If there is an 5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // appropriate section, add it there. If not, there are some random functions 5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // nearer to the top you can add it to. 5165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Cannot use std::set unfortunately since linked_ptr<> does not support 5185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // operator<. 519a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) typedef std::vector<linked_ptr<ImageResourceFetcher> > 5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ImageResourceFetcherList; 5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 5235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // RenderWidget overrides: 52446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) virtual void OnClose() OVERRIDE; 5255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Close() OVERRIDE; 52690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual void OnResize(const ViewMsg_Resize_Params& params) OVERRIDE; 5275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DidInitiatePaint() OVERRIDE; 5285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DidFlushPaint() OVERRIDE; 5295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual gfx::Vector2d GetScrollOffset() OVERRIDE; 5305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DidHandleKeyEvent() OVERRIDE; 5315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool WillHandleMouseEvent( 532f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebMouseEvent& event) OVERRIDE; 5335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool WillHandleGestureEvent( 534f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebGestureEvent& event) OVERRIDE; 535f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void DidHandleMouseEvent(const blink::WebMouseEvent& event) OVERRIDE; 536f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void DidHandleTouchEvent(const blink::WebTouchEvent& event) OVERRIDE; 5372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool HasTouchEventHandlersAt(const gfx::Point& point) const OVERRIDE; 5385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnSetFocus(bool enable) OVERRIDE; 5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnWasHidden() OVERRIDE; 5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnWasShown(bool needs_repainting) OVERRIDE; 5412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual GURL GetURLForGraphicsContext3D() OVERRIDE; 5425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnImeSetComposition( 543a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& text, 544f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const std::vector<blink::WebCompositionUnderline>& underlines, 5455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int selection_start, 5465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int selection_end) OVERRIDE; 547a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual void OnImeConfirmComposition(const base::string16& text, 54858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const gfx::Range& replacement_range, 5497dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch bool keep_selection) OVERRIDE; 5502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void SetDeviceScaleFactor(float device_scale_factor) OVERRIDE; 551f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual bool SetDeviceColorProfile( 552f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const std::vector<char>& color_profile) OVERRIDE; 553010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void OnOrientationChange() OVERRIDE; 5545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ui::TextInputType GetTextInputType() OVERRIDE; 5555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void GetSelectionBounds(gfx::Rect* start, gfx::Rect* end) OVERRIDE; 556a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#if defined(OS_MACOSX) || defined(USE_AURA) 5575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void GetCompositionCharacterBounds( 5585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<gfx::Rect>* character_bounds) OVERRIDE; 55958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual void GetCompositionRange(gfx::Range* range) OVERRIDE; 5607dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#endif 5615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool CanComposeInline() OVERRIDE; 5622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void DidCommitCompositorFrame() OVERRIDE; 563f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void InstrumentWillBeginFrame(int frame_id) OVERRIDE; 5642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void InstrumentDidBeginFrame() OVERRIDE; 5652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void InstrumentDidCancelFrame() OVERRIDE; 5662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void InstrumentWillComposite() OVERRIDE; 5672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected: 5692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) explicit RenderViewImpl(RenderViewImplParams* params); 5702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5715c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu void Initialize(RenderViewImplParams* params); 5724e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual void SetScreenMetricsEmulationParameters( 573f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) float device_scale_factor, 574f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const gfx::Point& root_layer_offset, 575f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) float root_layer_scale) OVERRIDE; 5762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Do not delete directly. This class is reference counted. 5782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~RenderViewImpl(); 5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // For unit tests. 5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) friend class ExternalPopupMenuTest; 5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) friend class PepperDeviceTest; 5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) friend class RendererAccessibilityTest; 5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) friend class RenderViewTest; 5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 587bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch // TODO(nasko): Temporarily friend RenderFrameImpl, so we don't duplicate 588bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch // utility functions needed in both classes, while we move frame specific 589bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch // code away from this class. 590bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch friend class RenderFrameImpl; 591bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(ExternalPopupMenuRemoveTest, RemoveOnChange); 5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(ExternalPopupMenuTest, NormalCase); 5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(ExternalPopupMenuTest, ShowPopupThenNavigate); 5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, DecideNavigationPolicyForWebUI); 5965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, 597c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DidFailProvisionalLoadWithErrorForError); 598c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, 599c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DidFailProvisionalLoadWithErrorForCancellation); 600c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, 6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DontIgnoreBackAfterNavEntryLimit); 6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, ImeComposition); 6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, InsertCharacters); 6045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, JSBlockSentAfterPageLoad); 6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, LastCommittedUpdateState); 6065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnHandleKeyboardEvent); 6077d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnImeTypeChanged); 6085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnNavStateChanged); 609effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnSetAccessibilityMode); 6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnSetTextDirection); 6115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnUpdateWebPreferences); 6125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, 6135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetEditableSelectionAndComposition); 6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, StaleNavigationsIgnored); 6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, UpdateTargetURLWithInvalidURL); 6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, 6175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCompositionCharacterBoundsTest); 6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, OnNavigationHttpPost); 6195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, 6205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) DecideNavigationPolicyHandlesAllTopLevel); 6215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) 6225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewTest, MacTestCmdUp); 6235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 6245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, SetHistoryLengthAndPrune); 6255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, ZoomLimit); 6262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, NavigateFrame); 627868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, BasicRenderFrame); 6289ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, TextInputTypeWithPepper); 629f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, 630f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) MessageOrderInDidChangeSelection); 631a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, SendCandidateWindowEvents); 6324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(SuppressErrorPageTest, Suppresses); 6334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) FRIEND_TEST_ALL_PREFIXES(SuppressErrorPageTest, DoesNotSuppress); 6345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef std::map<GURL, double> HostZoomLevels; 6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enum ErrorPageType { 6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DNS_ERROR, 6395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HTTP_404, 6405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CONNECTION_ERROR, 6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6430529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // Old WebFrameClient implementations ---------------------------------------- 6440529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 6450529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // RenderViewImpl used to be a WebFrameClient, but now RenderFrameImpl is the 6460529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // WebFrameClient. However, many implementations of WebFrameClient methods 6470529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // still live here and are called from RenderFrameImpl. These implementations 6480529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // are to be moved to RenderFrameImpl <http://crbug.com/361761>. 6490529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 6500529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch void didCreateDataSource(blink::WebLocalFrame* frame, 6510529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch blink::WebDataSource* datasource); 652cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void didClearWindowObject(blink::WebLocalFrame* frame); 6530529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch void didChangeIcon(blink::WebLocalFrame*, blink::WebIconURL::Type); 6540529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch void didUpdateCurrentHistoryItem(blink::WebLocalFrame* frame); 6550529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch void didChangeScrollOffset(blink::WebLocalFrame* frame); 6560529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 6575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) static bool IsReload(const FrameMsg_Navigate_Params& params); 658bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 659bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch static Referrer GetReferrerFromRequest( 660f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebFrame* frame, 661f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebURLRequest& request); 662bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 663a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) static WindowOpenDisposition NavigationPolicyToDisposition( 664a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) blink::WebNavigationPolicy policy); 665bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 666f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void UpdateSessionHistory(blink::WebFrame* frame); 6675c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu void SendUpdateState(HistoryEntry* entry); 6685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sends a message and runs a nested message loop. 6705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool SendAndRunNestedMessageLoop(IPC::SyncMessage* message); 6715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Called when the "pinned to left/right edge" state needs to be updated. 673f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void UpdateScrollState(blink::WebFrame* frame); 6745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // IPC message handlers ------------------------------------------------------ 6765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 6775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The documentation for these functions should be in 678c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // content/common/*_messages.h for the message that the function is handling. 679c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void OnExecuteEditCommand(const std::string& name, const std::string& value); 680c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void OnMoveCaret(const gfx::Point& point); 681c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void OnScrollFocusedEditableNodeIntoRect(const gfx::Rect& rect); 682c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void OnSetEditCommandsForNextKeyEvent(const EditCommands& edit_commands); 6832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnAllowBindings(int enabled_bindings_flags); 6845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnAllowScriptToClose(bool script_can_close); 6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnCancelDownload(int32 download_id); 686a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void OnClearFocusedElement(); 6875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnClosePage(); 688d7582f30d3b217d8144db8429955efdca442508fBo Liu void OnShowContextMenu(ui::MenuSourceType source_type, 689d7582f30d3b217d8144db8429955efdca442508fBo Liu const gfx::Point& location); 6905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnCopyImageAt(int x, int y); 691010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) void OnSaveImageAt(int x, int y); 6925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnDeterminePageLanguage(); 6935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnDisableScrollbarsForSmallWindows( 6945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Size& disable_scrollbars_size_limit); 695c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch void OnDragSourceEnded(const gfx::Point& client_point, 696c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const gfx::Point& screen_point, 697c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch blink::WebDragOperation drag_operation); 6985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnDragSourceSystemDragEnded(); 6995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnDragTargetDrop(const gfx::Point& client_pt, 7005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Point& screen_pt, 7015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int key_modifiers); 702eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void OnDragTargetDragEnter(const DropData& drop_data, 7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Point& client_pt, 7045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Point& screen_pt, 705f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebDragOperationsMask operations_allowed, 7065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int key_modifiers); 7075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnDragTargetDragLeave(); 7085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnDragTargetDragOver(const gfx::Point& client_pt, 7095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Point& screen_pt, 710f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebDragOperationsMask operations_allowed, 7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int key_modifiers); 7125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnEnablePreferredSizeChangedMode(); 7135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnEnableAutoResize(const gfx::Size& min_size, const gfx::Size& max_size); 7145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnDisableAutoResize(const gfx::Size& new_size); 7152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnEnumerateDirectoryResponse(int id, 7162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::vector<base::FilePath>& paths); 7175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnFileChooserResponse( 7185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::vector<ui::SelectedFileInfo>& files); 719a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void OnFind(int request_id, 720a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16&, 721a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const blink::WebFindOptions&); 7225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnGetAllSavableResourceLinksForCurrentPage(const GURL& page_url); 7235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnGetSerializedHtmlDataForCurrentPageWithLocalLinks( 7245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::vector<GURL>& links, 7252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::vector<base::FilePath>& local_paths, 7262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& local_directory_name); 7275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnMediaPlayerActionAt(const gfx::Point& location, 728f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebMediaPlayerAction& action); 7295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnPluginActionAt(const gfx::Point& location, 730f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebPluginAction& action); 7315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnMoveOrResizeStarted(); 7325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnPostMessageEvent(const ViewMsg_PostMessage_Params& params); 7330529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch void OnReleaseDisambiguationPopupBitmap(const cc::SharedBitmapId& id); 7345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnResetPageEncodingToDefault(); 735effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch void OnSetAccessibilityMode(AccessibilityMode new_mode); 7365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnSetActive(bool active); 737cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void OnSetBackgroundOpaque(bool opaque); 738c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void OnExitFullscreen(); 7392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnSetHistoryLengthAndPrune(int history_length, int32 minimum_page_id); 7405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnSetInitialFocus(bool reverse); 7415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnSetPageEncoding(const std::string& encoding_name); 7425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnSetRendererPrefs(const RendererPreferences& renderer_prefs); 743c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void OnSetWebUIProperty(const std::string& name, const std::string& value); 7442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnSetZoomLevelForLoadingURL(const GURL& url, double zoom_level); 745f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) void OnSetZoomLevelForView(bool uses_temporary_zoom_level, double level); 7465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnStop(); 7475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnStopFinding(StopFindAction action); 748f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void OnSuppressDialogsUntilSwapOut(); 7495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnThemeChanged(); 7505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnUpdateTargetURLAck(); 751c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void OnUpdateWebPreferences(const WebPreferences& prefs); 7525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnZoom(PageZoom zoom); 7535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnEnableViewSourceMode(); 7542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnDisownOpener(); 7551e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) void OnWindowSnapshotCompleted(const int snapshot_id, 7561e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) const gfx::Size& size, const std::vector<unsigned char>& png); 757cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void OnSelectWordAroundCaret(); 7585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID) 7595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnActivateNearestFindResult(int request_id, float x, float y); 7605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnFindMatchRects(int current_version); 7615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnSelectPopupMenuItems(bool canceled, 7625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::vector<int>& selected_indices); 7635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnUndoScrollFocusedEditableNodeIntoRect(); 764c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void OnUpdateTopControlsState(bool enable_hiding, 765c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool enable_showing, 766c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool animate); 7675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void OnExtractSmartClipData(const gfx::Rect& rect); 7687a872e45f2720a90687c5571bd9562aa504f96e5Tao Bai void OnPauseVideoCaptureStream(); 7697a872e45f2720a90687c5571bd9562aa504f96e5Tao Bai void OnResumeVideoCaptureStream(); 7705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(OS_MACOSX) 771a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void OnPluginImeCompositionCompleted(const base::string16& text, 772a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) int plugin_id); 7732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnSelectPopupMenuItem(int selected_index); 7745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnSetInLiveResize(bool in_live_resize); 7755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnSetWindowVisibility(bool visible); 7765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnWindowFrameChanged(const gfx::Rect& window_frame, 7775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Rect& view_frame); 7785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 7795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Adding a new message handler? Please add it in alphabetical order above 7815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // and put it in the same position in the .cc file. 7825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Misc private functions ---------------------------------------------------- 7845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Check whether the preferred size has changed. 7855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void CheckPreferredSize(); 7865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This callback is triggered when DownloadFavicon completes, either 7885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // succesfully or with a failure. See DownloadFavicon for more 7895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // details. 790a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) void DidDownloadFavicon(ImageResourceFetcher* fetcher, 7915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const SkBitmap& image); 7925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Requests to download a favicon image. When done, the RenderView is notified 7945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // by way of DidDownloadFavicon. Returns true if the request was successfully 7955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // started, false otherwise. id is used to uniquely identify the request and 7965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // passed back to the DidDownloadFavicon method. If the image has multiple 7975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // frames, the frame whose size is image_size is returned. If the image 7985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // doesn't have a frame at the specified size, the first is returned. 7995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool DownloadFavicon(int id, const GURL& image_url, int image_size); 8005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 80123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) // Called to get the WebPlugin to handle find requests in the document. 80223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) // Returns NULL if there is no such WebPlugin. 80323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) blink::WebPlugin* GetWebPluginForFind(); 8045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns true if the |params| navigation is to an entry that has been 8065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // cropped due to a recent navigation the browser did not know about. 8075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool IsBackForwardToStaleEntry(const FrameMsg_Navigate_Params& params, 8085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool is_reload); 8095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 810effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // Make the given |frame| show an empty, unscriptable page. 811effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // TODO(creis): Move this to RenderFrame. 812f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void NavigateToSwappedOutURL(blink::WebFrame* frame); 8135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If we initiated a navigation, this function will populate |document_state| 8155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // with the navigation information saved in OnNavigate(). 8165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void PopulateDocumentStateFromPending(DocumentState* document_state); 8175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns a new NavigationState populated with the navigation information 8195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // saved in OnNavigate(). 8205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NavigationState* CreateNavigationStateFromPending(); 8215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Processes the command-line flags --enable-viewport, 8232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // --enable-fixed-layout[=w,h] and --enable-pinch. 824a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void ProcessViewLayoutFlags(const base::CommandLine& command_line); 8255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID) 8275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Launch an Android content intent with the given URL. 8285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void LaunchAndroidContentIntent(const GURL& intent_url, size_t request_id); 8295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 8305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sends a reply to the current find operation handling if it was a 8325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // synchronous find request. 8335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SendFindReply(int request_id, 8345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int match_count, 8355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int ordinal, 836f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebRect& selection_rect, 8375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool final_status_update); 8385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Starts nav_state_sync_timer_ if it isn't already running. 8405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void StartNavStateSyncTimerIfNecessary(); 8415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_POSIX) && !defined(OS_MACOSX) 8435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void UpdateFontRenderingFromRendererPrefs(); 8445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 8455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void UpdateFontRenderingFromRendererPrefs() {} 8465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 8475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Update the target url and tell the browser that the target URL has changed. 8495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If |url| is empty, show |fallback_url|. 8505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void UpdateTargetURL(const GURL& url, const GURL& fallback_url); 8515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 852c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Tells the browser what the new list of favicons for the webpage is. 853c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void SendUpdateFaviconURL(const std::vector<FaviconURL>& urls); 854c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 855c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Invoked from DidStopLoading(). Sends the current list of loaded favicons to 856c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // the browser. 857c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void DidStopLoadingIcons(); 858c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 8592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Coordinate conversion ----------------------------------------------------- 8602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 8612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) gfx::RectF ClientRectToPhysicalWindowRect(const gfx::RectF& rect) const; 8622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 8638bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // RenderFrameImpl accessible state ------------------------------------------ 8648bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // The following section is the set of methods that RenderFrameImpl needs 8658bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // to access RenderViewImpl state. The set of state variables are page-level 8668bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // specific, so they don't belong in RenderFrameImpl and should remain in 8678bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // this object. 8688bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) ObserverList<RenderViewObserver>& observers() { 8698bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) return observers_; 8708bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) } 8718bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 8728bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // TODO(nasko): Remove this method when we move to frame proxy objects, since 8738bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // the concept of swapped out will be eliminated. 8748bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) void set_is_swapped_out(bool swapped_out) { 8758bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) is_swapped_out_ = swapped_out; 8768bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) } 8778bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 8788bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) NavigationGesture navigation_gesture() { 8798bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) return navigation_gesture_; 8808bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) } 8818bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) void set_navigation_gesture(NavigationGesture gesture) { 8828bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) navigation_gesture_ = gesture; 8838bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) } 8848bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 8855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // --------------------------------------------------------------------------- 8865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ADDING NEW FUNCTIONS? Please keep private functions alphabetized and put 8875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // it in the same order in the .cc file as it was in the header. 8885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // --------------------------------------------------------------------------- 8895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Settings ------------------------------------------------------------------ 8915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 892c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) WebPreferences webkit_preferences_; 8935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RendererPreferences renderer_preferences_; 8945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HostZoomLevels host_zoom_levels_; 8965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Whether content state (such as form state, scroll position and page 8985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // contents) should be sent to the browser immediately. This is normally 8995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // false, but set to true by some tests. 9005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool send_content_state_immediately_; 9015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Bitwise-ORed set of extra bindings that have been enabled. See 9035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // BindingsPolicy for details. 9045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int enabled_bindings_; 9055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If true, we send IPC messages when |preferred_size_| changes. 9075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool send_preferred_size_changes_; 9085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If non-empty, and |send_preferred_size_changes_| is true, disable drawing 9105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // scroll bars on windows smaller than this size. Used for windows that the 9115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // browser resizes to the size of the content, such as browser action popups. 9125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If a render view is set to the minimum size of its content, webkit may add 9135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // scroll bars. This makes sense for fixed sized windows, but it does not 9145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // make sense when the size of the view was chosen to fit the content. 9155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This setting ensures that no scroll bars are drawn. The size limit exists 9165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // because if the view grows beyond a size known to the browser, scroll bars 9175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // should be drawn. 9185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Size disable_scrollbars_size_limit_; 9195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Loading state ------------------------------------------------------------- 9215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The gesture that initiated the current navigation. 9235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // TODO(nasko): Move to RenderFrame, as this is per-frame state. 9245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NavigationGesture navigation_gesture_; 9255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Used for popups. 9275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool opened_by_user_gesture_; 9285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Whether this RenderView was created by a frame that was suppressing its 9305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // opener. If so, we may want to load pages in a separate process. See 9315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // decidePolicyForNavigation for details. 9325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool opener_suppressed_; 9335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 934f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Whether we must stop creating nested message loops for modal dialogs until 935f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // OnSwapOut is called. This is necessary because modal dialogs have a 936f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // PageGroupLoadDeferrer on the stack that interferes with swapping out. 937f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) bool suppress_dialogs_until_swap_out_; 938f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 9395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Holds state pertaining to a navigation that we initiated. This is held by 9405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the WebDataSource::ExtraData attribute. We use pending_navigation_state_ 9415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // as a temporary holder for the state until the WebDataSource corresponding 9425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // to the new navigation is created. See DidCreateDataSource. 9435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // TODO(nasko): Move to RenderFrame, as this is per-frame state. 9445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_ptr<FrameMsg_Navigate_Params> pending_navigation_params_; 9455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Timer used to delay the updating of nav state (see SyncNavigationState). 9475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::OneShotTimer<RenderViewImpl> nav_state_sync_timer_; 9485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Page IDs ------------------------------------------------------------------ 9505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // See documentation in RenderView. 9515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32 page_id_; 9525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Indicates the ID of the last page that we sent a FrameNavigate to the 9545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // browser for. This is used to determine if the most recent transition 9555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // generated a history entry (less than page_id_), or not (equal to or 9565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // greater than). Note that this will be greater than page_id_ if the user 9575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // goes back. 9585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32 last_page_id_sent_to_browser_; 9595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The next available page ID to use for this RenderView. These IDs are 9615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // specific to a given RenderView and the frames within it. 9625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32 next_page_id_; 9635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The offset of the current item in the history list. 9655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int history_list_offset_; 9665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The RenderView's current impression of the history length. This includes 9685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // any items that have committed in this process, but because of cross-process 9695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // navigations, the history may have some entries that were committed in other 9705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // processes. We won't know about them until the next navigation in this 9715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // process. 9725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int history_list_length_; 9735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 974cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Counter to track how many frames have sent start notifications but not stop 975cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // notifications. TODO(avi): Remove this once DidStartLoading/DidStopLoading 976cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // are gone. 977effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch int frames_in_progress_; 978effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 9795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The list of page IDs for each history item this RenderView knows about. 9805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Some entries may be -1 if they were rendered by other processes or were 9815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // restored from a previous session. This lets us detect attempts to 9825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // navigate to stale entries that have been cropped from our history. 9835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<int32> history_page_ids_; 9845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // UI state ------------------------------------------------------------------ 9865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The state of our target_url transmissions. When we receive a request to 9885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // send a URL to the browser, we set this to TARGET_INFLIGHT until an ACK 9895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // comes back - if a new request comes in before the ACK, we store the new 9905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // URL in pending_target_url_ and set the status to TARGET_PENDING. If an 9915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ACK comes back and we are in TARGET_PENDING, we send the stored URL and 9925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // revert to TARGET_INFLIGHT. 9935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 9945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // We don't need a queue of URLs to send, as only the latest is useful. 9955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enum { 9965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TARGET_NONE, 9975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TARGET_INFLIGHT, // We have a request in-flight, waiting for an ACK 9985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TARGET_PENDING // INFLIGHT + we have a URL waiting to be sent 9995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } target_url_status_; 10005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The URL we show the user in the status bar. We use this to determine if we 10025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // want to send a new one (we do not need to send duplicates). It will be 10035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // equal to either |mouse_over_url_| or |focus_url_|, depending on which was 10045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // updated last. 10055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL target_url_; 10065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The URL the user's mouse is hovering over. 10085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL mouse_over_url_; 10095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The URL that has keyboard focus. 10115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL focus_url_; 10125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The next target URL we want to send to the browser. 10145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL pending_target_url_; 10155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1016f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Indicates whether this view overrides url-based zoom settings. 1017f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) bool uses_temporary_zoom_level_; 1018f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 10197d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#if defined(OS_ANDROID) 10207d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Cache the old top controls state constraints. Used when updating 10217d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // current value only without altering the constraints. 10227d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) cc::TopControlsState top_controls_constraints_; 10237d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#endif 10247d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 10255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // View ---------------------------------------------------------------------- 10265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Cache the preferred size of the page in order to prevent sending the IPC 10285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // when layout() recomputes but doesn't actually change sizes. 10295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Size preferred_size_; 10305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Used to delay determining the preferred size (to avoid intermediate 10325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // states for the sizes). 10335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::OneShotTimer<RenderViewImpl> check_preferred_size_timer_; 10345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1035a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Bookkeeping to suppress redundant scroll and focus requests for an already 1036a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // scrolled and focused editable node. 1037a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) bool has_scrolled_focused_editable_node_into_rect_; 1038a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) gfx::Rect rect_for_scrolled_focused_editable_node_; 1039a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 10405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Helper objects ------------------------------------------------------------ 10415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1042868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) scoped_ptr<RenderFrameImpl> main_render_frame_; 1043868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 10445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The next group of objects all implement RenderViewObserver, so are deleted 10455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // along with the RenderView automatically. This is why we just store 10465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // weak references. 10475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1048c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // The push messaging dispatcher attached to this view, lazily initialized. 1049c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch PushMessagingDispatcher* push_messaging_dispatcher_; 1050c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 10515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The speech recognition dispatcher attached to this view, lazily 10525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // initialized. 10535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SpeechRecognitionDispatcher* speech_recognition_dispatcher_; 10545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // MediaStream dispatcher attached to this view; lazily initialized. 10565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MediaStreamDispatcher* media_stream_dispatcher_; 10575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // BrowserPluginManager attached to this view; lazily initialized. 10592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_refptr<BrowserPluginManager> browser_plugin_manager_; 10602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 10615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DevToolsAgent* devtools_agent_; 10625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The current accessibility mode. 1064effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch AccessibilityMode accessibility_mode_; 10655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Only valid if |accessibility_mode_| is anything other than 10675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // AccessibilityModeOff. 10685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RendererAccessibility* renderer_accessibility_; 10695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Mouse Lock dispatcher attached to this view. 10715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MouseLockDispatcher* mouse_lock_dispatcher_; 10725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1073a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch scoped_ptr<HistoryController> history_controller_; 1074a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 10755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID) 10765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Android Specific --------------------------------------------------------- 10775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Expected id of the next content intent launched. Used to prevent scheduled 10795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // intents to be launched if aborted. 10805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size_t expected_content_intent_id_; 10815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // List of click-based content detectors. 10835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef std::vector< linked_ptr<ContentDetector> > ContentDetectorList; 10845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContentDetectorList content_detectors_; 10855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // A date/time picker object for date and time related input elements. 10872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<RendererDateTimePicker> date_time_picker_client_; 10885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 10895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1090c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Plugins ------------------------------------------------------------------- 1091c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1092c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // All the currently active plugin delegates for this RenderView; kept so 1093c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // that we can enumerate them to send updates about things like window 1094c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // location or tab focus and visibily. These are non-owning references. 1095c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::set<WebPluginDelegateProxy*> plugin_delegates_; 1096c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1097c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#if defined(OS_WIN) 1098c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // The ID of the focused NPAPI plug-in. 1099c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int focused_plugin_id_; 1100c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif 1101c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 11023240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch#if defined(ENABLE_PLUGINS) 110323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) PepperPluginInstanceImpl* plugin_find_handler_; 110423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 11055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) typedef std::set<PepperPluginInstanceImpl*> PepperPluginSet; 11065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PepperPluginSet active_pepper_instances_; 11075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1108a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // TODO(jam): these belong on RenderFrame, once the browser knows which frame 1109a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // is focused and sends the IPCs which use these to the correct frame. Until 1110a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // then, we must store these on RenderView as that's the one place that knows 1111a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // about all the RenderFrames for a page. 11123240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch 11133240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch // Whether or not the focus is on a PPAPI plugin 11143240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch PepperPluginInstanceImpl* focused_pepper_plugin_; 11153240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch 11163240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch // The plugin instance that received the last mouse event. It is set to NULL 11173240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch // if the last mouse event went to elements other than Pepper plugins. 1118a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // |pepper_last_mouse_event_target_| is not owned by this class. We depend on 1119a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // the RenderFrameImpl to NULL it out when it destructs. 11203240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch PepperPluginInstanceImpl* pepper_last_mouse_event_target_; 11213240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch#endif 11223240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch 11235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Misc ---------------------------------------------------------------------- 11245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The current and pending file chooser completion objects. If the queue is 11265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // nonempty, the first item represents the currently running file chooser 11275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // callback, and the remaining elements are the other file chooser completion 11285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // still waiting to be run (in order). 11295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct PendingFileChooser; 11305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::deque< linked_ptr<PendingFileChooser> > file_chooser_completions_; 11315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The current directory enumeration callback 1133f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) std::map<int, blink::WebFileChooserCompletion*> enumeration_completions_; 11345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int enumeration_completion_id_; 11355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The SessionStorage namespace that we're assigned to has an ID, and that ID 11375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // is passed to us upon creation. WebKit asks for this ID upon first use and 11385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // uses it whenever asking the browser process to allocate new storage areas. 11395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 session_storage_namespace_id_; 11405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Stores edit commands associated to the next key event. 11425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shall be cleared as soon as the next key event is processed. 11435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EditCommands edit_commands_; 11445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1145effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#if defined(OS_MACOSX) || defined(OS_ANDROID) 11465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The external popup for the currently showing select popup. 11475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<ExternalPopupMenu> external_popup_menu_; 1148effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#endif 11495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // All the registered observers. We expect this list to be small, so vector 11515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // is fine. 11525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ObserverList<RenderViewObserver> observers_; 11535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Wraps the |webwidget_| as a MouseLockDispatcher::LockTarget interface. 11555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<MouseLockDispatcher::LockTarget> webwidget_mouse_lock_target_; 11565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // State associated with the GetWindowSnapshot function. 11582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int next_snapshot_id_; 11593240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch typedef std::map<int, WindowSnapshotCallback> PendingSnapshotMap; 11602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PendingSnapshotMap pending_snapshots_; 11612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 11625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This field stores drag/drop related info for the event that is currently 11635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // being handled. If the current event results in starting a drag/drop 11645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // session, this info is sent to the browser along with other drag/drop info. 11655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DragEventSourceInfo possible_drag_event_info_; 11665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11673240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch // NOTE: stats_collection_observer_ should be the last members because their 11683240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch // constructors call the AddObservers method of RenderViewImpl. 1169868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) scoped_ptr<StatsCollectionObserver> stats_collection_observer_; 11702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 11710529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch typedef std::map<cc::SharedBitmapId, cc::SharedBitmap*> BitmapMap; 11720529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch BitmapMap disambiguation_bitmaps_; 11730529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 11745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // --------------------------------------------------------------------------- 11755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ADDING NEW DATA? Please see if it fits appropriately in one of the above 11765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // sections rather than throwing it randomly at the end. If you're adding a 11775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // bunch of stuff, you should probably create a helper class and put your 11785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // data and methods on that to avoid bloating RenderView more. You can 11795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // use the Observer interface to filter IPC messages and receive frame change 11805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // notifications. 11815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // --------------------------------------------------------------------------- 11825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(RenderViewImpl); 11845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 11855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace content 11875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CONTENT_RENDERER_RENDER_VIEW_IMPL_H_ 1189