| Index: components/exo/gamepad.h
|
| diff --git a/components/exo/gamepad.h b/components/exo/gamepad.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..9d960921409525b2762ea025ae8da5730ee3ed7a
|
| --- /dev/null
|
| +++ b/components/exo/gamepad.h
|
| @@ -0,0 +1,72 @@
|
| +// Copyright 2016 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_EXO_GAMEPAD_H_
|
| +#define COMPONENTS_EXO_GAMEPAD_H_
|
| +
|
| +#include <memory>
|
| +
|
| +#include "base/macros.h"
|
| +#include "base/sequenced_task_runner.h"
|
| +#include "base/threading/thread.h"
|
| +#include "base/threading/thread_task_runner_handle.h"
|
| +#include "device/gamepad/gamepad_data_fetcher.h"
|
| +
|
| +namespace exo {
|
| +class GamepadDelegate;
|
| +
|
| +// This class represents a gamepad, it implements a background thread
|
| +// for polling gamepad devices and notifies the GamepadDelegate of any
|
| +// changes.
|
| +class Gamepad {
|
| + public:
|
| + // This class will post tasks to invoke the delegate on the thread runner
|
| + // which is associated with the thread that is creating this instance.
|
| + Gamepad(size_t id, GamepadDelegate* delegate);
|
| +
|
| + // Allows test cases to specify a GamepadDataFetcher to provide mock gamepad
|
| + // data.
|
| + Gamepad(size_t id,
|
| + GamepadDelegate* delegate,
|
| + std::unique_ptr<device::GamepadDataFetcher> fetcher);
|
| + virtual ~Gamepad();
|
| +
|
| + private:
|
| + // Schedules a poll on the polling thread. Can be called from any thread.
|
| + void ScheduleOnPoll();
|
| +
|
| + // Polls devices for new data and posts delegate updates.
|
| + // Can only be called on the polling thread.
|
| + void OnPoll();
|
| +
|
| + // Initializes the underlying gamepad data fetcher.
|
| + // Can only be called on the polling thread.
|
| + void InitializePollingThread();
|
| +
|
| + // Gamepad id
|
| + size_t id_;
|
| +
|
| + // The delegate instance that all events are dispatched to.
|
| + GamepadDelegate* const delegate_;
|
| +
|
| + // Implements the logic to fetch gamepad information from connected devices.
|
| + std::unique_ptr<device::GamepadDataFetcher> fetcher_;
|
| +
|
| + // The thread on which the polling is executed.
|
| + std::unique_ptr<base::Thread> polling_thread_;
|
| +
|
| + // The current state of gamepad.
|
| + blink::WebGamepads state_;
|
| +
|
| + // Reference to the task runner of the thread that created this instance.
|
| + scoped_refptr<base::SingleThreadTaskRunner> origin_task_runner_;
|
| +
|
| + base::ThreadChecker thread_checker_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(Gamepad);
|
| +};
|
| +
|
| +} // namespace exo
|
| +
|
| +#endif // COMPONENTS_EXO_GAMEPAD_H_
|
|
|