gamepad_test_helpers.cc revision 5821806d5e7f356e8fa4b058a389a808ea183019
1// Copyright (c) 2012 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#include "content/browser/gamepad/gamepad_test_helpers.h"
6
7#include "base/system_monitor/system_monitor.h"
8#include "content/browser/gamepad/gamepad_service.h"
9
10namespace content {
11
12MockGamepadDataFetcher::MockGamepadDataFetcher(
13    const WebKit::WebGamepads& test_data)
14    : test_data_(test_data),
15      read_data_(false, false) {
16}
17
18MockGamepadDataFetcher::~MockGamepadDataFetcher() {
19}
20
21void MockGamepadDataFetcher::GetGamepadData(WebKit::WebGamepads* pads,
22                                            bool devices_changed_hint) {
23  {
24    base::AutoLock lock(lock_);
25    *pads = test_data_;
26  }
27  read_data_.Signal();
28}
29
30void MockGamepadDataFetcher::WaitForDataRead() {
31  return read_data_.Wait();
32}
33
34void MockGamepadDataFetcher::SetTestData(const WebKit::WebGamepads& new_data) {
35  base::AutoLock lock(lock_);
36  test_data_ = new_data;
37}
38
39GamepadTestHelper::GamepadTestHelper() {
40#if defined(OS_MACOSX)
41  base::SystemMonitor::AllocateSystemIOPorts();
42#endif
43  system_monitor_.reset(new base::SystemMonitor);
44}
45
46GamepadTestHelper::~GamepadTestHelper() {
47}
48
49GamepadServiceTestConstructor::GamepadServiceTestConstructor(
50    const WebKit::WebGamepads& test_data) {
51  data_fetcher_ = new MockGamepadDataFetcher(test_data);
52  gamepad_service_ =
53      new GamepadService(scoped_ptr<GamepadDataFetcher>(data_fetcher_));
54}
55
56GamepadServiceTestConstructor::~GamepadServiceTestConstructor() {
57  delete gamepad_service_;
58}
59
60}  // namespace content
61