| Index: content/browser/gamepad/gamepad_test_helpers.h
|
| diff --git a/content/browser/gamepad/gamepad_test_helpers.h b/content/browser/gamepad/gamepad_test_helpers.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a31b147e59b319adcca07d2f030597ba0901545c
|
| --- /dev/null
|
| +++ b/content/browser/gamepad/gamepad_test_helpers.h
|
| @@ -0,0 +1,90 @@
|
| +// Copyright (c) 2012 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 CONTENT_BROWSER_GAMEPAD_GAMEPAD_TEST_HELPERS_H_
|
| +#define CONTENT_BROWSER_GAMEPAD_GAMEPAD_TEST_HELPERS_H_
|
| +
|
| +#include "base/memory/scoped_ptr.h"
|
| +#include "base/message_loop.h"
|
| +#include "base/synchronization/lock.h"
|
| +#include "base/synchronization/waitable_event.h"
|
| +#include "content/browser/gamepad/gamepad_data_fetcher.h"
|
| +#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebGamepads.h"
|
| +
|
| +namespace base {
|
| +class SystemMonitor;
|
| +}
|
| +
|
| +namespace content {
|
| +
|
| +class GamepadService;
|
| +
|
| +// Data fetcher that returns canned data for the gamepad provider.
|
| +class MockGamepadDataFetcher : public GamepadDataFetcher {
|
| + public:
|
| + // Initializes the fetcher with the given gamepad data, which will be
|
| + // returned when the provider queries us.
|
| + explicit MockGamepadDataFetcher(const WebKit::WebGamepads& test_data);
|
| +
|
| + virtual ~MockGamepadDataFetcher();
|
| +
|
| + // GamepadDataFetcher.
|
| + virtual void GetGamepadData(WebKit::WebGamepads* pads,
|
| + bool devices_changed_hint) OVERRIDE;
|
| +
|
| + // Blocks the current thread until the GamepadProvider reads from this
|
| + // fetcher on the background thread.
|
| + void WaitForDataRead();
|
| +
|
| + // Updates the test data.
|
| + void SetTestData(const WebKit::WebGamepads& new_data);
|
| +
|
| + private:
|
| + base::Lock lock_;
|
| + WebKit::WebGamepads test_data_;
|
| + base::WaitableEvent read_data_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(MockGamepadDataFetcher);
|
| +};
|
| +
|
| +// Base class for the other test helpers. This just sets up the system monitor.
|
| +class GamepadTestHelper {
|
| + public:
|
| + GamepadTestHelper();
|
| + virtual ~GamepadTestHelper();
|
| +
|
| + MessageLoop& message_loop() { return message_loop_; }
|
| +
|
| + private:
|
| + // This must be constructed before the system monitor.
|
| + MessageLoop message_loop_;
|
| +
|
| + scoped_ptr<base::SystemMonitor> system_monitor_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(GamepadTestHelper);
|
| +};
|
| +
|
| +// Constructs a GamepadService with a mock data source. This bypasses the
|
| +// global singleton for the gamepad service.
|
| +class GamepadServiceTestConstructor : public GamepadTestHelper {
|
| + public:
|
| + GamepadServiceTestConstructor(const WebKit::WebGamepads& test_data);
|
| + virtual ~GamepadServiceTestConstructor();
|
| +
|
| + GamepadService* gamepad_service() { return gamepad_service_; }
|
| + MockGamepadDataFetcher* data_fetcher() { return data_fetcher_; }
|
| +
|
| + private:
|
| + // Owning pointer (can't be a scoped_ptr due to private destructor).
|
| + GamepadService* gamepad_service_;
|
| +
|
| + // Pointer owned by the provider (which is owned by the gamepad service).
|
| + MockGamepadDataFetcher* data_fetcher_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(GamepadServiceTestConstructor);
|
| +};
|
| +
|
| +} // namespace content
|
| +
|
| +#endif // CONTENT_BROWSER_GAMEPAD_GAMEPAD_TEST_HELPERS_H_
|
|
|