# Copyright 2015 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("//chrome/common/features.gni")
import("//build/config/ui.gni")
import("//testing/test.gni")

source_set("exo") {
  sources = [
    "buffer.cc",
    "buffer.h",
    "client_controlled_shell_surface.cc",
    "client_controlled_shell_surface.h",
    "data_device.cc",
    "data_device.h",
    "data_device_delegate.h",
    "data_offer.cc",
    "data_offer.h",
    "data_offer_delegate.h",
    "data_offer_observer.h",
    "data_source.cc",
    "data_source.h",
    "data_source_delegate.h",
    "data_source_observer.h",
    "display.cc",
    "display.h",
    "gaming_seat.cc",
    "gaming_seat.h",
    "input_method_surface.cc",
    "input_method_surface.h",
    "input_method_surface_manager.h",
    "keyboard.cc",
    "keyboard.h",
    "keyboard_delegate.h",
    "keyboard_device_configuration_delegate.h",
    "keyboard_observer.h",
    "layer_tree_frame_sink_holder.cc",
    "layer_tree_frame_sink_holder.h",
    "notification_surface.cc",
    "notification_surface.h",
    "notification_surface_manager.h",
    "pointer.cc",
    "pointer.h",
    "pointer_delegate.h",
    "seat.cc",
    "seat.h",
    "seat_observer.h",
    "shared_memory.cc",
    "shared_memory.h",
    "shell_surface.cc",
    "shell_surface.h",
    "shell_surface_base.cc",
    "shell_surface_base.h",
    "sub_surface.cc",
    "sub_surface.h",
    "surface.cc",
    "surface.h",
    "surface_delegate.h",
    "surface_observer.h",
    "surface_tree_host.cc",
    "surface_tree_host.h",
    "touch.cc",
    "touch.h",
    "touch_delegate.h",
    "wm_helper.cc",
    "wm_helper.h",
    "xdg_shell_surface.cc",
    "xdg_shell_surface.h",
  ]

  deps = [
    "//ash/public/cpp",
    "//base",
    "//cc",
    "//components/viz/service",
    "//device/gamepad",
    "//device/gamepad/public/cpp:shared_with_blink",
    "//gpu",
    "//gpu/command_buffer/client:gles2_interface",
    "//services/ui/public/interfaces",
    "//skia",
    "//ui/aura",
    "//ui/compositor",
    "//ui/compositor_extra",
    "//ui/display/manager",
    "//ui/events/devices:devices",
    "//ui/events/ozone:events_ozone_evdev",
    "//ui/gfx",
    "//ui/gfx/geometry",
    "//ui/gl",
    "//ui/ozone",
    "//ui/views",
    "//ui/views/mus",
    "//ui/wm",
    "//ui/wm/public",
  ]

  if (is_chromeos) {
    deps += [ "//chromeos" ]
  }
}

source_set("test_support") {
  testonly = true

  sources = [
    "test/exo_test_base.cc",
    "test/exo_test_base.h",
    "test/exo_test_helper.cc",
    "test/exo_test_helper.h",
    "test/test_client_controlled_state_delegate.cc",
    "test/test_client_controlled_state_delegate.h",
  ]

  deps = [
    ":exo",
    "//ash:test_support_without_content",
    "//ash/public/cpp",
    "//base",
    "//gpu",
    "//skia",
    "//testing/gtest",
    "//ui/aura",
    "//ui/compositor",
    "//ui/gfx/geometry",
    "//ui/views",
    "//ui/wm",
  ]
}

source_set("unit_tests") {
  testonly = true

  sources = [
    "../../ui/events/ozone/gamepad/gamepad_event.cc",
    "buffer_unittest.cc",
    "client_controlled_shell_surface_unittest.cc",
    "data_device_unittest.cc",
    "data_offer_unittest.cc",
    "data_source_unittest.cc",
    "display_unittest.cc",
    "gaming_seat_unittest.cc",
    "keyboard_unittest.cc",
    "pointer_unittest.cc",
    "seat_unittest.cc",
    "shared_memory_unittest.cc",
    "shell_surface_unittest.cc",
    "sub_surface_unittest.cc",
    "surface_unittest.cc",
    "touch_unittest.cc",
  ]

  deps = [
    ":exo",
    ":test_support",
    "//ash",
    "//ash:test_support_without_content",
    "//ash/public/cpp",
    "//base",
    "//base/test:test_support",
    "//cc",
    "//cc:test_support",
    "//components/user_manager",
    "//components/viz/service",
    "//components/viz/test:test_support",
    "//device/gamepad:test_helpers",
    "//gpu/command_buffer/client:gles2_interface",
    "//skia",
    "//testing/gmock",
    "//testing/gtest",
    "//ui/aura",
    "//ui/compositor:test_support",
    "//ui/compositor_extra",
    "//ui/events:dom_keycode_converter",
    "//ui/events:test_support",
    "//ui/events/ozone:events_ozone_evdev",
    "//ui/gfx",
    "//ui/keyboard",
    "//ui/message_center",
    "//ui/views",
    "//ui/wm",
  ]

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

test("exo_unittests") {
  sources = [
    "../../ash/test/ash_test_suite.cc",
    "../../ash/test/ash_test_suite.h",
    "test/run_all_unittests.cc",
  ]

  deps = [
    ":unit_tests",
    "//ash:test_support_without_content",
    "//ash/public/cpp",
    "//base",
    "//base/test:test_support",
    "//cc:test_support",
    "//components/viz/test:test_support",
    "//device/gamepad:test_helpers",
    "//mojo/core/embedder",
    "//testing/gtest",
    "//ui/aura",
    "//ui/aura:test_support",
    "//ui/base",
    "//ui/compositor:test_support",
    "//ui/display:display_manager_test_api",
    "//ui/gl:test_support",
  ]

  data_deps = [
    "//ash/strings:ash_test_strings",
    "//ash/resources:ash_test_resources_100_percent",
    "//ash/resources:ash_test_resources_200_percent",
  ]

  if (is_linux) {
    deps += [ "//components/exo/wayland:unit_tests" ]
  }
}
