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