1// Copyright 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_INPUT_INPUT_HANDLER_WRAPPER_H_
6#define CONTENT_RENDERER_INPUT_INPUT_HANDLER_WRAPPER_H_
7
8#include "base/memory/weak_ptr.h"
9#include "content/renderer/input/input_handler_manager.h"
10#include "content/renderer/input/input_handler_proxy.h"
11#include "content/renderer/input/input_handler_proxy_client.h"
12#include "third_party/WebKit/public/platform/WebSchedulerProxy.h"
13
14namespace content {
15
16// This class lives on the compositor thread.
17class InputHandlerWrapper : public InputHandlerProxyClient {
18 public:
19  InputHandlerWrapper(InputHandlerManager* input_handler_manager,
20                      int routing_id,
21                      const scoped_refptr<base::MessageLoopProxy>& main_loop,
22                      const base::WeakPtr<cc::InputHandler>& input_handler,
23                      const base::WeakPtr<RenderViewImpl>& render_view_impl);
24  virtual ~InputHandlerWrapper();
25
26  int routing_id() const { return routing_id_; }
27  InputHandlerProxy* input_handler_proxy() { return &input_handler_proxy_; }
28
29  // InputHandlerProxyClient implementation.
30  virtual void WillShutdown() OVERRIDE;
31  virtual void TransferActiveWheelFlingAnimation(
32      const blink::WebActiveWheelFlingParameters& params) OVERRIDE;
33  virtual blink::WebGestureCurve* CreateFlingAnimationCurve(
34      blink::WebGestureDevice deviceSource,
35      const blink::WebFloatPoint& velocity,
36      const blink::WebSize& cumulativeScroll) OVERRIDE;
37  virtual void DidOverscroll(const DidOverscrollParams& params) OVERRIDE;
38  virtual void DidStopFlinging() OVERRIDE;
39  virtual void DidReceiveInputEvent() OVERRIDE;
40
41 private:
42  InputHandlerManager* input_handler_manager_;
43  int routing_id_;
44  InputHandlerProxy input_handler_proxy_;
45  scoped_refptr<base::MessageLoopProxy> main_loop_;
46  blink::WebSchedulerProxy web_scheduler_proxy_;
47
48  // Can only be accessed on the main thread.
49  base::WeakPtr<RenderViewImpl> render_view_impl_;
50
51  DISALLOW_COPY_AND_ASSIGN(InputHandlerWrapper);
52};
53
54}  // namespace content
55
56#endif  // CONTENT_RENDERER_INPUT_INPUT_HANDLER_WRAPPER_H_
57