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

# In external window mode, top-level windows are native platform windows i.e.
# not children of a Chrome OS window manager's root window.
is_external_mode = use_ozone && !is_chromeos

static_library("lib") {
  sources = [
    "accelerator.cc",
    "accelerator.h",
    "access_policy.h",
    "access_policy_delegate.h",
    "accessibility_manager.cc",
    "accessibility_manager.h",
    "compositor_frame_sink_client_binding.cc",
    "compositor_frame_sink_client_binding.h",
    "cursor_location_manager.cc",
    "cursor_location_manager.h",
    "cursor_state.cc",
    "cursor_state.h",
    "cursor_state_delegate.h",
    "default_access_policy.cc",
    "default_access_policy.h",
    "display.cc",
    "display.h",
    "display_binding.cc",
    "display_binding.h",
    "display_creation_config.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",
    "event_targeter.cc",
    "event_targeter.h",
    "event_targeter_delegate.h",
    "focus_controller.cc",
    "focus_controller.h",
    "focus_controller_observer.h",
    "frame_generator.cc",
    "frame_generator.h",
    "frame_sink_manager_client_binding.cc",
    "frame_sink_manager_client_binding.h",
    "gpu_client.cc",
    "gpu_client.h",
    "gpu_host.cc",
    "gpu_host.h",
    "gpu_host_delegate.h",
    "modal_window_controller.cc",
    "modal_window_controller.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",
    "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",
    "threaded_image_cursors.cc",
    "threaded_image_cursors.h",
    "threaded_image_cursors_factory.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 = [
    "//components/viz/host",
    "//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:interfaces",
    "//components/viz/common",
    "//components/viz/service",
    "//mojo/common:common_base",
    "//mojo/public/cpp/bindings",
    "//services/service_manager/public/cpp",
    "//services/service_manager/public/interfaces",
    "//services/ui/common:mus_common",
    "//services/ui/display",
    "//services/ui/public/interfaces",
    "//services/viz/compositing/privileged/interfaces",
    "//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" ]
  }
  if (is_chromeos) {
    public_deps += [ "//ui/chromeos/events" ]
    if (use_ozone) {
      public_deps += [ "//ui/events/ozone:events_ozone" ]
    }
  }

  # ui service should not depend on below components.
  assert_no_deps = [
    "//ash",
    "//content/public/browser",
    "//content/public/common",
    "//ui/aura",
    "//ui/views",
  ]
}

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",
    "window_server_service_test_base.cc",
    "window_server_service_test_base.h",
  ]

  if (!is_external_mode) {
    # WindowServerTestBase assumes an initial display (and root) is provided
    # at startup, which is not the case on platforms running external window
    # mode.
    sources += [
      "window_server_test_base.cc",
      "window_server_test_base.h",
    ]
  }

  deps = [
    "//base",
    "//base/test:test_config",
    "//components/viz/test:test_support",
    "//mojo/common",
    "//mojo/public/cpp/bindings:bindings",
    "//services/service_manager/public/cpp",
    "//services/service_manager/public/cpp:service_test_support",
    "//services/ui/common:mus_common",
    "//services/ui/public/cpp",
    "//services/ui/public/interfaces",
    "//testing/gtest",
    "//ui/aura",
    "//ui/display:test_support",
    "//ui/gfx/geometry/mojo",
    "//ui/gl",
    "//ui/wm",
  ]
}

source_set("tests") {
  testonly = true

  sources = [
    "cursor_location_manager_unittest.cc",
    "cursor_state_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",
    "gpu_host_unittest.cc",
    "modal_window_controller_unittest.cc",
    "server_window_drawn_tracker_unittest.cc",
    "test_frame_sink_manager.h",
    "test_gpu_host.h",
    "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_finder_unittest.cc",
    "window_manager_state_unittest.cc",
    "window_server_hit_test_unittest.cc",
    "window_tree_client_unittest.cc",
    "window_tree_unittest.cc",
  ]

  if (!is_external_mode) {
    # A window manager client is not needed on platforms running external
    # window mode, since the host system is always the window manager.
    sources += [ "window_manager_client_unittest.cc" ]
  }

  # TODO(jamescook): Run this test on non-ozone platforms. This will require
  # initializing all the platform-specific windowing support.
  if (use_ozone) {
    sources += [ "platform_display_default_unittest.cc" ]
  }

  deps = [
    ":lib",
    ":test_support",
    "//base",
    "//base/test:test_config",
    "//base/test:test_support",
    "//cc:cc",
    "//cc:test_support",
    "//components/viz/test:test_support",
    "//gpu/ipc/client",
    "//mojo/public/cpp/bindings:bindings",
    "//services/service_manager/public/cpp",
    "//services/service_manager/public/cpp:service_test_support",
    "//services/service_manager/public/interfaces",
    "//services/ui/common:mus_common",
    "//services/ui/common:task_runner_test_base",
    "//services/ui/gpu:gpu",
    "//services/ui/public/cpp",
    "//services/ui/public/interfaces",
    "//testing/gtest",
    "//third_party/mesa:osmesa",
    "//ui/aura",
    "//ui/aura:test_support",
    "//ui/events",
    "//ui/gfx",
    "//ui/gfx:test_support",
    "//ui/gfx/geometry",
    "//ui/gfx/geometry/mojo",
    "//ui/gl",
  ]
}

service_manifest("unittests_manifest") {
  name = "ui_service_unittests"
  source = "test_manifest.json"
}

catalog("tests_catalog") {
  testonly = true
  embedded_services = [ ":unittests_manifest" ]
}
