# Copyright 2018 The Fuchsia 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("//build/components.gni")
import("//build/config.gni")
import("//build/rust/rustc_binary.gni")

group("sessions") {
  testonly = true
  deps = [
    ":mediasession",
    ":tests",
    "//src/media/sessions/examples",
    "//src/media/sessions/mediasession_cli_tool",
  ]
}

group("tests") {
  testonly = true
  deps = [ ":mediasession_tests" ]
}

rustc_binary("bin") {
  name = "mediasession"
  edition = "2021"
  with_unit_tests = true

  deps = [
    "//sdk/fidl/fuchsia.media:fuchsia.media_rust",
    "//sdk/fidl/fuchsia.media.audio:fuchsia.media.audio_rust",
    "//sdk/fidl/fuchsia.media.sessions2:fuchsia.media.sessions2_rust",
    "//src/lib/async-utils",
    "//src/lib/diagnostics/inspect/runtime/rust",
    "//src/lib/diagnostics/inspect/rust",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fidl_table_validation",
    "//src/lib/fuchsia",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/mpmc",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:tracing",
  ]

  test_deps = [
    "//sdk/fidl/fuchsia.diagnostics:fuchsia.diagnostics_rust",
    "//sdk/fidl/fuchsia.logger:fuchsia.logger_rust",
    "//src/lib/diagnostics/reader/rust",
    "//src/lib/diagnostics/testing/diagnostics-assertions/rust:diagnostics-assertions",
    "//src/lib/fuchsia-component-test",
    "//third_party/rust_crates:assert_matches",
    "//third_party/rust_crates:futures-test",
  ]

  sources = [
    "src/id.rs",
    "src/interrupter.rs",
    "src/main.rs",
    "src/proxies.rs",
    "src/proxies/observer.rs",
    "src/proxies/player.rs",
    "src/services.rs",
    "src/services/active_session.rs",
    "src/services/discovery.rs",
    "src/services/discovery/filter.rs",
    "src/services/discovery/watcher.rs",
    "src/services/publisher.rs",
    "src/test.rs",
    "src/test/integration.rs",
  ]
}

fuchsia_unittest_package("mediasession_tests") {
  manifest = "meta/mediasession_bin_test.cml"
  deps = [
    ":bin_test",
    ":component",
    "//src/lib/fuchsia-component-test/realm_builder_server:realm_builder_server_component",
  ]
}

fuchsia_component("component") {
  component_name = "mediasession"
  manifest = "meta/mediasession.cml"
  deps = [ ":bin" ]
}

fuchsia_package("mediasession") {
  deps = [ ":component" ]
}
