# Copyright 2021 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/fidl/fidl.gni")
import("//build/rust/rustc_binary.gni")

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

rustc_binary("scene_manager_bin") {
  name = "scene_manager"
  with_unit_tests = true
  edition = "2021"

  deps = [
    "//sdk/fidl/fuchsia.accessibility:fuchsia.accessibility-rustc",
    "//sdk/fidl/fuchsia.accessibility.scene:fuchsia.accessibility.scene-rustc",
    "//sdk/fidl/fuchsia.input.injection:fuchsia.input.injection-rustc",
    "//sdk/fidl/fuchsia.session:fuchsia.session-rustc",
    "//sdk/fidl/fuchsia.session.scene:fuchsia.session.scene-rustc",
    "//sdk/fidl/fuchsia.settings:fuchsia.settings-rustc",
    "//sdk/fidl/fuchsia.sys:fuchsia.sys-rustc",
    "//sdk/fidl/fuchsia.ui.accessibility.view:fuchsia.ui.accessibility.view-rustc",
    "//sdk/fidl/fuchsia.ui.app:fuchsia.ui.app-rustc",
    "//sdk/fidl/fuchsia.ui.composition:fuchsia.ui.composition-rustc",
    "//sdk/fidl/fuchsia.ui.input:fuchsia.ui.input-rustc",
    "//sdk/fidl/fuchsia.ui.input.config:fuchsia.ui.input.config-rustc",
    "//sdk/fidl/fuchsia.ui.pointerinjector.configuration:fuchsia.ui.pointerinjector.configuration-rustc",
    "//sdk/fidl/fuchsia.ui.scenic:fuchsia.ui.scenic-rustc",
    "//sdk/fidl/fuchsia.ui.shortcut:fuchsia.ui.shortcut-rustc",
    "//sdk/fidl/fuchsia.ui.views:fuchsia.ui.views-rustc",
    "//src/intl:icudtl",
    "//src/lib/async-utils",
    "//src/lib/diagnostics/inspect/runtime/rust",
    "//src/lib/diagnostics/inspect/rust",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/icu_data/rust",
    "//src/lib/syslog/rust:syslog",
    "//src/lib/ui/fuchsia-scenic",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//src/ui/lib/input_pipeline",
    "//src/ui/lib/scene_management",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:assert_matches",
    "//third_party/rust_crates:async-trait",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:tracing",
  ]

  test_deps = [
    "//sdk/fidl/fuchsia.ui.scenic:fuchsia.ui.scenic-rustc",
    "//sdk/fidl/fuchsia.ui.views:fuchsia.ui.views-rustc",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component-test",
  ]

  sources = [
    "src/input_config_server.rs",
    "src/input_device_registry_server.rs",
    "src/input_pipeline.rs",
    "src/main.rs",
  ]
}

resource("cursor") {
  sources = [ "resources/cursor.png" ]
  outputs = [ "data/cursor.png" ]
}

fuchsia_component("scene_manager_component") {
  component_name = "scene_manager"
  manifest = "meta/scene_manager.cml"
  deps = [ ":scene_manager_bin" ]
}

fuchsia_package("scene_manager") {
  deps = [
    ":cursor",
    ":scene_manager_component",
  ]
}

fuchsia_test_component("scene_manager_bin_test_component") {
  component_name = "scene_manager_bin_test"
  manifest = "meta/scene_manager_bin_test.cml"
  deps = [ ":scene_manager_bin_test" ]
}

fuchsia_test_package("scene_manager_tests") {
  test_specs = {
    log_settings = {
      max_severity = "ERROR"
    }
    environments = [
      {
        dimensions = {
          device_type = "AEMU"
        }
      },
    ]
  }
  test_components = [ ":scene_manager_bin_test_component" ]
  deps = [
    ":scene_manager_component",
    "//src/cobalt/bin/testing/mock_cobalt:component_v2",
    "//src/lib/fuchsia-component-test/realm_builder_server:fuchsia-component-test",
    "//src/ui/bin/hardware_display_controller_provider:fake-hardware-display-controller-provider-cmv2-component",
    "//src/ui/scenic:component_v2_with_supplied_display_provider",
  ]
}
