// media/mojo/mojom/audio_input_stream.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 MEDIA_MOJO_MOJOM_AUDIO_INPUT_STREAM_MOJOM_TEST_UTILS_H_
#define MEDIA_MOJO_MOJOM_AUDIO_INPUT_STREAM_MOJOM_TEST_UTILS_H_

#include "media/mojo/mojom/audio_input_stream.mojom.h"


namespace media::mojom {


class  AudioInputStreamInterceptorForTesting : public AudioInputStream {
  virtual AudioInputStream* GetForwardingInterface() = 0;
  void Record() override;
  void SetVolume(double volume) override;
};
class  AudioInputStreamAsyncWaiter {
 public:
  explicit AudioInputStreamAsyncWaiter(AudioInputStream* proxy);

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

  ~AudioInputStreamAsyncWaiter();

 private:
  AudioInputStream* const proxy_;
};


class  AudioInputStreamClientInterceptorForTesting : public AudioInputStreamClient {
  virtual AudioInputStreamClient* GetForwardingInterface() = 0;
  void OnError(::media::mojom::InputStreamErrorCode code) override;
  void OnMutedStateChanged(bool is_muted) override;
};
class  AudioInputStreamClientAsyncWaiter {
 public:
  explicit AudioInputStreamClientAsyncWaiter(AudioInputStreamClient* proxy);

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

  ~AudioInputStreamClientAsyncWaiter();

 private:
  AudioInputStreamClient* const proxy_;
};


class  AudioInputStreamObserverInterceptorForTesting : public AudioInputStreamObserver {
  virtual AudioInputStreamObserver* GetForwardingInterface() = 0;
  void DidStartRecording() override;
};
class  AudioInputStreamObserverAsyncWaiter {
 public:
  explicit AudioInputStreamObserverAsyncWaiter(AudioInputStreamObserver* proxy);

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

  ~AudioInputStreamObserverAsyncWaiter();

 private:
  AudioInputStreamObserver* const proxy_;
};




}  // media::mojom

#endif  // MEDIA_MOJO_MOJOM_AUDIO_INPUT_STREAM_MOJOM_TEST_UTILS_H_