# 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("//testing/test.gni")

component("wm") {
  sources = [
    "core/accelerator_delegate.h",
    "core/accelerator_filter.cc",
    "core/accelerator_filter.h",
    "core/base_focus_rules.cc",
    "core/base_focus_rules.h",
    "core/capture_controller.cc",
    "core/capture_controller.h",
    "core/compound_event_filter.cc",
    "core/compound_event_filter.h",
    "core/coordinate_conversion.cc",
    "core/coordinate_conversion.h",
    "core/cursor_manager.cc",
    "core/cursor_manager.h",
    "core/default_activation_client.cc",
    "core/default_activation_client.h",
    "core/default_screen_position_client.cc",
    "core/default_screen_position_client.h",
    "core/easy_resize_window_targeter.cc",
    "core/easy_resize_window_targeter.h",
    "core/focus_controller.cc",
    "core/focus_controller.h",
    "core/focus_rules.h",
    "core/native_cursor_manager.h",
    "core/native_cursor_manager_delegate.h",
    "core/shadow.cc",
    "core/shadow.h",
    "core/shadow_controller.cc",
    "core/shadow_controller.h",
    "core/shadow_types.cc",
    "core/shadow_types.h",
    "core/transient_window_controller.cc",
    "core/transient_window_controller.h",
    "core/transient_window_manager.cc",
    "core/transient_window_manager.h",
    "core/transient_window_observer.h",
    "core/transient_window_stacking_client.cc",
    "core/transient_window_stacking_client.h",
    "core/visibility_controller.cc",
    "core/visibility_controller.h",
    "core/window_animations.cc",
    "core/window_animations.h",
    "core/window_modality_controller.cc",
    "core/window_modality_controller.h",
    "core/window_util.cc",
    "core/window_util.h",
    "core/wm_core_export.h",
    "core/wm_core_switches.cc",
    "core/wm_core_switches.h",
    "core/wm_state.cc",
    "core/wm_state.h",
  ]

  configs += [ "//build/config:precompiled_headers" ]
  defines = [ "WM_CORE_IMPLEMENTATION" ]

  deps = [
    "//base",
    "//services/ui/public/interfaces",
    "//skia",
    "//ui/aura",
    "//ui/base",
    "//ui/base/ime",
    "//ui/compositor",
    "//ui/display",
    "//ui/events",
    "//ui/events:events_base",
    "//ui/events/devices",
    "//ui/events/platform",
    "//ui/gfx",
    "//ui/gfx/animation",
    "//ui/gfx/geometry",
    "//ui/resources",
    "//ui/wm/public",
  ]

  if (use_x11) {
    configs += [ "//build/config/linux:x11" ]
    deps += [ "//ui/events/devices/x11" ]
  }

  if (is_chromeos) {
    sources += [
      "core/ime_util_chromeos.cc",
      "core/ime_util_chromeos.h",
    ]
  }
}

static_library("test_support") {
  testonly = true
  sources = [
    "test/testing_cursor_client_observer.cc",
    "test/testing_cursor_client_observer.h",
    "test/wm_test_helper.cc",
    "test/wm_test_helper.h",
  ]

  deps = [
    ":wm",
    "//skia",
    "//ui/aura",
    "//ui/aura:test_support",
    "//ui/base",
    "//ui/base/ime",
    "//ui/events",
    "//ui/events:events_base",
  ]
}

test("wm_unittests") {
  sources = [
    "core/capture_controller_unittest.cc",
    "core/compound_event_filter_unittest.cc",
    "core/coordinate_conversion_unittest.cc",
    "core/cursor_manager_unittest.cc",
    "core/focus_controller_unittest.cc",
    "core/shadow_controller_unittest.cc",
    "core/shadow_unittest.cc",
    "core/transient_window_manager_unittest.cc",
    "core/transient_window_stacking_client_unittest.cc",
    "core/visibility_controller_unittest.cc",
    "core/window_animations_unittest.cc",
    "core/window_util_unittest.cc",
    "test/run_all_unittests.cc",
  ]

  deps = [
    ":test_support",
    ":wm",
    "//base",
    "//base/test:test_support",
    "//mojo/edk/system",
    "//skia",
    "//testing/gtest",
    "//ui/aura:test_support",
    "//ui/base:test_support",
    "//ui/base/ime",
    "//ui/compositor:test_support",
    "//ui/events:test_support",
    "//ui/events/platform",
    "//ui/gfx",
    "//ui/gfx/animation",
    "//ui/gfx/geometry",
    "//ui/gl:test_support",
    "//ui/resources",
    "//ui/wm/public",
  ]

  data_deps = [
    "//ui/resources:ui_test_pak_data",
  ]

  if (is_chromeos) {
    sources += [ "core/ime_util_chromeos_unittest.cc" ]
  }
}