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