fake_igamepad.h 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. // Copyright 2021 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. #ifndef DEVICE_GAMEPAD_TEST_SUPPORT_FAKE_IGAMEPAD_H_
  5. #define DEVICE_GAMEPAD_TEST_SUPPORT_FAKE_IGAMEPAD_H_
  6. #include <stdint.h>
  7. #include <windows.foundation.collections.h>
  8. #include <windows.gaming.input.h>
  9. #include <wrl.h>
  10. namespace device {
  11. class FakeIGamepad final
  12. : public Microsoft::WRL::RuntimeClass<
  13. Microsoft::WRL::RuntimeClassFlags<
  14. Microsoft::WRL::WinRt | Microsoft::WRL::InhibitRoOriginateError>,
  15. ABI::Windows::Gaming::Input::IGamepad,
  16. ABI::Windows::Gaming::Input::IGamepad2,
  17. ABI::Windows::Gaming::Input::IGameController> {
  18. public:
  19. FakeIGamepad();
  20. FakeIGamepad(const FakeIGamepad&) = delete;
  21. FakeIGamepad& operator=(const FakeIGamepad&) = delete;
  22. // ABI::Windows::Gaming::Input::IGamepad fake implementation.
  23. HRESULT WINAPI get_Vibration(ABI::Windows::Gaming::Input::GamepadVibration*
  24. gamepad_vibration) override;
  25. HRESULT WINAPI put_Vibration(
  26. ABI::Windows::Gaming::Input::GamepadVibration gamepad_vibration) override;
  27. HRESULT WINAPI GetCurrentReading(
  28. ABI::Windows::Gaming::Input::GamepadReading* gamepad_reading) override;
  29. // ABI::Windows::Gaming::Input::IGamepad2 fake implementation.
  30. HRESULT WINAPI GetButtonLabel(
  31. ABI::Windows::Gaming::Input::GamepadButtons button,
  32. ABI::Windows::Gaming::Input::GameControllerButtonLabel* value) override;
  33. // ABI::Windows::Gaming::Input::IGameController fake implementation.
  34. HRESULT WINAPI
  35. add_HeadsetConnected(ABI::Windows::Foundation::ITypedEventHandler<
  36. ABI::Windows::Gaming::Input::IGameController*,
  37. ABI::Windows::Gaming::Input::Headset*>* value,
  38. EventRegistrationToken* token) override;
  39. HRESULT WINAPI remove_HeadsetConnected(EventRegistrationToken token) override;
  40. HRESULT WINAPI
  41. add_HeadsetDisconnected(ABI::Windows::Foundation::ITypedEventHandler<
  42. ABI::Windows::Gaming::Input::IGameController*,
  43. ABI::Windows::Gaming::Input::Headset*>* value,
  44. EventRegistrationToken* token) override;
  45. HRESULT WINAPI
  46. remove_HeadsetDisconnected(EventRegistrationToken token) override;
  47. HRESULT WINAPI
  48. add_UserChanged(ABI::Windows::Foundation::ITypedEventHandler<
  49. ABI::Windows::Gaming::Input::IGameController*,
  50. ABI::Windows::System::UserChangedEventArgs*>* value,
  51. EventRegistrationToken* token) override;
  52. HRESULT WINAPI remove_UserChanged(EventRegistrationToken token) override;
  53. HRESULT WINAPI
  54. get_Headset(ABI::Windows::Gaming::Input::IHeadset** value) override;
  55. HRESULT WINAPI get_IsWireless(boolean* value) override;
  56. HRESULT WINAPI get_User(ABI::Windows::System::IUser** value) override;
  57. void SetCurrentReading(
  58. const ABI::Windows::Gaming::Input::GamepadReading& gamepad_reading);
  59. uint64_t GetId() { return gamepad_id_; }
  60. void SetId(uint64_t gamepad_id) { gamepad_id_ = gamepad_id; }
  61. void SetHasPaddles(bool has_paddles) { has_paddles_ = has_paddles; }
  62. private:
  63. ~FakeIGamepad() override;
  64. uint64_t gamepad_id_;
  65. bool has_paddles_ = false;
  66. ABI::Windows::Gaming::Input::GamepadReading fake_gamepad_reading_;
  67. ABI::Windows::Gaming::Input::GamepadVibration fake_gamepad_vibration_;
  68. };
  69. } // namespace device
  70. #endif // DEVICE_GAMEPAD_TEST_SUPPORT_FAKE_IGAMEPAD_H_