fake_sensor_service.h 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // Copyright 2020 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 CHROMEOS_COMPONENTS_SENSORS_FAKE_SENSOR_SERVICE_H_
  5. #define CHROMEOS_COMPONENTS_SENSORS_FAKE_SENSOR_SERVICE_H_
  6. #include <map>
  7. #include <set>
  8. #include <vector>
  9. #include "base/sequence_checker.h"
  10. #include "chromeos/components/sensors/fake_sensor_device.h"
  11. #include "chromeos/components/sensors/mojom/sensor.mojom.h"
  12. #include "mojo/public/cpp/bindings/receiver_set.h"
  13. #include "mojo/public/cpp/bindings/remote_set.h"
  14. namespace chromeos {
  15. namespace sensors {
  16. class FakeSensorService final : public mojom::SensorService {
  17. public:
  18. FakeSensorService();
  19. FakeSensorService(const FakeSensorService&) = delete;
  20. FakeSensorService& operator=(const FakeSensorService&) = delete;
  21. ~FakeSensorService() override;
  22. void AddReceiver(
  23. mojo::PendingReceiver<mojom::SensorService> pending_receiver);
  24. void ClearReceivers();
  25. bool HasReceivers() const;
  26. void SetDevice(int32_t iio_device_id,
  27. std::set<mojom::DeviceType> types,
  28. std::unique_ptr<FakeSensorDevice> sensor_device);
  29. // Implementation of mojom::SensorService.
  30. void GetDeviceIds(mojom::DeviceType type,
  31. GetDeviceIdsCallback callback) override;
  32. void GetAllDeviceIds(GetAllDeviceIdsCallback callback) override;
  33. void GetDevice(
  34. int32_t iio_device_id,
  35. mojo::PendingReceiver<mojom::SensorDevice> device_request) override;
  36. void RegisterNewDevicesObserver(
  37. mojo::PendingRemote<mojom::SensorServiceNewDevicesObserver> observer)
  38. override;
  39. private:
  40. struct DeviceData {
  41. DeviceData();
  42. DeviceData(DeviceData&&);
  43. DeviceData& operator=(DeviceData&&);
  44. ~DeviceData();
  45. std::set<mojom::DeviceType> types;
  46. std::unique_ptr<FakeSensorDevice> sensor_device;
  47. };
  48. // First is the iio_device_id, second is the device's data.
  49. std::map<int32_t, DeviceData> devices_;
  50. mojo::ReceiverSet<mojom::SensorService> receiver_set_;
  51. mojo::RemoteSet<mojom::SensorServiceNewDevicesObserver> observers_;
  52. SEQUENCE_CHECKER(sequence_checker_);
  53. };
  54. } // namespace sensors
  55. } // namespace chromeos
  56. #endif // CHROMEOS_COMPONENTS_SENSORS_FAKE_SENSOR_SERVICE_H_