# Copyright 2013 The Flutter Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

assert(is_fuchsia)

group("fakes") {
  testonly = true

  public_deps = [
    ":focus",
    ":pointer",
    "scenic",
  ]
}

source_set("focus") {
  testonly = true

  sources = [
    "focuser.h",
    "platform_message.h",
    "touch_source.h",
    "view_ref_focused.h",
  ]

  deps = [
    "//build/fuchsia/pkg:sys_cpp_testing",
    "//flutter/lib/ui",
    "//flutter/testing",
    "//third_party/rapidjson",
  ]
}

source_set("pointer") {
  testonly = true

  sources = [ "mock_injector_registry.h" ]

  deps = [
    "//build/fuchsia/pkg:sys_cpp_testing",
    "//flutter/lib/ui",
    "//flutter/testing",
    "//third_party/rapidjson",
  ]
}
