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

# This target does NOT depend on skia. One can depend on this target to avoid
# picking up a dependency on skia.
mojom("mojo") {
  sources = [
    "geometry.mojom",
  ]

  # TODO(crbug.com/699569): Convert to use the new JS bindings.
  use_new_js_bindings = false
}

mojom("test_interfaces") {
  sources = [
    "geometry_traits_test_service.mojom",
  ]

  public_deps = [
    ":mojo",
  ]

  # TODO(crbug.com/714018): Convert the implementation to use OnceCallback.
  use_once_callback = false
}

source_set("unit_test") {
  testonly = true

  sources = [
    "geometry_struct_traits_unittest.cc",
  ]

  deps = [
    ":test_interfaces",
    "//base",
    "//mojo/public/cpp/bindings",
    "//testing/gtest",
    "//ui/gfx/geometry",
  ]
}

source_set("struct_traits") {
  sources = [
    "geometry_struct_traits.h",
  ]
  public_deps = [
    ":mojo_shared_cpp_sources",
    "//ui/gfx/geometry",
  ]
}
