# 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.

source_set("input") {
  public_deps = [
    ":constants",
    ":gesture_contender_interface",
    ":injection",
    ":legacy",
    ":mouse",
    ":system",
    ":touch",
    ":utils",
  ]
}

source_set("system") {
  sources = [
    "input_system.cc",
    "input_system.h",
  ]

  deps = [
    ":injection",
    ":legacy",
    ":mouse",
    ":touch",
    ":utils",
    "//sdk/lib/inspect/component/cpp",
  ]

  public_deps = [ "//src/ui/scenic/lib/view_tree:view_tree_snapshot" ]
}

source_set("constants") {
  sources = [ "constants.h" ]
}

source_set("utils") {
  sources = [
    "helper.cc",
    "helper.h",
    "hit_tester.cc",
    "hit_tester.h",
    "internal_pointer_event.h",
    "stream_id.cc",
    "stream_id.h",
  ]

  deps = [
    "//src/ui/scenic/lib/utils",
    "//zircon/system/ulib/inspect",
    "//zircon/system/ulib/trace",
  ]

  public_deps = [ "//src/ui/scenic/lib/view_tree:view_tree_snapshot" ]
}

source_set("gesture_contender_interface") {
  sources = [
    "gesture_contender.h",
    "gesture_contender_inspector.cc",
    "gesture_contender_inspector.h",
  ]

  public_deps = [
    ":utils",
    "//src/ui/scenic/lib/view_tree:view_tree_snapshot",
    "//zircon/system/ulib/inspect",
  ]
}

source_set("legacy") {
  sources = [
    "a11y_legacy_contender.cc",
    "a11y_legacy_contender.h",
    "a11y_registry.cc",
    "a11y_registry.h",
  ]

  deps = [
    ":gesture_contender_interface",
    "//sdk/lib/sys/cpp:cpp",
    "//zircon/system/ulib/inspect",
    "//zircon/system/ulib/trace",
  ]

  public_deps = [
    "//src/lib/fostr/fidl/fuchsia.ui.input",
    "//src/lib/fostr/fidl/fuchsia.ui.input.accessibility",
  ]
}

source_set("injection") {
  sources = [
    "injector.cc",
    "injector.h",
    "mouse_injector.cc",
    "mouse_injector.h",
    "pointerinjector_registry.cc",
    "pointerinjector_registry.h",
    "touch_injector.cc",
    "touch_injector.h",
  ]

  deps = [
    ":constants",
    ":utils",
    "//zircon/system/ulib/inspect",
    "//zircon/system/ulib/trace",
  ]

  public_deps = [
    "//sdk/fidl/fuchsia.ui.pointerinjector:fuchsia.ui.pointerinjector_hlcpp",
    "//sdk/lib/sys/cpp:cpp",
    "//src/lib/fostr/fidl/fuchsia.ui.pointerinjector",
  ]
}

source_set("mouse") {
  sources = [
    "mouse_source.cc",
    "mouse_source.h",
    "mouse_source_base.cc",
    "mouse_source_base.h",
    "mouse_system.cc",
    "mouse_system.h",
  ]

  deps = [
    ":constants",
    ":gesture_contender_interface",
    ":utils",
    "//sdk/lib/sys/cpp",
    "//src/lib/fsl",
    "//zircon/system/ulib/inspect",
    "//zircon/system/ulib/trace",
  ]
}

source_set("touch") {
  sources = [
    "gesture_arena.cc",
    "gesture_arena.h",
    "touch_source.cc",
    "touch_source.h",
    "touch_source_base.cc",
    "touch_source_base.h",
    "touch_source_with_local_hit.cc",
    "touch_source_with_local_hit.h",
    "touch_system.cc",
    "touch_system.h",
  ]

  deps = [
    ":constants",
    ":gesture_contender_interface",
    ":legacy",
    ":utils",
    "//sdk/lib/inspect/component/cpp",
    "//sdk/lib/sys/cpp",
    "//src/lib/fsl",
    "//zircon/system/ulib/trace",
  ]

  public_deps = [
    "//sdk/fidl/fuchsia.ui.pointer:fuchsia.ui.pointer_cpp",
    "//sdk/fidl/fuchsia.ui.pointer:fuchsia.ui.pointer_cpp_hlcpp_conversion",
    "//sdk/fidl/fuchsia.ui.pointer:fuchsia.ui.pointer_hlcpp",
    "//sdk/fidl/fuchsia.ui.pointer.augment:fuchsia.ui.pointer.augment_hlcpp",
  ]
}
