// components/optimization_guide/public/mojom/model_broker_debug.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 COMPONENTS_OPTIMIZATION_GUIDE_PUBLIC_MOJOM_MODEL_BROKER_DEBUG_MOJOM_TEST_UTILS_H_
#define COMPONENTS_OPTIMIZATION_GUIDE_PUBLIC_MOJOM_MODEL_BROKER_DEBUG_MOJOM_TEST_UTILS_H_

#include "components/optimization_guide/public/mojom/model_broker_debug.mojom.h"


namespace optimization_guide::mojom {


class  ModelBrokerDebugObserverInterceptorForTesting : public ModelBrokerDebugObserver {
  virtual ModelBrokerDebugObserver* GetForwardingInterface() = 0;
  void OnBrokerStateChanged() override;
};
class  ModelBrokerDebugObserverAsyncWaiter {
 public:
  explicit ModelBrokerDebugObserverAsyncWaiter(ModelBrokerDebugObserver* proxy);

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

  ~ModelBrokerDebugObserverAsyncWaiter();

 private:
  ModelBrokerDebugObserver* const proxy_;
};


class  ModelBrokerDebugInterceptorForTesting : public ModelBrokerDebug {
  virtual ModelBrokerDebug* GetForwardingInterface() = 0;
  void GetStateInfo(GetStateInfoCallback callback) override;
  void SetUseCaseRequested(const std::string& use_case, bool requested) override;
  void UninstallModels() override;
  void ResetModelCrashCount() override;
  void AddObserver(::mojo::PendingRemote<ModelBrokerDebugObserver> observer) override;
  void AddAssetDownloadObserver(const std::string& asset_name, ::mojo::PendingRemote<::on_device_model::mojom::DownloadObserver> observer) override;
};
class  ModelBrokerDebugAsyncWaiter {
 public:
  explicit ModelBrokerDebugAsyncWaiter(ModelBrokerDebug* proxy);

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

  ~ModelBrokerDebugAsyncWaiter();
  void GetStateInfo(
      BrokerStateInfoPtr* out_state);
  BrokerStateInfoPtr GetStateInfo();

 private:
  ModelBrokerDebug* const proxy_;
};




}  // optimization_guide::mojom

#endif  // COMPONENTS_OPTIMIZATION_GUIDE_PUBLIC_MOJOM_MODEL_BROKER_DEBUG_MOJOM_TEST_UTILS_H_