# 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")

group("web-virtual-keyboard-client") {
  testonly = true
  deps = [ ":package" ]
}

executable("bin") {
  output_name = "web-virtual-keyboard-client"
  sources = [ "web-virtual-keyboard-client.cc" ]
  deps = [
    "//sdk/fidl/fuchsia.sys",
    "//sdk/fidl/fuchsia.ui.app",
    "//sdk/fidl/fuchsia.web",
    "//sdk/lib/sys/cpp",
    "//sdk/lib/ui/scenic/cpp",
    "//src/chromium/web_engine/meta/shards:web_engine_feature_network",
    "//src/chromium/web_engine/meta/shards:web_engine_view",
    "//src/lib/fsl",
    "//src/lib/fxl",
    "//src/lib/json_parser",
    "//src/ui/tests/integration_input_tests/virtual-keyboard:test.virtualkeyboard",
    "//third_party/rapidjson",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
  ]
}

fuchsia_component("component") {
  testonly = true
  component_name = "web-virtual-keyboard-client"
  manifest = "meta/web-virtual-keyboard-client.cml"
  deps = [
    ":bin",
    "//sdk/lib/sys/component/cpp/testing:cpp",
  ]
}

fuchsia_package("package") {
  testonly = true
  package_name = "web-virtual-keyboard-client"
  deps = [ ":component" ]
}
