# 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.

import("//testing/test.gni")

assert(is_chromeos, "Non-Chrome-OS builds must not depend on //chromeos")

component("audio") {
  defines = [ "IS_CHROMEOS_AUDIO_IMPL" ]
  deps = [
    "//base",
    "//chromeos/constants",
    "//chromeos/dbus/audio",
    "//components/prefs",
    "//media/base:video_facing",
    "//services/media_session/public/mojom",
    "//services/service_manager/public/cpp:cpp",
  ]
  sources = [
    "audio_device.cc",
    "audio_device.h",
    "audio_devices_pref_handler.h",
    "audio_devices_pref_handler_impl.cc",
    "audio_devices_pref_handler_impl.h",
    "audio_devices_pref_handler_stub.cc",
    "audio_devices_pref_handler_stub.h",
    "audio_pref_observer.h",
    "chromeos_sounds.h",
    "cras_audio_handler.cc",
    "cras_audio_handler.h",
  ]
}

source_set("unit_tests") {
  testonly = true
  deps = [
    ":audio",
    "//base/test:test_support",
    "//chromeos/constants",
    "//chromeos/dbus/audio",
    "//components/prefs:test_support",
    "//media/base:video_facing",
    "//services/media_session/public/mojom",
    "//services/service_manager/public/cpp/test:test_support",
    "//testing/gmock",
    "//testing/gtest",
  ]
  sources = [
    "audio_devices_pref_handler_impl_unittest.cc",
    "cras_audio_handler_unittest.cc",
  ]
}
