// services/webnn/public/mojom/webnn_service_introspection.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_WEBNN_PUBLIC_MOJOM_WEBNN_SERVICE_INTROSPECTION_MOJOM_TEST_UTILS_H_
#define SERVICES_WEBNN_PUBLIC_MOJOM_WEBNN_SERVICE_INTROSPECTION_MOJOM_TEST_UTILS_H_

#include "services/webnn/public/mojom/webnn_service_introspection.mojom.h"
#include "base/component_export.h"


namespace webnn::mojom {


class COMPONENT_EXPORT(WEBNN_MOJOM_WEBNN_SERVICE_INTROSPECTION) WebNNServiceIntrospectionClientInterceptorForTesting : public WebNNServiceIntrospectionClient {
  virtual WebNNServiceIntrospectionClient* GetForwardingInterface() = 0;
  void OnUpdateExistingContextDetails(std::vector<WebNNContextIntrospectionDetailsPtr> contexts_details) override;
  void OnUpdateAvailableExecutionProvidersDetails(std::vector<WebNNExecutionProviderDetailsPtr> available_execution_providers) override;
};
class COMPONENT_EXPORT(WEBNN_MOJOM_WEBNN_SERVICE_INTROSPECTION) WebNNServiceIntrospectionClientAsyncWaiter {
 public:
  explicit WebNNServiceIntrospectionClientAsyncWaiter(WebNNServiceIntrospectionClient* proxy);

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

  ~WebNNServiceIntrospectionClientAsyncWaiter();

 private:
  WebNNServiceIntrospectionClient* const proxy_;
};


class COMPONENT_EXPORT(WEBNN_MOJOM_WEBNN_SERVICE_INTROSPECTION) WebNNServiceIntrospectionInterceptorForTesting : public WebNNServiceIntrospection {
  virtual WebNNServiceIntrospection* GetForwardingInterface() = 0;
  void SetClient(::mojo::PendingRemote<WebNNServiceIntrospectionClient> client) override;
  void GetExistingContextsDetails(GetExistingContextsDetailsCallback callback) override;
  void GetAvailableExecutionProvidersDetails(GetAvailableExecutionProvidersDetailsCallback callback) override;
};
class COMPONENT_EXPORT(WEBNN_MOJOM_WEBNN_SERVICE_INTROSPECTION) WebNNServiceIntrospectionAsyncWaiter {
 public:
  explicit WebNNServiceIntrospectionAsyncWaiter(WebNNServiceIntrospection* proxy);

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

  ~WebNNServiceIntrospectionAsyncWaiter();
  void GetExistingContextsDetails(
      std::vector<WebNNContextIntrospectionDetailsPtr>* out_contexts_details);
  std::vector<WebNNContextIntrospectionDetailsPtr> GetExistingContextsDetails();
  void GetAvailableExecutionProvidersDetails(
      std::vector<WebNNExecutionProviderDetailsPtr>* out_execution_providers);
  std::vector<WebNNExecutionProviderDetailsPtr> GetAvailableExecutionProvidersDetails();

 private:
  WebNNServiceIntrospection* const proxy_;
};




}  // webnn::mojom

#endif  // SERVICES_WEBNN_PUBLIC_MOJOM_WEBNN_SERVICE_INTROSPECTION_MOJOM_TEST_UTILS_H_