gamepad_controller.h revision effb81e5f8246d0db0270817048dc992db66e9fb
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  // TODO(b.kelemen): for historical reasons Connect just initializes the
34  // object. The 'gamepadconnected' event will be dispatched via
35  // DispatchConnected. Tests for connected events need to first connect(),
36  // then set the gamepad data and finally call dispatchConnected().
37  // We should consider renaming Connect to Init and DispatchConnected to
38  // Connect and at the same time updating all the gamepad tests.
39  void Connect(int index);
40  void DispatchConnected(int index);
41
42  void Disconnect(int index);
43  void SetId(int index, const std::string& src);
44  void SetButtonCount(int index, int buttons);
45  void SetButtonData(int index, int button, double data);
46  void SetAxisCount(int index, int axes);
47  void SetAxisData(int index, int axis, double data);
48
49  blink::WebGamepads gamepads_;
50
51  WebTestRunner::WebTestDelegate* delegate_;
52
53  base::WeakPtrFactory<GamepadController> weak_factory_;
54
55  DISALLOW_COPY_AND_ASSIGN(GamepadController);
56};
57
58}  // namespace content
59
60#endif  // CONTENT_SHELL_RENDERER_TEST_RUNNER_GAMEPAD_CONTROLLER_H_
61