# Copyright 2015 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("//chromecast/chromecast.gni")
import("//media/media_options.gni")
import("//testing/test.gni")

group("media") {
  public_deps = [
    "//chromecast/media/audio",
    "//chromecast/media/base",
    "//chromecast/media/base:media_resource_tracker",
    "//chromecast/media/cdm",
    "//chromecast/media/cma",
  ]
}

# Any component calling CastMediaShlib:: static functions should depend on this.
# Handles the various differences between (ATV, Things, desktop, device builds).
group("libcast_media") {
  if (is_android) {
    if (is_cast_using_cma_backend) {
      deps = [
        "//chromecast/media/cma/backend/android:cast_media_android",
      ]
    } else {
      deps = [
        "//chromecast/media/cma/backend:cast_media_android_dummy",
      ]
    }
  } else if (is_fuchsia) {
    deps = [
      "//chromecast/media/cma/backend/fuchsia:media_backend",
    ]
  } else {
    deps = [
      "//chromecast/media/cma/backend:libcast_media_1.0",
    ]
  }
}

test("cast_media_unittests") {
  sources = [
    "audio/cast_audio_manager_unittest.cc",
    "audio/cast_audio_mixer_unittest.cc",
    "audio/cast_audio_output_stream_unittest.cc",
    "base/media_resource_tracker_unittest.cc",
    "base/slew_volume_unittests.cc",
    "base/supported_codec_profile_levels_memo_unittest.cc",
    "cma/backend/audio_decoder_software_wrapper_unittest.cc",
    "test/run_all_unittests.cc",
  ]

  if (use_alsa && !is_cast_desktop_build) {
    sources += [ "audio/cast_audio_manager_alsa_unittest.cc" ]
  }

  deps = [
    ":libcast_media",
    ":media",
    "//base",
    "//base/test:test_support",
    "//chromecast:chromecast_buildflags",
    "//chromecast/base",
    "//chromecast/base/metrics:test_support",
    "//chromecast/common/mojom",
    "//chromecast/media/cma:test_support",
    "//chromecast/public",
    "//content/test:test_support",
    "//media:test_support",
    "//media/mojo:test_support",
    "//mojo/core/embedder",
    "//services/service_manager/public/cpp",
    "//testing/gmock",
    "//testing/gtest",
  ]

  if (is_cast_using_cma_backend) {
    deps += [ "//chromecast/media/cma:unittests" ]
    if (is_android) {
      deps += [
        "//chromecast/media/cma/backend/android:audio_track_java",
        "//media/base/android:media_java",
      ]
      shard_timeout = 300
    }
  }
}
