# 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("//src/ui/lib/escher/build_args.gni")
import("//src/ui/scenic/lib/gfx/build_args.gni")

group("integration_input_tests") {
  testonly = true

  deps = [
    "factory-reset:tests",
    "factory-reset-handler:tests",
    "focus:tests",
    "media-buttons:tests",
    "pointerinjector_config:tests",
    "touch:tests",
    "virtual-keyboard:tests",
  ]
}

group("workstation_tests") {
  testonly = true

  deps = [
    ":workstation-test-realm",
    "mouse:tests",
    "text-input:tests",
  ]
}

fuchsia_component("wrapped-root-presenter") {
  testonly = true
  manifest = "meta/wrapped-root-presenter.cml"
  deps = [ "//src/ui/bin/root_presenter:component_v1_for_test" ]
}

fuchsia_component("wrapped-input-pipeline") {
  testonly = true
  manifest = "meta/wrapped-input-pipeline.cml"
  deps = [ "//src/ui/bin/input-pipeline:component-for-test" ]
}

# scenic-test-realm is a realm replicating the scenic setup that
# can be stenciled out in tests, and amended to fit.
fuchsia_component("scenic-test-realm") {
  testonly = true
  manifest = "meta/scenic-test-realm.cml"
  deps = [
    "//src/cobalt/bin/testing/mock_cobalt:component_v2",
    "//src/ui/bin/hardware_display_controller_provider:fake-hardware-display-controller-provider-cmv2-component",
    "//src/ui/scenic:component_v2",
  ]
}

# workstation-test-realm is a realm replicating the workstation UI setup that
# can be stenciled out in tests, and amended to fit.
# TODO(92183): The realm definition is still under construction.
fuchsia_component("workstation-test-realm") {
  testonly = true
  manifest = "meta/workstation-test-realm.cml"
  deps = [
    ":scenic-test-realm",
    ":wrapped-root-presenter",
    "//src/lib/ui/input-synthesis:input-synthesis-component",
    "//src/ui/bin/scene_manager:scene_manager_component",
    "//src/ui/bin/text:text_manager_comp_v2",
  ]
}

# input-pipeline-test-realm is a realm replicating the input UI setup that
# can be stenciled out in tests, and amended to fit.
fuchsia_component("input-pipeline-test-realm") {
  testonly = true
  manifest = "meta/input-pipeline-test-realm.cml"
  deps = [
    ":scenic-test-realm",
    ":wrapped-input-pipeline",
    ":wrapped-root-presenter",
  ]
}
