// third_party/blink/public/mojom/hid/hid.mojom-blink-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 THIRD_PARTY_BLINK_PUBLIC_MOJOM_HID_HID_MOJOM_BLINK_TEST_UTILS_H_
#define THIRD_PARTY_BLINK_PUBLIC_MOJOM_HID_HID_MOJOM_BLINK_TEST_UTILS_H_

#include "third_party/blink/public/mojom/hid/hid.mojom-blink.h"
#include "third_party/blink/renderer/platform/platform_export.h"


namespace blink::mojom::blink {


class PLATFORM_EXPORT HidServiceInterceptorForTesting : public HidService {
  virtual HidService* GetForwardingInterface() = 0;
  void RegisterClient(::mojo::PendingAssociatedRemote<::device::mojom::blink::HidManagerClient> client) override;
  void GetDevices(GetDevicesCallback callback) override;
  void RequestDevice(::blink::Vector<HidDeviceFilterPtr> filters, ::blink::Vector<HidDeviceFilterPtr> exclusion_filters, RequestDeviceCallback callback) override;
  void Connect(const ::blink::String& device_guid, ::mojo::PendingRemote<::device::mojom::blink::HidConnectionClient> client, ConnectCallback callback) override;
  void Forget(::device::mojom::blink::HidDeviceInfoPtr device_info, ForgetCallback callback) override;
};
class PLATFORM_EXPORT HidServiceAsyncWaiter {
 public:
  explicit HidServiceAsyncWaiter(HidService* proxy);

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

  ~HidServiceAsyncWaiter();
  void GetDevices(
      ::blink::Vector<::device::mojom::blink::HidDeviceInfoPtr>* out_devices);
  ::blink::Vector<::device::mojom::blink::HidDeviceInfoPtr> GetDevices();
  void RequestDevice(
      ::blink::Vector<HidDeviceFilterPtr> filters, ::blink::Vector<HidDeviceFilterPtr> exclusion_filters, ::blink::Vector<::device::mojom::blink::HidDeviceInfoPtr>* out_devices);
  ::blink::Vector<::device::mojom::blink::HidDeviceInfoPtr> RequestDevice(::blink::Vector<HidDeviceFilterPtr> filters, ::blink::Vector<HidDeviceFilterPtr> exclusion_filters);
  void Connect(
      const ::blink::String& device_guid, ::mojo::PendingRemote<::device::mojom::blink::HidConnectionClient> client, ::mojo::PendingRemote<::device::mojom::blink::HidConnection>* out_connection);
  ::mojo::PendingRemote<::device::mojom::blink::HidConnection> Connect(const ::blink::String& device_guid, ::mojo::PendingRemote<::device::mojom::blink::HidConnectionClient> client);
  void Forget(
      ::device::mojom::blink::HidDeviceInfoPtr device_info);
  

 private:
  HidService* const proxy_;
};




}  // blink::mojom::blink

#endif  // THIRD_PARTY_BLINK_PUBLIC_MOJOM_HID_HID_MOJOM_BLINK_TEST_UTILS_H_