# 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 = [
    "range.mojom",
  ]
}

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

  public_deps = [
    ":mojo",
  ]
}

source_set("unit_test") {
  testonly = true

  sources = [
    "range_struct_traits_unittest.cc",
  ]

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

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