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

group("debugger") {
  testonly = true

  deps = [
    "//sky/tools/debugger/prompt",
    ":sky_debugger",
  ]
}

mojo_native_application("sky_debugger") {
  sources = [
    "debugger.cc",
    "debugger.h",
    "main.cc",
    "navigator_host_impl.cc",
    "navigator_host_impl.h",
  ]

  deps = [
    "//base",
    "//mojo/application",
    "//mojo/converters/geometry",
    "//mojo/converters/input_events",
    "//mojo/public/c/system:for_shared_library",
    "//mojo/public/cpp/bindings",
    "//mojo/public/cpp/utility",
    "//mojo/services/public/cpp/view_manager",
    "//mojo/services/public/interfaces/input_events:input_events",
    "//mojo/services/public/interfaces/navigation",
    "//mojo/services/window_manager:lib",
    "//sky/viewer:bindings",
    ":bindings",
  ]
}

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