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

if (use_aura) {

# GYP version: mojo/mojo_services.gypi:mojo_core_window_manager
shared_library("window_manager") {
  sources = [ "main.cc" ]

  public_deps = [
    ":lib",
  ]
  deps = [
    "//base",
    "//mojo/application",
    "//mojo/public/c/system:for_shared_library",
    "//mojo/services/public/cpp/view_manager",
  ]
}

# GYP version: mojo/mojo_services.gypi:mojo_core_window_manager_lib
source_set("lib") {
  sources = [
    "window_manager_app.cc",
    "window_manager_app.h",
    "window_manager_delegate.h",
    "window_manager_internal_service_impl.cc",
    "window_manager_internal_service_impl.h",
    "window_manager_impl.cc",
    "window_manager_impl.h",
    "window_manager_service2_impl.cc",
    "window_manager_service2_impl.h",
  ]

  public_deps = [
    "//mojo/aura",
  ]
  deps = [
    "//base",
    "//ui/base",
    "//ui/gfx",
    "//ui/gfx/geometry",
    "//ui/wm",
    "//mojo/aura",
    "//mojo/application",
    "//mojo/common",
    "//mojo/converters/input_events",
    "//mojo/services/public/cpp/view_manager",
    "//mojo/public/interfaces/application:application",
    "//mojo/services/public/interfaces/window_manager",
    "//mojo/services/public/interfaces/window_manager2",
  ]
}

# GYP version: mojo/mojo_services.gypi:mojo_core_window_manager_unittests
test("window_manager_unittests") {
  sources = [
    "window_manager_api_unittest.cc",
    "window_manager_unittests.cc",
  ]

  deps = [
    "//base/test:test_support",
    "//mojo/application_manager",
    "//mojo/edk/system",
    "//mojo/environment:chromium",
    "//mojo/services/public/cpp/view_manager",
    "//mojo/services/public/interfaces/view_manager",
    "//mojo/services/public/interfaces/window_manager",
    "//mojo/services/public/interfaces/window_manager2",
    "//mojo/shell:test_support",
    "//testing/gtest",
    "//ui/gl",
  ]
  if (use_x11) {
    deps += [ "//ui/gfx/x" ]
  }
}

}  # use_aura
