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

rustc_binary("bin") {
  output_name = "ui_context_factory_bin"
  edition = "2021"
  testonly = true

  deps = [
    "//sdk/fidl/fuchsia.logger:fuchsia.logger_rust",
    "//sdk/fidl/fuchsia.scheduler:fuchsia.scheduler_rust",
    "//sdk/fidl/fuchsia.sysmem:fuchsia.sysmem_rust",
    "//sdk/fidl/fuchsia.sysmem2:fuchsia.sysmem2_rust",
    "//sdk/fidl/fuchsia.tracing.provider:fuchsia.tracing.provider_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.focus:fuchsia.ui.focus_rust",
    "//sdk/fidl/fuchsia.ui.input3:fuchsia.ui.input3_rust",
    "//sdk/fidl/fuchsia.ui.policy:fuchsia.ui.policy_rust",
    "//sdk/fidl/fuchsia.ui.test.context:fuchsia.ui.test.context_rust",
    "//sdk/fidl/fuchsia.ui.test.input:fuchsia.ui.test.input_rust",
    "//sdk/fidl/fuchsia.ui.test.scene:fuchsia.ui.test.scene_rust",
    "//sdk/fidl/fuchsia.vulkan.loader:fuchsia.vulkan.loader_rust",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/fuchsia-component-test",
    "//src/lib/zircon/rust:fuchsia-zircon-status",
    "//src/testing/realm_proxy",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:tracing",
  ]

  sources = [ "src/main.rs" ]
}

fuchsia_component("ui-context-factory-component") {
  testonly = true
  component_name = "ui-context-factory"
  manifest = "meta/context-factory.cml"
  deps = [
    ":bin",
    "//src/ui/testing/test_ui_stack:flatland_scene_manager_config",
    "//src/ui/testing/test_ui_stack:test-ui-stack-component",
  ]
}

fuchsia_package("ui-context-factory") {
  package_name = "ui-context-factory"
  testonly = true
  deps = [ ":ui-context-factory-component" ]
}
