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

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/easy_resize_window_targeter.cc",
    "core/easy_resize_window_targeter.h",
    "core/focus_controller.cc",
    "core/focus_controller.h",
    "core/focus_rules.h",
    "core/image_grid.cc",
    "core/image_grid.h",
    "core/input_method_event_filter.cc",
    "core/input_method_event_filter.h",
    "core/masked_window_targeter.cc",
    "core/masked_window_targeter.h",
    "core/native_cursor_manager.h",
    "core/native_cursor_manager_delegate.h",
    "core/nested_accelerator_dispatcher_linux.cc",
    "core/nested_accelerator_dispatcher_win.cc",
    "core/nested_accelerator_dispatcher.cc",
    "core/nested_accelerator_dispatcher.h",
    "core/nested_accelerator_delegate.h",
    "core/nested_accelerator_controller.cc",
    "core/nested_accelerator_controller.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/user_activity_detector.cc",
    "core/user_activity_detector.h",
    "core/user_activity_observer.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_switches.cc",
    "core/wm_core_switches.h",
    "core/wm_state.cc",
    "core/wm_state.h",
    "wm_export.h",
  ]

  defines = [ "WM_IMPLEMENTATION" ]

  deps = [
    "//base",
    "//skia",
    "//ui/aura",
    "//ui/base",
    "//ui/compositor",
    "//ui/events",
    "//ui/events/platform",
    "//ui/events:events_base",
    "//ui/events/platform",
    "//ui/gfx",
    "//ui/gfx/geometry",
    "//ui/resources",
  ]
}

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

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

  test("wm_unittests") {
    sources = [
      "test/run_all_unittests.cc",
      "core/compound_event_filter_unittest.cc",
      "core/cursor_manager_unittest.cc",
      "core/focus_controller_unittest.cc",
      "core/input_method_event_filter_unittest.cc",
      "core/image_grid_unittest.cc",
      "core/nested_accelerator_controller_unittest.cc",
      "core/shadow_controller_unittest.cc",
      "core/transient_window_manager_unittest.cc",
      "core/transient_window_stacking_client_unittest.cc",
      "core/user_activity_detector_unittest.cc",
      "core/visibility_controller_unittest.cc",
      "core/window_animations_unittest.cc",
    ]

    deps = [
      ":test_support",
      ":wm",
      "//base",
      "//base/test:test_support",
      "//skia",
      "//testing/gtest",
      "//ui/aura:test_support",
      "//ui/base:test_support",
      "//ui/compositor:test_support",
      "//ui/events:test_support",
      "//ui/events/platform",
      "//ui/gfx",
      "//ui/gfx/geometry",
      "//ui/gl",
    ]
  }
}  # if (false)
