# Copyright 2019 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/icu/icu_rustc_library.gni")
import("//build/rust/rustc_library.gni")

icu_rustc_library("scene_management") {
  name = "scene_management"
  with_unit_tests = true
  edition = "2021"

  icu_deps = [ "//src/ui/lib/input_pipeline" ]
  deps = [
    "//sdk/fidl/fuchsia.accessibility.scene:fuchsia.accessibility.scene_rust",
    "//sdk/fidl/fuchsia.math:fuchsia.math_rust",
    "//sdk/fidl/fuchsia.ui.app:fuchsia.ui.app_rust",
    "//sdk/fidl/fuchsia.ui.composition:fuchsia.ui.composition_rust",
    "//sdk/fidl/fuchsia.ui.display.singleton:fuchsia.ui.display.singleton_rust",
    "//sdk/fidl/fuchsia.ui.pointerinjector:fuchsia.ui.pointerinjector_rust",
    "//sdk/fidl/fuchsia.ui.pointerinjector.configuration:fuchsia.ui.pointerinjector.configuration_rust",
    "//sdk/fidl/fuchsia.ui.views:fuchsia.ui.views_rust",
    "//src/lib/async-utils",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-sync",
    "//src/lib/trace/rust:trace",
    "//src/lib/ui/flatland-frame-scheduling:flatland-frame-scheduling-lib",
    "//src/lib/ui/fuchsia-scenic",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:async-trait",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:libm",
    "//third_party/rust_crates:num-traits",
    "//third_party/rust_crates:tracing",
  ]

  sources = [
    "src/display_metrics.rs",
    "src/graphics_utils.rs",
    "src/lib.rs",
    "src/pointerinjector_config.rs",
    "src/scene_manager.rs",
  ]
}

rustc_library("scene_management_mocks") {
  edition = "2021"
  testonly = true
  deps = [
    ":scene_management",
    "//sdk/fidl/fuchsia.ui.app:fuchsia.ui.app_rust",
    "//sdk/fidl/fuchsia.ui.views:fuchsia.ui.views_rust",
    "//src/ui/lib/input_pipeline",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:async-trait",
  ]

  source_root = "src/mocks/lib.rs"
  sources = [
    "src/mocks/lib.rs",
    "src/mocks/mock_scene_manager.rs",
  ]
}

fuchsia_unittest_package("scene_management_tests") {
  deps = [ ":scene_management_test" ]
}
