chromium/chromecast/media/audio/fake_external_audio_pipeline_support.h

// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROMECAST_MEDIA_AUDIO_FAKE_EXTERNAL_AUDIO_PIPELINE_SUPPORT_H_
#define CHROMECAST_MEDIA_AUDIO_FAKE_EXTERNAL_AUDIO_PIPELINE_SUPPORT_H_

#include "chromecast/public/media/external_audio_pipeline_shlib.h"

namespace chromecast {
namespace media {
namespace testing {

// Interface class for fake external pipeline library to interact with the
// library from unit tests.
class FakeExternalAudioPipelineSupport {
 public:
  virtual void SetSupported() = 0;
  virtual void Reset() = 0;
  // Get last received values.
  virtual float GetVolume() const = 0;
  virtual bool IsMuted() const = 0;
  // Request for change values.
  virtual void OnVolumeChangeRequest(float level) = 0;
  virtual void OnMuteChangeRequest(bool muted) = 0;
  virtual void UpdateExternalMediaMetadata(
      const ExternalAudioPipelineShlib::ExternalMediaMetadata& metadata) = 0;

  virtual ~FakeExternalAudioPipelineSupport() {}
};

FakeExternalAudioPipelineSupport* GetFakeExternalAudioPipelineSupport();

}  // namespace testing
}  // namespace media
}  // namespace chromecast

#endif  // CHROMECAST_MEDIA_AUDIO_FAKE_EXTERNAL_AUDIO_PIPELINE_SUPPORT_H_