// services/device/public/mojom/pressure_manager.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_PRESSURE_MANAGER_MOJOM_TEST_UTILS_H_
#define SERVICES_DEVICE_PUBLIC_MOJOM_PRESSURE_MANAGER_MOJOM_TEST_UTILS_H_

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


namespace device::mojom {


class  PressureManagerInterceptorForTesting : public PressureManager {
  virtual PressureManager* GetForwardingInterface() = 0;
  void AddVirtualPressureSource(const ::base::UnguessableToken& token, ::device::mojom::PressureSource source, VirtualPressureSourceMetadataPtr metadata, AddVirtualPressureSourceCallback callback) override;
  void RemoveVirtualPressureSource(const ::base::UnguessableToken& token, ::device::mojom::PressureSource source, RemoveVirtualPressureSourceCallback callback) override;
  void UpdateVirtualPressureSourceState(const ::base::UnguessableToken& token, ::device::mojom::PressureSource source, ::device::mojom::PressureState state, UpdateVirtualPressureSourceStateCallback callback) override;
  void AddClient(::device::mojom::PressureSource source, const std::optional<::base::UnguessableToken>& token, ::mojo::PendingAssociatedRemote<PressureClient> client, AddClientCallback callback) override;
};
class  PressureManagerAsyncWaiter {
 public:
  explicit PressureManagerAsyncWaiter(PressureManager* proxy);

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

  ~PressureManagerAsyncWaiter();
  void AddVirtualPressureSource(
      const ::base::UnguessableToken& token, ::device::mojom::PressureSource source, VirtualPressureSourceMetadataPtr metadata);
  
  void RemoveVirtualPressureSource(
      const ::base::UnguessableToken& token, ::device::mojom::PressureSource source);
  
  void UpdateVirtualPressureSourceState(
      const ::base::UnguessableToken& token, ::device::mojom::PressureSource source, ::device::mojom::PressureState state);
  
  void AddClient(
      ::device::mojom::PressureSource source, const std::optional<::base::UnguessableToken>& token, ::mojo::PendingAssociatedRemote<PressureClient> client, PressureManagerAddClientResult* out_result);
  PressureManagerAddClientResult AddClient(::device::mojom::PressureSource source, const std::optional<::base::UnguessableToken>& token, ::mojo::PendingAssociatedRemote<PressureClient> client);

 private:
  PressureManager* const proxy_;
};


class  PressureClientInterceptorForTesting : public PressureClient {
  virtual PressureClient* GetForwardingInterface() = 0;
  void OnPressureUpdated(::device::mojom::PressureUpdatePtr update) override;
};
class  PressureClientAsyncWaiter {
 public:
  explicit PressureClientAsyncWaiter(PressureClient* proxy);

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

  ~PressureClientAsyncWaiter();

 private:
  PressureClient* const proxy_;
};




}  // device::mojom

#endif  // SERVICES_DEVICE_PUBLIC_MOJOM_PRESSURE_MANAGER_MOJOM_TEST_UTILS_H_