// services/device/public/mojom/sensor_provider.mojom-test-utils.h is auto generated by mojom_bindings_generator.py, do not edit

// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef SERVICES_DEVICE_PUBLIC_MOJOM_SENSOR_PROVIDER_MOJOM_TEST_UTILS_H_
#define SERVICES_DEVICE_PUBLIC_MOJOM_SENSOR_PROVIDER_MOJOM_TEST_UTILS_H_

#include "services/device/public/mojom/sensor_provider.mojom.h"


namespace device::mojom {


class  SensorClientControllerInterceptorForTesting : public SensorClientController {
  virtual SensorClientController* GetForwardingInterface() = 0;
  void Suspend() override;
  void Resume() override;
};
class  SensorClientControllerAsyncWaiter {
 public:
  explicit SensorClientControllerAsyncWaiter(SensorClientController* proxy);

  SensorClientControllerAsyncWaiter(const SensorClientControllerAsyncWaiter&) = delete;
  SensorClientControllerAsyncWaiter& operator=(const SensorClientControllerAsyncWaiter&) = delete;

  ~SensorClientControllerAsyncWaiter();

 private:
  SensorClientController* const proxy_;
};


class  SensorProviderInterceptorForTesting : public SensorProvider {
  virtual SensorProvider* GetForwardingInterface() = 0;
  void GetSensor(::device::mojom::SensorType type, ::mojo::PendingReceiver<SensorClientController> controller, bool initially_suspended, GetSensorCallback callback) override;
  void CreateVirtualSensor(::device::mojom::SensorType type, VirtualSensorMetadataPtr metadata, CreateVirtualSensorCallback callback) override;
  void UpdateVirtualSensor(::device::mojom::SensorType type, const ::device::SensorReading& reading, UpdateVirtualSensorCallback callback) override;
  void RemoveVirtualSensor(::device::mojom::SensorType type, RemoveVirtualSensorCallback callback) override;
  void GetVirtualSensorInformation(::device::mojom::SensorType type, GetVirtualSensorInformationCallback callback) override;
};
class  SensorProviderAsyncWaiter {
 public:
  explicit SensorProviderAsyncWaiter(SensorProvider* proxy);

  SensorProviderAsyncWaiter(const SensorProviderAsyncWaiter&) = delete;
  SensorProviderAsyncWaiter& operator=(const SensorProviderAsyncWaiter&) = delete;

  ~SensorProviderAsyncWaiter();
  void GetSensor(
      ::device::mojom::SensorType type, ::mojo::PendingReceiver<SensorClientController> controller, bool initially_suspended, SensorCreationResult* out_result, SensorInitParamsPtr* out_init_params);
  
  void CreateVirtualSensor(
      ::device::mojom::SensorType type, VirtualSensorMetadataPtr metadata, CreateVirtualSensorResult* out_result);
  CreateVirtualSensorResult CreateVirtualSensor(::device::mojom::SensorType type, VirtualSensorMetadataPtr metadata);
  void UpdateVirtualSensor(
      ::device::mojom::SensorType type, const ::device::SensorReading& reading, UpdateVirtualSensorResult* out_result);
  UpdateVirtualSensorResult UpdateVirtualSensor(::device::mojom::SensorType type, const ::device::SensorReading& reading);
  void RemoveVirtualSensor(
      ::device::mojom::SensorType type);
  
  void GetVirtualSensorInformation(
      ::device::mojom::SensorType type, GetVirtualSensorInformationResultPtr* out_result);
  GetVirtualSensorInformationResultPtr GetVirtualSensorInformation(::device::mojom::SensorType type);

 private:
  SensorProvider* const proxy_;
};




}  // device::mojom

#endif  // SERVICES_DEVICE_PUBLIC_MOJOM_SENSOR_PROVIDER_MOJOM_TEST_UTILS_H_