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

source_set("audio") {
  public_deps = [ "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.media" ]

  deps = [
    "//base",
    "//media/base",
    "//media/filters",
    "//media/fuchsia/cdm",
    "//media/fuchsia/common",
    "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.media.audio",
    "//third_party/fuchsia-sdk/sdk/pkg/sys_cpp",
  ]

  configs += [ "//media:subcomponent_config" ]

  sources = [
    "fuchsia_audio_capturer_source.cc",
    "fuchsia_audio_capturer_source.h",
    "fuchsia_audio_output_device.cc",
    "fuchsia_audio_output_device.h",
    "fuchsia_audio_renderer.cc",
    "fuchsia_audio_renderer.h",
  ]
}

source_set("test_support") {
  testonly = true
  public_deps = [
    "//base",
    "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.media",
    "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.media.audio",
    "//third_party/fuchsia-sdk/sdk/pkg/fidl_cpp",
  ]
  sources = [
    "fake_audio_consumer.cc",
    "fake_audio_consumer.h",
  ]
}

source_set("unittests") {
  testonly = true

  deps = [
    ":test_support",
    "//base",
    "//base/test:test_support",
    "//media",
    "//testing/gtest",
    "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.media.audio",
  ]

  sources = [
    "fuchsia_audio_capturer_source_test.cc",
    "fuchsia_audio_output_device_test.cc",
    "fuchsia_audio_renderer_test.cc",
  ]
}
