| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef COMPONENTS_TEST_RUNNER_GAMEPAD_CONTROLLER_H_ |
| #define COMPONENTS_TEST_RUNNER_GAMEPAD_CONTROLLER_H_ |
| |
| #include <map> |
| |
| #include "base/macros.h" |
| #include "base/memory/weak_ptr.h" |
| #include "components/test_runner/test_runner_export.h" |
| #include "third_party/WebKit/public/platform/WebGamepads.h" |
| |
| namespace blink { |
| class WebFrame; |
| class WebGamepadListener; |
| } |
| |
| namespace test_runner { |
| |
| class WebTestDelegate; |
| |
| class TEST_RUNNER_EXPORT GamepadController |
| : public base::SupportsWeakPtr<GamepadController> { |
| public: |
| static base::WeakPtr<GamepadController> Create(WebTestDelegate* delegate); |
| ~GamepadController(); |
| |
| void Reset(); |
| void Install(blink::WebFrame* frame); |
| |
| void SampleGamepads(blink::WebGamepads& gamepads); |
| void SetListener(blink::WebGamepadListener* listener); |
| |
| private: |
| friend class GamepadControllerBindings; |
| GamepadController(); |
| |
| // TODO(b.kelemen): for historical reasons Connect just initializes the |
| // object. The 'gamepadconnected' event will be dispatched via |
| // DispatchConnected. Tests for connected events need to first connect(), |
| // then set the gamepad data and finally call dispatchConnected(). |
| // We should consider renaming Connect to Init and DispatchConnected to |
| // Connect and at the same time updating all the gamepad tests. |
| void Connect(int index); |
| void DispatchConnected(int index); |
| |
| void Disconnect(int index); |
| void SetId(int index, const std::string& src); |
| void SetButtonCount(int index, int buttons); |
| void SetButtonData(int index, int button, double data); |
| void SetAxisCount(int index, int axes); |
| void SetAxisData(int index, int axis, double data); |
| |
| blink::WebGamepadListener* listener_; |
| |
| blink::WebGamepads gamepads_; |
| |
| // Mapping from gamepad index to connection state. |
| std::map<int, bool> pending_changes_; |
| |
| base::WeakPtrFactory<GamepadController> weak_factory_; |
| |
| DISALLOW_COPY_AND_ASSIGN(GamepadController); |
| }; |
| |
| } // namespace test_runner |
| |
| #endif // COMPONENTS_TEST_RUNNER_GAMEPAD_CONTROLLER_H_ |