// media/mojo/mojom/audio_encoder.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 MEDIA_MOJO_MOJOM_AUDIO_ENCODER_MOJOM_BLINK_TEST_UTILS_H_
#define MEDIA_MOJO_MOJOM_AUDIO_ENCODER_MOJOM_BLINK_TEST_UTILS_H_

#include "media/mojo/mojom/audio_encoder.mojom-blink.h"
#include "third_party/blink/public/platform/web_common.h"


namespace media::mojom::blink {


class BLINK_PLATFORM_EXPORT AudioEncoderInterceptorForTesting : public AudioEncoder {
  virtual AudioEncoder* GetForwardingInterface() = 0;
  void Initialize(::mojo::PendingAssociatedRemote<AudioEncoderClient> client, AudioEncoderConfigPtr config, InitializeCallback callback) override;
  void Encode(::media::mojom::blink::AudioBufferPtr buffer, EncodeCallback callback) override;
  void Flush(FlushCallback callback) override;
};
class BLINK_PLATFORM_EXPORT AudioEncoderAsyncWaiter {
 public:
  explicit AudioEncoderAsyncWaiter(AudioEncoder* proxy);

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

  ~AudioEncoderAsyncWaiter();
  void Initialize(
      ::mojo::PendingAssociatedRemote<AudioEncoderClient> client, AudioEncoderConfigPtr config, ::media::mojom::blink::EncoderStatusPtr* out_status);
  ::media::mojom::blink::EncoderStatusPtr Initialize(::mojo::PendingAssociatedRemote<AudioEncoderClient> client, AudioEncoderConfigPtr config);
  void Encode(
      ::media::mojom::blink::AudioBufferPtr buffer, ::media::mojom::blink::EncoderStatusPtr* out_status);
  ::media::mojom::blink::EncoderStatusPtr Encode(::media::mojom::blink::AudioBufferPtr buffer);
  void Flush(
      ::media::mojom::blink::EncoderStatusPtr* out_status);
  ::media::mojom::blink::EncoderStatusPtr Flush();

 private:
  AudioEncoder* const proxy_;
};


class BLINK_PLATFORM_EXPORT AudioEncoderClientInterceptorForTesting : public AudioEncoderClient {
  virtual AudioEncoderClient* GetForwardingInterface() = 0;
  void OnEncodedBufferReady(EncodedAudioBufferPtr buffer, const ::blink::Vector<uint8_t>& description) override;
};
class BLINK_PLATFORM_EXPORT AudioEncoderClientAsyncWaiter {
 public:
  explicit AudioEncoderClientAsyncWaiter(AudioEncoderClient* proxy);

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

  ~AudioEncoderClientAsyncWaiter();

 private:
  AudioEncoderClient* const proxy_;
};




}  // media::mojom::blink

#endif  // MEDIA_MOJO_MOJOM_AUDIO_ENCODER_MOJOM_BLINK_TEST_UTILS_H_