1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
// 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_
|