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 "content/browser/gamepad/gamepad_service.h" 8 9 namespace content { 10 11 MockGamepadDataFetcher::MockGamepadDataFetcher( 12 const blink::WebGamepads& test_data) 13 : test_data_(test_data), 14 read_data_(false, false) { 15 } 16 17 MockGamepadDataFetcher::~MockGamepadDataFetcher() { 18 } 19 20 void MockGamepadDataFetcher::GetGamepadData(blink::WebGamepads* pads, 21 bool devices_changed_hint) { 22 { 23 base::AutoLock lock(lock_); 24 *pads = test_data_; 25 } 26 read_data_.Signal(); 27 } 28 29 void MockGamepadDataFetcher::WaitForDataRead() { 30 return read_data_.Wait(); 31 } 32 33 void MockGamepadDataFetcher::WaitForDataReadAndCallbacksIssued() { 34 // The provider will read the data on the background thread (setting the 35 // event) and *then* will issue the callback on the client thread. Waiting for 36 // it to read twice is a simple way to ensure that it was able to issue 37 // callbacks for the first read (if it issued one). 38 WaitForDataRead(); 39 WaitForDataRead(); 40 } 41 42 void MockGamepadDataFetcher::SetTestData(const blink::WebGamepads& new_data) { 43 base::AutoLock lock(lock_); 44 test_data_ = new_data; 45 } 46 47 GamepadTestHelper::GamepadTestHelper() { 48 } 49 50 GamepadTestHelper::~GamepadTestHelper() { 51 } 52 53 GamepadServiceTestConstructor::GamepadServiceTestConstructor( 54 const blink::WebGamepads& test_data) { 55 data_fetcher_ = new MockGamepadDataFetcher(test_data); 56 gamepad_service_ = 57 new GamepadService(scoped_ptr<GamepadDataFetcher>(data_fetcher_)); 58 } 59 60 GamepadServiceTestConstructor::~GamepadServiceTestConstructor() { 61 delete gamepad_service_; 62 } 63 64 } // namespace content 65