# 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("//mojo/public/tools/bindings/mojom.gni")

mojom("interfaces") {
  sources = [
    "event.mojom",
    "event_constants.mojom",
    "keyboard_codes.mojom",
    "latency_info.mojom",
  ]

  public_deps = [
    "//mojo/common:common_custom_types",
    "//ui/gfx/geometry/mojo",
    "//ui/gfx/mojo",
  ]
}

mojom("test_interfaces") {
  testonly = true
  sources = [
    "traits_test_service.mojom",
  ]

  public_deps = [
    ":interfaces",
  ]
}

source_set("struct_traits") {
  sources = [
    "latency_info_struct_traits.cc",
    "latency_info_struct_traits.h",
  ]
  deps = [
    ":interfaces_shared_cpp_sources",
    "//mojo/common",
    "//mojo/public/cpp/bindings",
    "//ui/events:events_base",
    "//ui/gfx/geometry/mojo:struct_traits",
  ]
}
