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

#include "media_perception/fake_chrome_audio_service_client.h"


namespace mri {

bool FakeChromeAudioServiceClient::Connect() {
  connected_ = true;
  return connected_;
}

bool FakeChromeAudioServiceClient::IsConnected() {
  return connected_;
}

void FakeChromeAudioServiceClient::SetDevicesForGetInputDevices(
    std::vector<SerializedAudioDevice> devices) {
  devices_ = devices;
}

std::vector<SerializedAudioDevice>
FakeChromeAudioServiceClient::GetInputDevices() {
  return devices_;
}

bool FakeChromeAudioServiceClient::IsAudioCaptureStartedForDevice(
    const std::string& device_id,
    SerializedAudioStreamParams* capture_format) {
  return false;
}

int FakeChromeAudioServiceClient::AddFrameHandler(
    const std::string& device_id,
    const SerializedAudioStreamParams& capture_format,
    AudioFrameHandler handler) {
  return 0;
}

bool FakeChromeAudioServiceClient::RemoveFrameHandler(
    const std::string& device_id, int frame_handler_id) {
  return false;
}

}  // namespace mri
