| // Copyright 2020 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 DEVICE_BLUETOOTH_TEST_FAKE_GATT_SESSION_WINRT_H_ |
| #define DEVICE_BLUETOOTH_TEST_FAKE_GATT_SESSION_WINRT_H_ |
| |
| #include <windows.devices.bluetooth.genericattributeprofile.h> |
| #include <windows.devices.bluetooth.h> |
| #include <windows.foundation.h> |
| #include <wrl/client.h> |
| #include <wrl/implements.h> |
| |
| namespace device { |
| |
| class BluetoothTestWinrt; |
| |
| class FakeGattSessionWinrt |
| : public Microsoft::WRL::RuntimeClass< |
| Microsoft::WRL::RuntimeClassFlags< |
| Microsoft::WRL::WinRt | Microsoft::WRL::InhibitRoOriginateError>, |
| ABI::Windows::Devices::Bluetooth::GenericAttributeProfile:: |
| IGattSession, |
| ABI::Windows::Foundation::IClosable> { |
| public: |
| FakeGattSessionWinrt(BluetoothTestWinrt* bluetooth_test_winrt); |
| FakeGattSessionWinrt(const FakeGattSessionWinrt&) = delete; |
| FakeGattSessionWinrt& operator=(const FakeGattSessionWinrt&) = delete; |
| ~FakeGattSessionWinrt() override; |
| |
| void SimulateGattConnection(); |
| void SimulateGattDisconnection(); |
| void SimulateGattConnectionError(); |
| |
| // IGattSession: |
| IFACEMETHODIMP get_DeviceId( |
| ABI::Windows::Devices::Bluetooth::IBluetoothDeviceId** value) override; |
| IFACEMETHODIMP get_CanMaintainConnection(::boolean* value) override; |
| IFACEMETHODIMP put_MaintainConnection(::boolean value) override; |
| IFACEMETHODIMP get_MaintainConnection(::boolean* value) override; |
| IFACEMETHODIMP get_MaxPduSize(UINT16* value) override; |
| IFACEMETHODIMP get_SessionStatus( |
| ABI::Windows::Devices::Bluetooth::GenericAttributeProfile:: |
| GattSessionStatus* value) override; |
| IFACEMETHODIMP add_MaxPduSizeChanged( |
| ABI::Windows::Foundation::ITypedEventHandler< |
| ABI::Windows::Devices::Bluetooth::GenericAttributeProfile:: |
| GattSession*, |
| IInspectable*>* handler, |
| EventRegistrationToken* token) override; |
| IFACEMETHODIMP |
| remove_MaxPduSizeChanged(EventRegistrationToken token) override; |
| IFACEMETHODIMP add_SessionStatusChanged( |
| ABI::Windows::Foundation::ITypedEventHandler< |
| ABI::Windows::Devices::Bluetooth::GenericAttributeProfile:: |
| GattSession*, |
| ABI::Windows::Devices::Bluetooth::GenericAttributeProfile:: |
| GattSessionStatusChangedEventArgs*>* handler, |
| EventRegistrationToken* token) override; |
| IFACEMETHODIMP |
| remove_SessionStatusChanged(EventRegistrationToken token) override; |
| |
| // IClosable: |
| IFACEMETHODIMP Close() override; |
| |
| private: |
| BluetoothTestWinrt* bluetooth_test_winrt_ = nullptr; |
| bool maintain_connection_ = false; |
| |
| ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::GattSessionStatus |
| status_ = ABI::Windows::Devices::Bluetooth::GenericAttributeProfile:: |
| GattSessionStatus_Closed; |
| |
| Microsoft::WRL::ComPtr<ABI::Windows::Foundation::ITypedEventHandler< |
| ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::GattSession*, |
| ABI::Windows::Devices::Bluetooth::GenericAttributeProfile:: |
| GattSessionStatusChangedEventArgs*>> |
| status_changed_handler_; |
| }; |
| |
| class FakeGattSessionStaticsWinrt |
| : public Microsoft::WRL::RuntimeClass< |
| Microsoft::WRL::RuntimeClassFlags< |
| Microsoft::WRL::WinRt | Microsoft::WRL::InhibitRoOriginateError>, |
| ABI::Windows::Devices::Bluetooth::GenericAttributeProfile:: |
| IGattSessionStatics> { |
| public: |
| FakeGattSessionStaticsWinrt(BluetoothTestWinrt* bluetooth_test_winrt); |
| FakeGattSessionStaticsWinrt(const FakeGattSessionStaticsWinrt&) = delete; |
| FakeGattSessionStaticsWinrt& operator=(const FakeGattSessionStaticsWinrt&) = |
| delete; |
| ~FakeGattSessionStaticsWinrt() override; |
| |
| // IGattSessionStatics: |
| IFACEMETHODIMP FromDeviceIdAsync( |
| ABI::Windows::Devices::Bluetooth::IBluetoothDeviceId* device_id, |
| ABI::Windows::Foundation::IAsyncOperation< |
| ABI::Windows::Devices::Bluetooth::GenericAttributeProfile:: |
| GattSession*>** operation) override; |
| |
| private: |
| BluetoothTestWinrt* bluetooth_test_winrt_ = nullptr; |
| }; |
| |
| } // namespace device |
| |
| #endif // DEVICE_BLUETOOTH_TEST_FAKE_GATT_SESSION_WINRT_H_ |