gamepad_controller.h revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
1// Copyright 2014 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_SHELL_RENDERER_TEST_RUNNER_GAMEPAD_CONTROLLER_H_
6#define CONTENT_SHELL_RENDERER_TEST_RUNNER_GAMEPAD_CONTROLLER_H_
7
8#include "base/memory/weak_ptr.h"
9#include "third_party/WebKit/public/platform/WebGamepads.h"
10
11namespace blink {
12class WebFrame;
13}
14
15namespace WebTestRunner {
16class WebTestDelegate;
17}
18
19namespace content {
20
21class GamepadController : public base::SupportsWeakPtr<GamepadController> {
22 public:
23  GamepadController();
24  ~GamepadController();
25
26  void Reset();
27  void Install(blink::WebFrame* frame);
28  void SetDelegate(WebTestRunner::WebTestDelegate* delegate);
29
30 private:
31  friend class GamepadControllerBindings;
32
33  void Connect(int index);
34  void Disconnect(int index);
35  void SetId(int index, const std::string& src);
36  void SetButtonCount(int index, int buttons);
37  void SetButtonData(int index, int button, double data);
38  void SetAxisCount(int index, int axes);
39  void SetAxisData(int index, int axis, double data);
40
41  blink::WebGamepads gamepads_;
42
43  WebTestRunner::WebTestDelegate* delegate_;
44
45  base::WeakPtrFactory<GamepadController> weak_factory_;
46
47  DISALLOW_COPY_AND_ASSIGN(GamepadController);
48};
49
50}  // namespace content
51
52#endif  // CONTENT_SHELL_RENDERER_TEST_RUNNER_GAMEPAD_CONTROLLER_H_
53