# Copyright 2017 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/dart/dart_library.gni")
import("//topaz/runtime/dart/flutter_test.gni")

dart_library("dart") {
  package_name = "keyboard.dart"

  sources = [
    "keyboard_display.dart",
  ]

  source_dir = "dart"

  deps = [
    "//sdk/fidl/fuchsia.ui.input",
    "//topaz/lib/shell",
    "//topaz/public/dart/fidl",
    "//topaz/public/dart/widgets:lib.widgets",
    "//topaz/public/lib/app/dart",
  ]
}

dart_library("flutter") {
  package_name = "keyboard.flutter"

  source_dir = "flutter"

  sources = [
    "keyboard.dart",
  ]

  deps = [
    ":dart",
    "//third_party/dart-pkg/git/flutter/packages/flutter",
    "//topaz/lib/shell",
    "//topaz/public/dart/widgets:lib.widgets",
    "//topaz/shell/keyboard",
  ]
}

flutter_test("keyboard_test") {
  sources = [
    "keyboard_model_test.dart",
  ]

  deps = [
    ":dart",
    ":flutter",
    "//third_party/dart-pkg/git/flutter/packages/flutter_test",
    "//third_party/dart-pkg/pub/mockito",
    "//third_party/dart-pkg/pub/test",
    "//topaz/lib/shell",
  ]
}
