// services/webnn/public/mojom/webnn_tensor.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_TENSOR_MOJOM_TEST_UTILS_H_
#define SERVICES_WEBNN_PUBLIC_MOJOM_WEBNN_TENSOR_MOJOM_TEST_UTILS_H_

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


namespace webnn::mojom {


class COMPONENT_EXPORT(WEBNN_MOJOM) WebNNTensorInterceptorForTesting : public WebNNTensor {
  virtual WebNNTensor* GetForwardingInterface() = 0;
  void ReadTensor(ReadTensorCallback callback) override;
  void WriteTensor(::mojo_base::BigBuffer src_buffer) override;
  void ExportTensor(uint64_t flow_id, uint64_t release_count) override;
  void ExportTensorSync(uint64_t flow_id, uint64_t release_count, ExportTensorSyncCallback callback) override;
  void ImportTensor(uint64_t flow_id, const ::gpu::SyncToken& fence) override;
};
class COMPONENT_EXPORT(WEBNN_MOJOM) WebNNTensorAsyncWaiter {
 public:
  explicit WebNNTensorAsyncWaiter(WebNNTensor* proxy);

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

  ~WebNNTensorAsyncWaiter();
  void ReadTensor(
      ReadTensorResultPtr* out_result);
  ReadTensorResultPtr ReadTensor();
  void ExportTensorSync(
      uint64_t flow_id, uint64_t release_count);
  

 private:
  WebNNTensor* const proxy_;
};




}  // webnn::mojom

#endif  // SERVICES_WEBNN_PUBLIC_MOJOM_WEBNN_TENSOR_MOJOM_TEST_UTILS_H_