1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CONTENT_RENDERER_GPU_INPUT_HANDLER_WRAPPER_H_ 6 #define CONTENT_RENDERER_GPU_INPUT_HANDLER_WRAPPER_H_ 7 8 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/weak_ptr.h" 10 #include "content/renderer/gpu/input_handler_manager.h" 11 #include "content/renderer/gpu/input_handler_proxy.h" 12 #include "content/renderer/gpu/input_handler_proxy_client.h" 13 14 namespace content { 15 16 // This class lives on the compositor thread. 17 class InputHandlerWrapper 18 : public InputHandlerProxyClient, 19 public base::RefCountedThreadSafe<InputHandlerWrapper> { 20 public: 21 InputHandlerWrapper(InputHandlerManager* input_handler_manager, 22 int routing_id, 23 const scoped_refptr<base::MessageLoopProxy>& main_loop, 24 const base::WeakPtr<cc::InputHandler>& input_handler, 25 const base::WeakPtr<RenderViewImpl>& render_view_impl); 26 27 int routing_id() const { return routing_id_; } 28 InputHandlerProxy* input_handler_proxy() { return &input_handler_proxy_; } 29 30 // InputHandlerProxyClient implementation. 31 virtual void WillShutdown() OVERRIDE; 32 virtual void TransferActiveWheelFlingAnimation( 33 const WebKit::WebActiveWheelFlingParameters& params) OVERRIDE; 34 virtual WebKit::WebGestureCurve* CreateFlingAnimationCurve( 35 int deviceSource, 36 const WebKit::WebFloatPoint& velocity, 37 const WebKit::WebSize& cumulativeScroll) OVERRIDE; 38 virtual void DidOverscroll(const cc::DidOverscrollParams& params) OVERRIDE; 39 40 private: 41 friend class base::RefCountedThreadSafe<InputHandlerWrapper>; 42 43 virtual ~InputHandlerWrapper(); 44 45 InputHandlerManager* input_handler_manager_; 46 int routing_id_; 47 InputHandlerProxy input_handler_proxy_; 48 scoped_refptr<base::MessageLoopProxy> main_loop_; 49 50 // Can only be accessed on the main thread. 51 base::WeakPtr<RenderViewImpl> render_view_impl_; 52 53 DISALLOW_COPY_AND_ASSIGN(InputHandlerWrapper); 54 }; 55 56 } // namespace content 57 58 #endif // CONTENT_RENDERER_GPU_INPUT_HANDLER_WRAPPER_H_ 59