# 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)

# GYP version: mojo/mojo_examples.gypi:mojo_window_manager
shared_library("window_manager") {
  output_name = "mojo_window_manager"

  sources = [
    "debug_panel.cc",
    "debug_panel.h",
    "window_manager.cc",
  ]

  deps = [
    ":bindings",
    "//base",
    "//mojo/application",
    "//mojo/aura",
    "//mojo/examples/keyboard:bindings",
    "//mojo/public/c/system:for_shared_library",
    "//mojo/public/cpp/bindings",
    "//mojo/public/cpp/utility",
    "//mojo/public/gles2:for_shared_library",
    "//mojo/services/public/cpp/geometry",
    "//mojo/services/public/cpp/input_events",
    "//mojo/services/public/cpp/view_manager",
    "//mojo/services/public/interfaces/geometry",
    "//mojo/services/public/interfaces/input_events",
    "//mojo/services/public/interfaces/navigation",
    "//mojo/services/window_manager:lib",
    "//mojo/views",
    "//ui/aura",
    "//ui/base",
    "//ui/gfx",
    "//ui/gfx/geometry",
    "//ui/gl",
    "//ui/resources",
    "//ui/views",
    "//ui/wm",
  ]
}

# GYP version: mojo/mojo_examples.gypi:mojo_window_manager_bindings
mojom("bindings") {
  sources = [
    "window_manager.mojom",
  ]
  deps = [
    "//mojo/services/public/interfaces/geometry",
  ]
}

