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_ANDROID_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CONTENT_BROWSER_RENDERER_HOST_RENDER_WIDGET_HOST_VIEW_ANDROID_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <map>
9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include <queue>
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/callback.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/i18n/rtl.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
15b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)#include "base/memory/weak_ptr.h"
16a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch#include "base/process/process.h"
174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "cc/layers/delegated_frame_resource_collection.h"
187d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "cc/output/begin_frame_args.h"
197d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "content/browser/accessibility/browser_accessibility_manager.h"
205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "content/browser/renderer_host/delegated_frame_evictor.h"
217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "content/browser/renderer_host/image_transport_factory_android.h"
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/browser/renderer_host/ime_adapter_android.h"
23929504d64b38e05de7355e162311d6791ad6f54dBo Liu#include "content/browser/renderer_host/input/gesture_text_selector.h"
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/browser/renderer_host/render_widget_host_view_base.h"
25010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "content/common/content_export.h"
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "gpu/command_buffer/common/mailbox.h"
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "third_party/skia/include/core/SkColor.h"
28868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "third_party/WebKit/public/platform/WebGraphicsContext3D.h"
29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "ui/base/android/window_android_observer.h"
300529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "ui/events/gesture_detection/filtered_gesture_provider.h"
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/size.h"
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/gfx/vector2d_f.h"
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct ViewHostMsg_TextInputState_Params;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params;
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct GpuHostMsg_AcceleratedSurfacePostSubBuffer_Params;
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace cc {
40c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdochclass CopyOutputResult;
414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class DelegatedFrameProvider;
42b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)class DelegatedRendererLayer;
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class Layer;
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace blink {
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class WebExternalTextureLayer;
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebTouchEvent;
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebMouseEvent;
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ContentViewCoreImpl;
5490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class OverscrollGlow;
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RenderWidgetHost;
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RenderWidgetHostImpl;
575c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liustruct DidOverscrollParams;
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct NativeWebKeyboardEvent;
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// -----------------------------------------------------------------------------
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// See comments in render_widget_host_view.h about this class and its members.
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// -----------------------------------------------------------------------------
63010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)class CONTENT_EXPORT RenderWidgetHostViewAndroid
64b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)    : public RenderWidgetHostViewBase,
654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      public cc::DelegatedFrameResourceCollectionClient,
66f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      public ImageTransportFactoryAndroidObserver,
670529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch      public ui::GestureProviderClient,
685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      public ui::WindowAndroidObserver,
69929504d64b38e05de7355e162311d6791ad6f54dBo Liu      public DelegatedFrameEvictorClient,
70929504d64b38e05de7355e162311d6791ad6f54dBo Liu      public GestureTextSelectorClient {
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  RenderWidgetHostViewAndroid(RenderWidgetHostImpl* widget,
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              ContentViewCoreImpl* content_view_core);
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~RenderWidgetHostViewAndroid();
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // RenderWidgetHostView implementation.
772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE;
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void InitAsChild(gfx::NativeView parent_view) OVERRIDE;
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void InitAsPopup(RenderWidgetHostView* parent_host_view,
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           const gfx::Rect& pos) OVERRIDE;
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void InitAsFullscreen(
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      RenderWidgetHostView* reference_host_view) OVERRIDE;
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual RenderWidgetHost* GetRenderWidgetHost() const OVERRIDE;
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void WasShown() OVERRIDE;
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void WasHidden() OVERRIDE;
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetSize(const gfx::Size& size) OVERRIDE;
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetBounds(const gfx::Rect& rect) OVERRIDE;
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual gfx::NativeView GetNativeView() const OVERRIDE;
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual gfx::NativeViewId GetNativeViewId() const OVERRIDE;
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual gfx::NativeViewAccessible GetNativeViewAccessible() OVERRIDE;
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void MovePluginWindows(
92ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch      const std::vector<WebPluginGeometry>& moves) OVERRIDE;
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Focus() OVERRIDE;
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Blur() OVERRIDE;
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool HasFocus() const OVERRIDE;
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsSurfaceAvailableForCopy() const OVERRIDE;
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Show() OVERRIDE;
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Hide() OVERRIDE;
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsShowing() OVERRIDE;
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual gfx::Rect GetViewBounds() const OVERRIDE;
1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual gfx::Size GetPhysicalBackingSize() const OVERRIDE;
1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual float GetOverdrawBottomHeight() const OVERRIDE;
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void UpdateCursor(const WebCursor& cursor) OVERRIDE;
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetIsLoading(bool is_loading) OVERRIDE;
105f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  virtual void TextInputStateChanged(
106f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      const ViewHostMsg_TextInputState_Params& params) OVERRIDE;
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ImeCancelComposition() OVERRIDE;
1085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual void FocusedNodeChanged(bool is_editable_node) OVERRIDE;
1097dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  virtual void RenderProcessGone(base::TerminationStatus status,
1107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                                 int error_code) OVERRIDE;
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Destroy() OVERRIDE;
112a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  virtual void SetTooltipText(const base::string16& tooltip_text) OVERRIDE;
113a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  virtual void SelectionChanged(const base::string16& text,
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                size_t offset,
11558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)                                const gfx::Range& range) OVERRIDE;
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SelectionBoundsChanged(
1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const ViewHostMsg_SelectionBounds_Params& params) OVERRIDE;
1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void ScrollOffsetChanged() OVERRIDE;
119f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void AcceleratedSurfaceInitialized(int host_id,
120f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                                             int route_id) OVERRIDE;
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void AcceleratedSurfaceBuffersSwapped(
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params& params,
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int gpu_host_id) OVERRIDE;
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void AcceleratedSurfacePostSubBuffer(
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const GpuHostMsg_AcceleratedSurfacePostSubBuffer_Params& params,
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int gpu_host_id) OVERRIDE;
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void AcceleratedSurfaceSuspend() OVERRIDE;
1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void AcceleratedSurfaceRelease() OVERRIDE;
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool HasAcceleratedSurface(const gfx::Size& desired_size) OVERRIDE;
130cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual void SetBackgroundOpaque(bool transparent) OVERRIDE;
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void CopyFromCompositingSurface(
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const gfx::Rect& src_subrect,
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const gfx::Size& dst_size,
1345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      const base::Callback<void(bool, const SkBitmap&)>& callback,
1355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      const SkBitmap::Config config) OVERRIDE;
1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void CopyFromCompositingSurfaceToVideoFrame(
1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const gfx::Rect& src_subrect,
1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const scoped_refptr<media::VideoFrame>& target,
1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const base::Callback<void(bool)>& callback) OVERRIDE;
1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool CanCopyToVideoFrame() const OVERRIDE;
141f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void GetScreenInfo(blink::WebScreenInfo* results) OVERRIDE;
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual gfx::Rect GetBoundsInRootWindow() OVERRIDE;
1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual gfx::GLSurfaceHandle GetCompositingSurface() OVERRIDE;
1447d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  virtual void ProcessAckedTouchEvent(const TouchEventWithLatencyInfo& touch,
1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                      InputEventAckState ack_result) OVERRIDE;
1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual InputEventAckState FilterInputEvent(
147f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebInputEvent& input_event) OVERRIDE;
14868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  virtual void OnSetNeedsFlushInput() OVERRIDE;
1495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual void GestureEventAck(const blink::WebGestureEvent& event,
150a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)                               InputEventAckState ack_result) OVERRIDE;
1515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual void CreateBrowserAccessibilityManagerIfNeeded() OVERRIDE;
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool LockMouse() OVERRIDE;
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void UnlockMouse() OVERRIDE;
1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void OnSwapCompositorFrame(
155ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch      uint32 output_surface_id,
1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      scoped_ptr<cc::CompositorFrame> frame) OVERRIDE;
157cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual void DidOverscroll(const DidOverscrollParams& params) OVERRIDE;
1585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual void DidStopFlinging() OVERRIDE;
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowDisambiguationPopup(const gfx::Rect& target_rect,
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                       const SkBitmap& zoomed_bitmap) OVERRIDE;
161f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual scoped_ptr<SyntheticGestureTarget> CreateSyntheticGestureTarget()
162f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      OVERRIDE;
16323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  virtual void LockCompositingSurface() OVERRIDE;
16423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  virtual void UnlockCompositingSurface() OVERRIDE;
165f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  virtual void OnTextSurroundingSelectionResponse(const base::string16& content,
166f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                                  size_t start_offset,
167f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                                  size_t end_offset) OVERRIDE;
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1694e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  // cc::DelegatedFrameResourceCollectionClient implementation.
1704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  virtual void UnusedResourcesAreAvailable() OVERRIDE;
171b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)
1720529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  // ui::GestureProviderClient implementation.
1730529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  virtual void OnGestureEvent(const ui::GestureEventData& gesture) OVERRIDE;
1740529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
175f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // ui::WindowAndroidObserver implementation.
176f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void OnCompositingDidCommit() OVERRIDE;
177f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void OnAttachCompositor() OVERRIDE {}
178f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void OnDetachCompositor() OVERRIDE;
1795c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  virtual void OnVSync(base::TimeTicks frame_time,
1805c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                       base::TimeDelta vsync_period) OVERRIDE;
181cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual void OnAnimate(base::TimeTicks begin_frame_time) OVERRIDE;
182f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
1837dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  // ImageTransportFactoryAndroidObserver implementation.
1847dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  virtual void OnLostResources() OVERRIDE;
1857dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
1865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // DelegatedFrameEvictor implementation
1875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual void EvictDelegatedFrame() OVERRIDE;
1885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
189a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual SkBitmap::Config PreferredReadbackFormat() OVERRIDE;
190a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
191929504d64b38e05de7355e162311d6791ad6f54dBo Liu  // GestureTextSelectorClient implementation.
192929504d64b38e05de7355e162311d6791ad6f54dBo Liu  virtual void ShowSelectionHandlesAutomatically() OVERRIDE;
193929504d64b38e05de7355e162311d6791ad6f54dBo Liu  virtual void SelectRange(float x1, float y1, float x2, float y2) OVERRIDE;
194929504d64b38e05de7355e162311d6791ad6f54dBo Liu  virtual void Unselect() OVERRIDE;
195929504d64b38e05de7355e162311d6791ad6f54dBo Liu  virtual void LongPress(base::TimeTicks time, float x, float y) OVERRIDE;
196929504d64b38e05de7355e162311d6791ad6f54dBo Liu
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Non-virtual methods
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SetContentViewCore(ContentViewCoreImpl* content_view_core);
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SkColor GetCachedBackgroundColor() const;
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SendKeyEvent(const NativeWebKeyboardEvent& event);
201f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  void SendTouchEvent(const blink::WebTouchEvent& event);
202f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  void SendMouseEvent(const blink::WebMouseEvent& event);
203f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  void SendMouseWheelEvent(const blink::WebMouseWheelEvent& event);
204f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  void SendGestureEvent(const blink::WebGestureEvent& event);
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnDidChangeBodyBackgroundColor(SkColor color);
2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnStartContentIntent(const GURL& content_url);
20890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  void OnSetNeedsBeginFrame(bool enabled);
209929504d64b38e05de7355e162311d6791ad6f54dBo Liu  void OnSmartClipDataExtracted(const base::string16& text,
210929504d64b38e05de7355e162311d6791ad6f54dBo Liu                                const base::string16& html,
211929504d64b38e05de7355e162311d6791ad6f54dBo Liu                                const gfx::Rect rect);
2125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
2130529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  bool OnTouchEvent(const ui::MotionEvent& event);
2140529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  void ResetGestureDetection();
2150529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  void SetDoubleTapSupportEnabled(bool enabled);
2160529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  void SetMultiTouchZoomSupportEnabled(bool enabled);
2170529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
218a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  long GetNativeImeAdapter();
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void WasResized();
2212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  void GetScaledContentBitmap(
2235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      float scale,
224a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      SkBitmap::Config bitmap_config,
225a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      gfx::Rect src_subrect,
2265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      const base::Callback<void(bool, const SkBitmap&)>& result_callback);
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  bool HasValidFrame() const;
2292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void MoveCaret(const gfx::Point& point);
2312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2325e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles)  void SynchronousFrameMetadata(
2335e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles)      const cc::CompositorFrameMetadata& frame_metadata);
2345e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles)
2355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  void SetOverlayVideoMode(bool enabled);
2365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
2376d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)  typedef base::Callback<
2386d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)      void(const base::string16& content, int start_offset, int end_offset)>
2396d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)      TextSurroundingSelectionCallback;
2406d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)  void SetTextSurroundingSelectionCallback(
2416d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)      const TextSurroundingSelectionCallback& callback);
2426d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
244c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void RunAckCallbacks();
245c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
2464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  void DestroyDelegatedContent();
247ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  void SwapDelegatedFrame(uint32 output_surface_id,
248ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch                          scoped_ptr<cc::DelegatedFrameData> frame_data);
249ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  void SendDelegatedFrameAck(uint32 output_surface_id);
2505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  void SendReturnedDelegatedResources(uint32 output_surface_id);
251b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)
2520529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  void OnFrameMetadataUpdated(
2535e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles)      const cc::CompositorFrameMetadata& frame_metadata);
2545e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles)  void ComputeContentsSize(const cc::CompositorFrameMetadata& frame_metadata);
255c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void ResetClipping();
256c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  void ClipContents(const gfx::Rect& clipping, const gfx::Size& content_size);
257c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
25890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  void AttachLayers();
25990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  void RemoveLayers();
26090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
261c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch  // Called after async screenshot task completes. Scales and crops the result
262c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch  // of the copy.
263c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch  static void PrepareTextureCopyOutputResult(
264c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch      const gfx::Size& dst_size_in_pixel,
2655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      const SkBitmap::Config config,
2665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      const base::TimeTicks& start_time,
267c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch      const base::Callback<void(bool, const SkBitmap&)>& callback,
268c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch      scoped_ptr<cc::CopyOutputResult> result);
26923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  static void PrepareTextureCopyOutputResultForDelegatedReadback(
270c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch      const gfx::Size& dst_size_in_pixel,
2715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      const SkBitmap::Config config,
2725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      const base::TimeTicks& start_time,
27323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      scoped_refptr<cc::Layer> readback_layer,
274c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch      const base::Callback<void(bool, const SkBitmap&)>& callback,
275c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch      scoped_ptr<cc::CopyOutputResult> result);
276c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch
277a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // DevTools ScreenCast support for Android WebView.
278a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  void SynchronousCopyContents(
279a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      const gfx::Rect& src_subrect_in_pixel,
280a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      const gfx::Size& dst_size_in_pixel,
2815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      const base::Callback<void(bool, const SkBitmap&)>& callback,
2825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      const SkBitmap::Config config);
283a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
284a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  bool IsReadbackConfigSupported(SkBitmap::Config bitmap_config);
285a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
28623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // If we have locks on a frame during a ContentViewCore swap or a context
28723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // lost, the frame is no longer valid and we can safely release all the locks.
28823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // Use this method to release all the locks.
28923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  void ReleaseLocksOnSurface();
29023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
29123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // Drop any incoming frames from the renderer when there are locks on the
29223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // current frame.
29323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  void RetainFrame(uint32 output_surface_id,
29423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)                   scoped_ptr<cc::CompositorFrame> frame);
29523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
29623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  void InternalSwapCompositorFrame(uint32 output_surface_id,
29723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)                                   scoped_ptr<cc::CompositorFrame> frame);
29823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
2995c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  void SetNeedsAnimate();
3005c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  bool Animate(base::TimeTicks frame_time);
3015c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The model object.
3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  RenderWidgetHostImpl* host_;
3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // Used to track whether this render widget needs a BeginFrame.
306eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  bool needs_begin_frame_;
307eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
3085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  bool is_showing_;
3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // ContentViewCoreImpl is our interface to the view system.
3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ContentViewCoreImpl* content_view_core_;
3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ImeAdapterAndroid ime_adapter_android_;
3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Body background color of the underlying document.
3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SkColor cached_background_color_;
3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  scoped_refptr<cc::DelegatedFrameResourceCollection> resource_collection_;
3194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  scoped_refptr<cc::DelegatedFrameProvider> frame_provider_;
320e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch  scoped_refptr<cc::DelegatedRendererLayer> layer_;
3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The most recent texture size that was pushed to the texture layer.
3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gfx::Size texture_size_in_layer_;
3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // The most recent content size that was pushed to the texture layer.
326c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  gfx::Size content_size_in_layer_;
327c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
328f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  // The device scale of the last received frame.
329f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  float device_scale_factor_;
330f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
3310f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  // The output surface id of the last received frame.
3320f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  uint32_t last_output_surface_id_;
3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
334b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  base::WeakPtrFactory<RenderWidgetHostViewAndroid> weak_ptr_factory_;
335b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)
336c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  std::queue<base::Closure> ack_callbacks_;
337c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
338a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  const bool overscroll_effect_enabled_;
33990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // Used to render overscroll overlays.
340a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // Note: |overscroll_effect_| will never be NULL, even if it's never enabled.
34190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  scoped_ptr<OverscrollGlow> overscroll_effect_;
34290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
3430529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  // Provides gesture synthesis given a stream of touch events (derived from
3440529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  // Android MotionEvent's) and touch event acks.
3450529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  ui::FilteredGestureProvider gesture_provider_;
3460529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
347929504d64b38e05de7355e162311d6791ad6f54dBo Liu  // Handles gesture based text selection
348929504d64b38e05de7355e162311d6791ad6f54dBo Liu  GestureTextSelector gesture_text_selector_;
349929504d64b38e05de7355e162311d6791ad6f54dBo Liu
35068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  bool flush_input_requested_;
35168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
352f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  int accelerated_surface_route_id_;
353f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
354f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Size to use if we have no backing ContentViewCore
355f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  gfx::Size default_size_;
356f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
357f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  const bool using_synchronous_compositor_;
358f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
3595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  scoped_ptr<DelegatedFrameEvictor> frame_evictor_;
3605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
36123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  size_t locks_on_frame_count_;
3620529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  bool observing_root_window_;
36323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
36423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  struct LastFrameInfo {
36523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    LastFrameInfo(uint32 output_id,
36623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)                  scoped_ptr<cc::CompositorFrame> output_frame);
36723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    ~LastFrameInfo();
36823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    uint32 output_surface_id;
36923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    scoped_ptr<cc::CompositorFrame> frame;
37023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  };
37123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
37223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  scoped_ptr<LastFrameInfo> last_frame_info_;
37323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
3746d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)  TextSurroundingSelectionCallback text_surrounding_selection_callback_;
3756d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)
3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostViewAndroid);
3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace content
3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CONTENT_BROWSER_RENDERER_HOST_RENDER_WIDGET_HOST_VIEW_ANDROID_H_
382