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_GPU_INPUT_HANDLER_MANAGER_CLIENT_H_
6#define CONTENT_RENDERER_GPU_INPUT_HANDLER_MANAGER_CLIENT_H_
7
8#include "base/basictypes.h"
9#include "base/callback.h"
10#include "base/callback_forward.h"
11#include "content/common/content_export.h"
12#include "ui/gfx/vector2d_f.h"
13
14namespace ui {
15struct LatencyInfo;
16}
17
18namespace cc {
19class InputHandler;
20struct DidOverscrollParams;
21}
22
23namespace WebKit {
24class WebInputEvent;
25}
26
27namespace content {
28
29class CONTENT_EXPORT InputHandlerManagerClient {
30 public:
31  virtual ~InputHandlerManagerClient() {}
32
33  // The Manager will supply a |handler| when bound to the client. This is valid
34  // until the manager shuts down, at which point it supplies a null |handler|.
35  // The client should only makes calls to |handler| on the compositor thread.
36  typedef base::Callback<
37      InputEventAckState(int /*routing_id*/,
38                         const WebKit::WebInputEvent*,
39                         const ui::LatencyInfo& latency_info)> Handler;
40
41  // Called from the main thread.
42  virtual void SetBoundHandler(const Handler& handler) = 0;
43
44  // Called from the compositor thread.
45  virtual void DidAddInputHandler(int routing_id,
46                                  cc::InputHandler* input_handler) = 0;
47  virtual void DidRemoveInputHandler(int routing_id) = 0;
48  virtual void DidOverscroll(int routing_id,
49                             const cc::DidOverscrollParams& params) = 0;
50
51 protected:
52  InputHandlerManagerClient() {}
53
54 private:
55  DISALLOW_COPY_AND_ASSIGN(InputHandlerManagerClient);
56};
57
58}  // namespace content
59
60#endif  // CONTENT_COMMON_GPU_INPUT_HANDLER_MANAGER_CLIENT_H_
61