# Copyright 2014 The Chromium 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/config/ui.gni")
import("//mojo/public/tools/bindings/mojom.gni")

assert(use_aura)

shared_library("keyboard") {
  sources = [
    "keyboard_delegate.h",
    "keyboard_view.cc",
    "keyboard_view.h",
    "keyboard.cc",
    "keys.cc",
    "keys.h",
  ]

  deps = [
    ":bindings",
    "//base",
    "//cc",
    "//mojo/application",
    "//mojo/aura",
    "//mojo/common",
    "//mojo/converters/geometry",
    "//mojo/converters/input_events",
    "//mojo/public/c/system:for_shared_library",
    "//mojo/services/public/cpp/view_manager",
    "//mojo/services/public/interfaces/geometry",
    "//mojo/services/public/interfaces/navigation",
    "//mojo/services/public/interfaces/view_manager",
    "//mojo/views:views",
    "//third_party/icu",
    "//ui/aura",
    "//ui/base",
    "//ui/compositor",
    "//ui/gfx",
    "//ui/gfx/geometry",
    "//ui/resources",
    "//ui/resources:ui_test_pak",
    "//ui/views",
    "//url",
  ]
}

mojom("bindings") {
  sources = [ "keyboard.mojom" ]
}

