15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CONTENT_BROWSER_RENDERER_HOST_RENDER_WIDGET_HOST_VIEW_BASE_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CONTENT_BROWSER_RENDERER_HOST_RENDER_WIDGET_HOST_VIEW_BASE_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <OpenGL/OpenGL.h> 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector> 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/callback_forward.h" 17010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "base/process/kill.h" 18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/timer/timer.h" 19010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "cc/output/compositor_frame.h" 20010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "content/browser/renderer_host/event_with_latency_info.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/content_export.h" 22010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "content/common/input/input_event_ack_state.h" 23010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "content/public/browser/render_widget_host_view.h" 24010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "ipc/ipc_listener.h" 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "third_party/WebKit/public/platform/WebScreenOrientationType.h" 26010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "third_party/WebKit/public/web/WebPopupType.h" 27010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "third_party/WebKit/public/web/WebTextDirection.h" 28010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "ui/base/ime/text_input_mode.h" 29010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "ui/base/ime/text_input_type.h" 30010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "ui/gfx/display.h" 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/native_widget_types.h" 3258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "ui/gfx/range/range.h" 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/rect.h" 34010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "ui/surface/transport_dib.h" 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)class SkBitmap; 37010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 38010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)struct AccessibilityHostMsg_EventParams; 39010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)struct GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params; 40010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)struct GpuHostMsg_AcceleratedSurfacePostSubBuffer_Params; 41010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)struct ViewHostMsg_SelectionBounds_Params; 42010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 43010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)namespace media { 44010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)class VideoFrame; 45010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 46010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 47010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)namespace blink { 48010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)struct WebScreenInfo; 49010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 51010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)namespace content { 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass BrowserAccessibilityDelegate; 53010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)class BrowserAccessibilityManager; 54010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)class SyntheticGesture; 55010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)class SyntheticGestureTarget; 56010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)class WebCursor; 57cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)struct DidOverscrollParams; 58010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)struct NativeWebKeyboardEvent; 59cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)struct WebPluginGeometry; 60010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// TODO(Sikugu): Though we have the return status of the result here, 621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// we should add the reason for failure as a new parameter to handle cases 631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// efficiently. 641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef const base::Callback<void(bool, const SkBitmap&)> 651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci CopyFromCompositingSurfaceCallback; 661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 67010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Basic implementation shared by concrete RenderWidgetHostView subclasses. 68010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView, 69010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) public IPC::Listener { 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~RenderWidgetHostViewBase(); 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 73010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // RenderWidgetHostView implementation. 74cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void SetBackgroundOpaque(bool opaque) OVERRIDE; 75cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual bool GetBackgroundOpaque() OVERRIDE; 76010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual ui::TextInputClient* GetTextInputClient() OVERRIDE; 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsShowingContextMenu() const OVERRIDE; 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetShowingContextMenu(bool showing_menu) OVERRIDE; 79a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual base::string16 GetSelectedText() const OVERRIDE; 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsMouseLocked() OVERRIDE; 81010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual gfx::Size GetVisibleViewportSize() const OVERRIDE; 82010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void SetInsets(const gfx::Insets& insets) OVERRIDE; 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void BeginFrameSubscription( 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<RenderWidgetHostViewFrameSubscriber> subscriber) OVERRIDE; 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void EndFrameSubscription() OVERRIDE; 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 87010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // IPC::Listener implementation: 88010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE; 89a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 90010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Called by the host when the input flush has completed. 91010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) void OnDidFlushInput(); 92010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 93010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) void SetPopupType(blink::WebPopupType popup_type); 94010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 95010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) blink::WebPopupType GetPopupType(); 96010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 97010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Return a value that is incremented each time the renderer swaps a new frame 98010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // to the view. 99010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) uint32 RendererFrameNumber(); 100010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 101010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Called each time the RenderWidgetHost receives a new frame for display from 102010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // the renderer. 103010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) void DidReceiveRendererFrame(); 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Notification that a resize or move session ended on the native widget. 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void UpdateScreenInfo(gfx::NativeView view); 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 108a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch // Tells if the display property (work area/scale factor) has 109a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch // changed since the last time. 110a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch bool HasDisplayPropertyChanged(gfx::NativeView view); 111a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch 1121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::WeakPtr<RenderWidgetHostViewBase> GetWeakPtr(); 1131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 114010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) //---------------------------------------------------------------------------- 115010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // The following methods can be overridden by derived classes. 116010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 117010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Notifies the View that the renderer text selection has changed. 118010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void SelectionChanged(const base::string16& text, 119010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) size_t offset, 120010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const gfx::Range& range); 121010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 122cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // The requested size of the renderer. May differ from GetViewBounds().size() 123cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // when the view requires additional throttling. 124cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual gfx::Size GetRequestedRendererSize() const; 125cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 126010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // The size of the view's backing surface in non-DPI-adjusted pixels. 127010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual gfx::Size GetPhysicalBackingSize() const; 128010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 12903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // The amount that the viewport size given to Blink is shrunk by the URL-bar. 13003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual float GetTopControlsLayoutHeight() const; 131010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 132010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Called prior to forwarding input event messages to the renderer, giving 133010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // the view a chance to perform in-process event filtering or processing. 134010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Return values of |NOT_CONSUMED| or |UNKNOWN| will result in |input_event| 135010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // being forwarded. 136010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual InputEventAckState FilterInputEvent( 137010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const blink::WebInputEvent& input_event); 138010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 139010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Called by the host when it requires an input flush; the flush call should 140010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // by synchronized with BeginFrame. 141010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void OnSetNeedsFlushInput(); 142010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 14346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) virtual void WheelEventAck(const blink::WebMouseWheelEvent& event, 14446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) InputEventAckState ack_result); 14546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 146010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void GestureEventAck(const blink::WebGestureEvent& event, 147010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) InputEventAckState ack_result); 148010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 149010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Create a platform specific SyntheticGestureTarget implementation that will 150010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // be used to inject synthetic input events. 151010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual scoped_ptr<SyntheticGestureTarget> CreateSyntheticGestureTarget(); 152010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 153010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Return true if frame subscription is supported on this platform. 154010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual bool CanSubscribeFrame() const; 155010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 156116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Create a BrowserAccessibilityManager for this view. 157116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual BrowserAccessibilityManager* CreateBrowserAccessibilityManager( 158116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch BrowserAccessibilityDelegate* delegate); 159010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 160116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void AccessibilityShowMenu(const gfx::Point& point); 161010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual gfx::Point AccessibilityOriginInScreen(const gfx::Rect& bounds); 1625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual gfx::AcceleratedWidget AccessibilityGetAcceleratedWidget(); 1635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual gfx::NativeViewAccessible AccessibilityGetNativeViewAccessible(); 164010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 165116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual SkColorType PreferredReadbackFormat(); 166010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 167010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Informs that the focused DOM node has changed. 168010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void FocusedNodeChanged(bool is_editable_node) {} 169010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 170010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void OnSwapCompositorFrame(uint32 output_surface_id, 171010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) scoped_ptr<cc::CompositorFrame> frame) {} 172010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 173010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Because the associated remote WebKit instance can asynchronously 174010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // prevent-default on a dispatched touch event, the touch events are queued in 175010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // the GestureRecognizer until invocation of ProcessAckedTouchEvent releases 176010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // it to be consumed (when |ack_result| is NOT_CONSUMED OR NO_CONSUMER_EXISTS) 177010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // or ignored (when |ack_result| is CONSUMED). 178010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void ProcessAckedTouchEvent(const TouchEventWithLatencyInfo& touch, 179010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) InputEventAckState ack_result) {} 180010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 181cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void DidOverscroll(const DidOverscrollParams& params) {} 182cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 183010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void DidStopFlinging() {} 184010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 185010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) //---------------------------------------------------------------------------- 186010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // The following static methods are implemented by each platform. 187010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 188010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) static void GetDefaultScreenInfo(blink::WebScreenInfo* results); 189010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 190010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) //---------------------------------------------------------------------------- 191010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // The following pure virtual methods are implemented by derived classes. 192010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 193010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Perform all the initialization steps necessary for this object to represent 194010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // a popup (such as a <select> dropdown), then shows the popup at |pos|. 195010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void InitAsPopup(RenderWidgetHostView* parent_host_view, 196010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const gfx::Rect& pos) = 0; 197010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 198010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Perform all the initialization steps necessary for this object to represent 199010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // a full screen window. 200010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // |reference_host_view| is the view associated with the creating page that 201010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // helps to position the full screen widget on the correct monitor. 202010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void InitAsFullscreen(RenderWidgetHostView* reference_host_view) = 0; 203010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 204010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Notifies the View that it has become visible. 205010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void WasShown() = 0; 206010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 207010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Notifies the View that it has been hidden. 208010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void WasHidden() = 0; 209010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 210010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Moves all plugin windows as described in the given list. 211010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // |scroll_offset| is the scroll offset of the render view. 212010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void MovePluginWindows( 213010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const std::vector<WebPluginGeometry>& moves) = 0; 214010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 215010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Take focus from the associated View component. 216010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void Blur() = 0; 217010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 218010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Sets the cursor to the one associated with the specified cursor_type 219010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void UpdateCursor(const WebCursor& cursor) = 0; 220010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 221010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Indicates whether the page has finished loading. 222010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void SetIsLoading(bool is_loading) = 0; 223010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 224010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Updates the type of the input method attached to the view. 2251675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch virtual void TextInputTypeChanged(ui::TextInputType type, 2261675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch ui::TextInputMode mode, 2271675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch bool can_compose_inline) = 0; 228010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 229010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Cancel the ongoing composition of the input method attached to the view. 230010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void ImeCancelComposition() = 0; 231010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 232010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Notifies the View that the renderer has ceased to exist. 233010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void RenderProcessGone(base::TerminationStatus status, 234010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) int error_code) = 0; 235010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 2361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Notifies the View that the renderer's host has ceased to exist. 2371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // The default implementation of this is a no-op. This hack exists to fix 2381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // a crash on the branch. 2391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // TODO(ccameron): Clean this up. 2401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // http://crbug.com/404828 2411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void RenderWidgetHostGone() {} 2421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 243010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Tells the View to destroy itself. 244010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void Destroy() = 0; 245010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 246010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Tells the View that the tooltip text for the current mouse position over 247010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // the page has changed. 248010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void SetTooltipText(const base::string16& tooltip_text) = 0; 249010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 250010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Notifies the View that the renderer selection bounds has changed. 251010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // |start_rect| and |end_rect| are the bounds end of the selection in the 252010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // coordinate system of the render view. |start_direction| and |end_direction| 253010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // indicates the direction at which the selection was made on touch devices. 254010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void SelectionBoundsChanged( 255010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const ViewHostMsg_SelectionBounds_Params& params) = 0; 256010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 2576e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Copies the contents of the compositing surface, providing a new SkBitmap 2586e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // result via an asynchronously-run |callback|. |src_subrect| is specified in 2596e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // layer space coordinates for the current platform (e.g., DIP for Aura/Mac, 2606e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // physical for Android), and is the region to be copied from this view. The 2616e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // copy is then scaled to a SkBitmap of size |dst_size|. |callback| is run 2626e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // with true on success, false otherwise. A smaller region than |src_subrect| 2636e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // may be copied if the underlying surface is smaller than |src_subrect|. 264010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void CopyFromCompositingSurface( 265010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const gfx::Rect& src_subrect, 266010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const gfx::Size& dst_size, 2671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci CopyFromCompositingSurfaceCallback& callback, 268116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const SkColorType color_type) = 0; 269010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 2706e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Copies the contents of the compositing surface, populating the given 2716e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // |target| with YV12 image data. |src_subrect| is specified in layer space 2726e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // coordinates for the current platform (e.g., DIP for Aura/Mac, physical for 2736e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Android), and is the region to be copied from this view. The copy is then 2746e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // scaled and letterboxed with black borders to fit |target|. Finally, 2756e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // |callback| is asynchronously run with true/false for 2766e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // success/failure. |target| must point to an allocated, YV12 video frame of 2776e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // the intended size. This operation will fail if there is no available 278010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // compositing surface. 279010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void CopyFromCompositingSurfaceToVideoFrame( 280010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const gfx::Rect& src_subrect, 281010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const scoped_refptr<media::VideoFrame>& target, 282010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const base::Callback<void(bool)>& callback) = 0; 283010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 284010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Returns true if CopyFromCompositingSurfaceToVideoFrame() is likely to 285010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // succeed. 286010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // 287010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // TODO(nick): When VideoFrame copies are broadly implemented, this method 288010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // should be renamed to HasCompositingSurface(), or unified with 289010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // IsSurfaceAvailableForCopy() and HasAcceleratedSurface(). 290010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual bool CanCopyToVideoFrame() const = 0; 291010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 292010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Called when an accelerated compositing surface is initialized. 293010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void AcceleratedSurfaceInitialized(int host_id, int route_id) = 0; 294010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // |params.window| and |params.surface_id| indicate which accelerated 295010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // surface's buffers swapped. |params.renderer_id| and |params.route_id| 296010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // are used to formulate a reply to the GPU process to prevent it from getting 297010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // too far ahead. They may all be zero, in which case no flow control is 298010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // enforced; this case is currently used for accelerated plugins. 299010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void AcceleratedSurfaceBuffersSwapped( 300010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params& params_in_pixel, 301010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) int gpu_host_id) = 0; 302010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Similar to above, except |params.(x|y|width|height)| define the region 303010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // of the surface that changed. 304010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void AcceleratedSurfacePostSubBuffer( 305010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const GpuHostMsg_AcceleratedSurfacePostSubBuffer_Params& params_in_pixel, 306010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) int gpu_host_id) = 0; 307010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 308010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Release the accelerated surface temporarily. It will be recreated on the 309010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // next swap buffers or post sub buffer. 310010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void AcceleratedSurfaceSuspend() = 0; 311010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 312010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void AcceleratedSurfaceRelease() = 0; 313010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 314010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Return true if the view has an accelerated surface that contains the last 315010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // presented frame for the view. If |desired_size| is non-empty, true is 316010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // returned only if the accelerated surface size matches. 317010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual bool HasAcceleratedSurface(const gfx::Size& desired_size) = 0; 318010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 319116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Compute the orientation type of the display assuming it is a mobile device. 320116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch static blink::WebScreenOrientationType GetOrientationTypeForMobile( 321116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const gfx::Display& display); 322116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 323116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Compute the orientation type of the display assuming it is a desktop. 324116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch static blink::WebScreenOrientationType GetOrientationTypeForDesktop( 325116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const gfx::Display& display); 326116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 327010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void GetScreenInfo(blink::WebScreenInfo* results) = 0; 328010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 329010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Gets the bounds of the window, in screen coordinates. 330010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual gfx::Rect GetBoundsInRootWindow() = 0; 331010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 332010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual gfx::GLSurfaceHandle GetCompositingSurface() = 0; 333010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 334f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void OnTextSurroundingSelectionResponse(const base::string16& content, 335f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) size_t start_offset, 336f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) size_t end_offset) {}; 337010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 3381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(OS_ANDROID) || defined(TOOLKIT_VIEWS) || defined(USE_AURA) 3391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void ShowDisambiguationPopup(const gfx::Rect& rect_pixels, 340010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const SkBitmap& zoomed_bitmap) = 0; 3411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif 342010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 3431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(OS_ANDROID) 344010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Instructs the view to not drop the surface even when the view is hidden. 345010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void LockCompositingSurface() = 0; 346010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void UnlockCompositingSurface() = 0; 347010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#endif 348010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 349010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#if defined(OS_MACOSX) 350010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Does any event handling necessary for plugin IME; should be called after 351010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // the plugin has already had a chance to process the event. If plugin IME is 352010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // not enabled, this is a no-op, so it is always safe to call. 353010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Returns true if the event was handled by IME. 354010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual bool PostProcessEventForPluginIme( 355010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const NativeWebKeyboardEvent& event) = 0; 356010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#endif 357010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 358010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#if defined(OS_MACOSX) || defined(USE_AURA) 359010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Updates the range of the marked text in an IME composition. 360010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void ImeCompositionRangeChanged( 361010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const gfx::Range& range, 362010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const std::vector<gfx::Rect>& character_bounds) = 0; 363010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#endif 364010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 366010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void SetParentNativeViewAccessible( 367010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) gfx::NativeViewAccessible accessible_parent) = 0; 368010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 369010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Returns an HWND that's given as the parent window for windowless Flash to 370010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // workaround crbug.com/301548. 371010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual gfx::NativeViewId GetParentForWindowlessPlugin() const = 0; 372010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The callback that DetachPluginsHelper calls for each child window. Call 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // this directly if you want to do custom filtering on plugin windows first. 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void DetachPluginWindowsCallback(HWND window); 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Interface class only, do not construct. 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RenderWidgetHostViewBase(); 3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shared implementation of MovePluginWindows for use by win and aura/wina. 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void MovePluginWindowsHelper( 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HWND parent, 386ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch const std::vector<WebPluginGeometry>& moves); 3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void PaintPluginWindowsHelper( 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HWND parent, 3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Rect& damaged_screen_rect); 3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Needs to be called before the HWND backing the view goes away to avoid 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // crashes in Windowed plugins. 3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void DetachPluginsHelper(HWND parent); 3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Whether this view is a popup and what kind of popup it is (select, 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // autofill...). 399f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebPopupType popup_type_; 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 401cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // When false, the background of the web content is not fully opaque. 402cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) bool background_opaque_; 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // While the mouse is locked, the cursor is hidden from the user. Mouse events 4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // are still generated. However, the position they report is the last known 4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // mouse position just as mouse lock was entered; the movement they report 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // indicates what the change in position of the mouse would be had it not been 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // locked. 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool mouse_locked_; 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Whether we are showing a context menu. 4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool showing_context_menu_; 4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // A buffer containing the text inside and around the current selection range. 415a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 selection_text_; 4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The offset of the text stored in |selection_text_| relative to the start of 4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the web page. 4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size_t selection_text_offset_; 4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The current selection range relative to the start of the web page. 42258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) gfx::Range selection_range_; 4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)protected: 4252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // The scale factor of the display the renderer is currently on. 4262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) float current_device_scale_factor_; 4272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 428010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // The orientation of the display the renderer is currently on. 429010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) gfx::Display::Rotation current_display_rotation_; 430010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 4315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Whether pinch-to-zoom should be enabled and pinch events forwarded to the 4325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // renderer. 4335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool pinch_zoom_enabled_; 4345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 436f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void FlushInput(); 437f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Rect current_display_area_; 4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4407dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch uint32 renderer_frame_number_; 4417dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 442f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) base::OneShotTimer<RenderWidgetHostViewBase> flush_input_timer_; 443f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 4441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::WeakPtrFactory<RenderWidgetHostViewBase> weak_factory_; 4451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostViewBase); 4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace content 4505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CONTENT_BROWSER_RENDERER_HOST_RENDER_WIDGET_HOST_VIEW_BASE_H_ 452