# 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")
import("//services/service_manager/public/cpp/service.gni")
import("//services/service_manager/public/service_manifest.gni")

static_library("lib") {
  sources = [
    "accelerator.cc",
    "accelerator.h",
    "access_policy.h",
    "access_policy_delegate.h",
    "accessibility_manager.cc",
    "accessibility_manager.h",
    "animation_runner.cc",
    "animation_runner.h",
    "animation_runner_observer.h",
    "default_access_policy.cc",
    "default_access_policy.h",
    "display.cc",
    "display.h",
    "display_binding.cc",
    "display_binding.h",
    "display_manager.cc",
    "display_manager.h",
    "drag_controller.cc",
    "drag_controller.h",
    "drag_cursor_updater.h",
    "drag_source.h",
    "drag_target_connection.h",
    "event_dispatcher.cc",
    "event_dispatcher.h",
    "event_dispatcher_delegate.h",
    "event_matcher.cc",
    "event_matcher.h",
    "focus_controller.cc",
    "focus_controller.h",
    "focus_controller_delegate.h",
    "focus_controller_observer.h",
    "frame_generator.cc",
    "frame_generator.h",
    "gpu_compositor_frame_sink.cc",
    "gpu_compositor_frame_sink.h",
    "gpu_service_proxy.cc",
    "gpu_service_proxy.h",
    "gpu_service_proxy_delegate.h",
    "modal_window_controller.cc",
    "modal_window_controller.h",
    "mus_gpu_memory_buffer_manager.cc",
    "mus_gpu_memory_buffer_manager.h",
    "operation.cc",
    "operation.h",
    "platform_display.cc",
    "platform_display.h",
    "platform_display_default.cc",
    "platform_display_default.h",
    "platform_display_delegate.h",
    "platform_display_factory.h",
    "platform_display_init_params.cc",
    "platform_display_init_params.h",
    "scheduled_animation_group.cc",
    "scheduled_animation_group.h",
    "server_window.cc",
    "server_window.h",
    "server_window_compositor_frame_sink_manager.cc",
    "server_window_compositor_frame_sink_manager.h",
    "server_window_delegate.h",
    "server_window_drawn_tracker.cc",
    "server_window_drawn_tracker.h",
    "server_window_drawn_tracker_observer.h",
    "server_window_observer.h",
    "server_window_tracker.h",
    "touch_controller.cc",
    "touch_controller.h",
    "user_activity_monitor.cc",
    "user_activity_monitor.h",
    "user_display_manager.cc",
    "user_display_manager.h",
    "user_display_manager_delegate.h",
    "user_id.h",
    "user_id_tracker.cc",
    "user_id_tracker.h",
    "user_id_tracker_observer.h",
    "window_coordinate_conversions.cc",
    "window_coordinate_conversions.h",
    "window_finder.cc",
    "window_finder.h",
    "window_manager_access_policy.cc",
    "window_manager_access_policy.h",
    "window_manager_display_root.cc",
    "window_manager_display_root.h",
    "window_manager_state.cc",
    "window_manager_state.h",
    "window_manager_window_tree_factory.cc",
    "window_manager_window_tree_factory.h",
    "window_manager_window_tree_factory_set.cc",
    "window_manager_window_tree_factory_set.h",
    "window_manager_window_tree_factory_set_observer.h",
    "window_server.cc",
    "window_server.h",
    "window_server_delegate.cc",
    "window_server_delegate.h",
    "window_tree.cc",
    "window_tree.h",
    "window_tree_binding.cc",
    "window_tree_binding.h",
    "window_tree_factory.cc",
    "window_tree_factory.h",
    "window_tree_host_factory.cc",
    "window_tree_host_factory.h",
  ]

  deps = [
    "//gpu/command_buffer/client",
    "//gpu/command_buffer/client:gles2_interface",
    "//gpu/ipc/client",
    "//gpu/ipc/common",
    "//services/ui/gpu",  # TODO(sad): Temporary until GPU process split.
    "//services/ui/gpu/interfaces",
  ]

  public_deps = [
    "//base",
    "//cc",
    "//cc/ipc:internal_interfaces",
    "//cc/surfaces",
    "//cc/surfaces:surface_id",
    "//mojo/common:common_base",
    "//mojo/public/cpp/bindings",
    "//services/service_manager/public/cpp",
    "//services/service_manager/public/interfaces",
    "//services/tracing/public/cpp",
    "//services/ui/common:mus_common",
    "//services/ui/display",
    "//services/ui/public/interfaces",
    "//services/ui/surfaces",
    "//ui/base",
    "//ui/display",
    "//ui/events",
    "//ui/events/devices",
    "//ui/events/platform",
    "//ui/gfx",
    "//ui/gfx/geometry",
    "//ui/gfx/geometry/mojo",
    "//ui/gl",
    "//ui/platform_window",
    "//ui/platform_window:platform_impls",
    "//ui/platform_window/mojo",
  ]

  if (use_ozone) {
    public_deps += [ "//ui/ozone:ozone" ]
  }
}

static_library("test_interface") {
  sources = [
    "window_server_test_impl.cc",
    "window_server_test_impl.h",
  ]

  deps = [
    ":lib",
    "//mojo/public/cpp/bindings:bindings",
    "//services/ui/public/interfaces",
    "//ui/gfx",
  ]
}

static_library("test_support") {
  testonly = true

  sources = [
    "test_change_tracker.cc",
    "test_change_tracker.h",
  ]

  deps = [
    "//base",
    "//mojo/common",
    "//mojo/public/cpp/bindings:bindings",
    "//services/ui/common:mus_common",
    "//services/ui/public/cpp",
    "//services/ui/public/interfaces",
    "//ui/gfx/geometry/mojo",
  ]
}

group("tests") {
  testonly = true
  deps = [
    ":mus_ws_unittests",
  ]
  if (!is_android) {
    deps += [ "//services/ui/public/cpp/tests:mus_public_unittests" ]
  }
}

test("mus_ws_unittests") {
  sources = [
    "animation_runner_unittest.cc",
    "cursor_unittest.cc",
    "display_unittest.cc",
    "drag_controller_unittest.cc",
    "event_dispatcher_unittest.cc",
    "event_matcher_unittest.cc",
    "focus_controller_unittest.cc",
    "frame_generator_unittest.cc",
    "scheduled_animation_group_unittest.cc",
    "server_window_compositor_frame_sink_manager_test_api.cc",
    "server_window_compositor_frame_sink_manager_test_api.h",
    "server_window_drawn_tracker_unittest.cc",
    "test_server_window_delegate.cc",
    "test_server_window_delegate.h",
    "test_utils.cc",
    "test_utils.h",
    "transient_windows_unittest.cc",
    "user_activity_monitor_unittest.cc",
    "user_display_manager_unittest.cc",
    "window_coordinate_conversions_unittest.cc",
    "window_finder_unittest.cc",
    "window_manager_client_unittest.cc",
    "window_manager_state_unittest.cc",
    "window_tree_client_unittest.cc",
    "window_tree_unittest.cc",
  ]

  deps = [
    ":lib",
    ":test_support",
    "//base",
    "//base/test:test_config",
    "//base/test:test_support",
    "//cc:cc",
    "//gpu/ipc/client",
    "//mojo/public/cpp/bindings:bindings",
    "//services/service_manager/public/cpp:service_test_support",
    "//services/service_manager/public/cpp:sources",
    "//services/service_manager/public/cpp/test:run_all_service_tests",
    "//services/service_manager/public/interfaces",
    "//services/ui/common:mus_common",
    "//services/ui/public/cpp",
    "//services/ui/public/cpp:internal_or_test",
    "//services/ui/public/cpp/tests:test_support",
    "//services/ui/public/interfaces",
    "//services/ui/surfaces",
    "//testing/gtest",
    "//third_party/mesa:osmesa",
    "//ui/events",
    "//ui/gfx",
    "//ui/gfx:test_support",
    "//ui/gfx/geometry",
    "//ui/gfx/geometry/mojo",
    "//ui/gl",
  ]

  if (use_x11) {
    deps += [ "//tools/xdisplaycheck" ]
  }

  data_deps = [
    ":mus_ws_unittests_app_manifest",
  ]
}

service_manifest("mus_ws_unittests_app_manifest") {
  name = "mus_ws_unittests_app"
  source = "mus_ws_unittests_app_manifest.json"
}
