# 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/jumbo.gni")
import("//build/config/ui.gni")
import("//testing/test.gni")

jumbo_component("aura") {
  public = [
    "client/aura_constants.h",
    "client/capture_client.h",
    "client/capture_client_observer.h",
    "client/capture_delegate.h",
    "client/cursor_client.h",
    "client/cursor_client_observer.h",
    "client/default_capture_client.h",
    "client/drag_drop_client.h",
    "client/drag_drop_client_observer.h",
    "client/drag_drop_delegate.h",
    "client/event_client.h",
    "client/focus_change_observer.h",
    "client/focus_client.h",
    "client/screen_position_client.h",
    "client/transient_window_client.h",
    "client/transient_window_client_observer.h",
    "client/visibility_client.h",
    "client/window_parenting_client.h",
    "client/window_stacking_client.h",
    "client/window_types.h",
    "env.h",
    "env_input_state_controller.h",
    "env_observer.h",
    "event_injector.h",
    "hit_test_data_provider_aura.h",
    "input_state_lookup.h",
    "input_state_lookup_win.h",
    "layout_manager.h",
    "local/window_port_local.h",
    "mus/capture_synchronizer.h",
    "mus/capture_synchronizer_delegate.h",
    "mus/client_surface_embedder.h",
    "mus/drag_drop_controller_host.h",
    "mus/drag_drop_controller_mus.h",
    "mus/embed_root.h",
    "mus/embed_root_delegate.h",
    "mus/focus_synchronizer.h",
    "mus/focus_synchronizer_delegate.h",
    "mus/focus_synchronizer_observer.h",
    "mus/in_flight_change.h",
    "mus/input_method_mus.h",
    "mus/input_method_mus_delegate.h",
    "mus/mus_context_factory.h",
    "mus/mus_mouse_location_updater.h",
    "mus/mus_types.h",
    "mus/os_exchange_data_provider_mus.h",
    "mus/property_converter.h",
    "mus/property_utils.h",
    "mus/system_input_injector_mus.h",
    "mus/text_input_client_impl.h",
    "mus/topmost_window_tracker.h",
    "mus/user_activity_forwarder.h",
    "mus/window_mus.h",
    "mus/window_port_mus.h",
    "mus/window_tree_client.h",
    "mus/window_tree_client_delegate.h",
    "mus/window_tree_client_observer.h",
    "mus/window_tree_client_test_observer.h",
    "mus/window_tree_host_mus.h",
    "mus/window_tree_host_mus_delegate.h",
    "mus/window_tree_host_mus_init_params.h",
    "null_window_targeter.h",
    "scoped_keyboard_hook.h",
    "scoped_simple_keyboard_hook.h",
    "scoped_window_targeter.h",
    "window.h",
    "window_delegate.h",
    "window_event_dispatcher.h",
    "window_event_dispatcher_observer.h",
    "window_observer.h",
    "window_occlusion_tracker.h",
    "window_port.h",
    "window_targeter.h",
    "window_tracker.h",
    "window_tree_host.h",
    "window_tree_host_observer.h",
    "window_tree_host_platform.h",
  ]
  sources = [
    "aura_export.h",
    "client/aura_constants.cc",
    "client/capture_client.cc",
    "client/cursor_client.cc",
    "client/cursor_client_observer.cc",
    "client/default_capture_client.cc",
    "client/drag_drop_client.cc",
    "client/drag_drop_delegate.cc",
    "client/event_client.cc",
    "client/focus_change_observer.cc",
    "client/focus_client.cc",
    "client/screen_position_client.cc",
    "client/transient_window_client.cc",
    "client/visibility_client.cc",
    "client/window_parenting_client.cc",
    "client/window_stacking_client.cc",
    "env.cc",
    "env_input_state_controller.cc",
    "event_injector.cc",
    "hit_test_data_provider_aura.cc",
    "input_state_lookup.cc",
    "input_state_lookup_win.cc",
    "layout_manager.cc",
    "local/window_port_local.cc",
    "mouse_location_manager.cc",
    "mouse_location_manager.h",
    "mus/capture_synchronizer.cc",
    "mus/client_surface_embedder.cc",
    "mus/drag_drop_controller_mus.cc",
    "mus/embed_root.cc",
    "mus/focus_synchronizer.cc",
    "mus/in_flight_change.cc",
    "mus/input_method_mus.cc",
    "mus/mus_context_factory.cc",
    "mus/mus_mouse_location_updater.cc",
    "mus/os_exchange_data_provider_mus.cc",
    "mus/property_converter.cc",
    "mus/property_utils.cc",
    "mus/system_input_injector_mus.cc",
    "mus/text_input_client_impl.cc",
    "mus/topmost_window_tracker.cc",
    "mus/user_activity_forwarder.cc",
    "mus/window_port_mus.cc",
    "mus/window_tree_client.cc",
    "mus/window_tree_client_delegate.cc",
    "mus/window_tree_host_mus.cc",
    "mus/window_tree_host_mus_init_params.cc",
    "null_window_targeter.cc",
    "scoped_keyboard_hook.cc",
    "scoped_simple_keyboard_hook.cc",
    "scoped_window_targeter.cc",
    "window.cc",
    "window_delegate.cc",
    "window_event_dispatcher.cc",
    "window_observer.cc",
    "window_occlusion_tracker.cc",
    "window_port.cc",
    "window_port_for_shutdown.cc",
    "window_port_for_shutdown.h",
    "window_targeter.cc",
    "window_tree_host.cc",
    "window_tree_host_platform.cc",
  ]

  defines = [ "AURA_IMPLEMENTATION" ]

  deps = [
    "//base",
    "//base:i18n",
    "//base/third_party/dynamic_annotations",
    "//cc",
    "//cc/mojo_embedder",
    "//components/discardable_memory/client",
    "//components/discardable_memory/public/interfaces",
    "//components/viz/client",
    "//components/viz/common",
    "//components/viz/host",
    "//components/viz/service",
    "//gpu/ipc/client",
    "//mojo/public/cpp/system",
    "//net",
    "//services/service_manager/public/cpp",
    "//services/ws/common",
    "//services/ws/public/cpp",
    "//services/ws/public/mojom",
    "//skia",
    "//ui/base",
    "//ui/base/ime",
    "//ui/display",
    "//ui/events",
    "//ui/events:dom_keyboard_layout",
    "//ui/events:events_base",
    "//ui/events/platform",
    "//ui/gfx",
    "//ui/gfx/geometry",
    "//ui/gl",
    "//ui/platform_window",
    "//ui/platform_window/mojo",
    "//ui/platform_window/stub",
  ]

  public_deps = [
    "//ui/compositor",
  ]

  if (use_x11) {
    deps += [
      "//ui/events/platform/x11",
      "//ui/platform_window/x11",
    ]
  }

  if (is_win) {
    sources -= [ "input_state_lookup.cc" ]

    deps += [
      "//ipc",
      "//ui/platform_window/win",
    ]
  }

  if (use_ozone) {
    deps += [ "//ui/ozone" ]
    public += [ "screen_ozone.h" ]
    sources += [ "screen_ozone.cc" ]
  }

  if (is_android) {
    deps += [
      "//ui/platform_window/android",
      "//ui/platform_window/android:platform_window_java",
    ]
  }
}

jumbo_static_library("test_support") {
  testonly = true
  sources = [
    "test/aura_mus_test_base.cc",
    "test/aura_mus_test_base.h",
    "test/aura_test_base.cc",
    "test/aura_test_base.h",
    "test/aura_test_context_factory.cc",
    "test/aura_test_context_factory.h",
    "test/aura_test_helper.cc",
    "test/aura_test_helper.h",
    "test/aura_test_suite_setup.cc",
    "test/aura_test_suite_setup.h",
    "test/aura_test_utils.cc",
    "test/aura_test_utils.h",
    "test/env_test_helper.cc",
    "test/env_test_helper.h",
    "test/event_generator_delegate_aura.cc",
    "test/event_generator_delegate_aura.h",
    "test/mus/change_completion_waiter.cc",
    "test/mus/change_completion_waiter.h",
    "test/mus/input_method_mus_test_api.h",
    "test/mus/test_window_tree.cc",
    "test/mus/test_window_tree.h",
    "test/mus/test_window_tree_client_delegate.cc",
    "test/mus/test_window_tree_client_delegate.h",
    "test/mus/test_window_tree_client_setup.cc",
    "test/mus/test_window_tree_client_setup.h",
    "test/mus/window_tree_client_private.cc",
    "test/mus/window_tree_client_private.h",
    "test/test_cursor_client.cc",
    "test/test_cursor_client.h",
    "test/test_focus_client.cc",
    "test/test_focus_client.h",
    "test/test_screen.cc",
    "test/test_screen.h",
    "test/test_window_delegate.cc",
    "test/test_window_delegate.h",
    "test/test_window_parenting_client.cc",
    "test/test_window_parenting_client.h",
    "test/test_window_targeter.cc",
    "test/test_window_targeter.h",
    "test/test_windows.cc",
    "test/test_windows.h",
    "test/ui_controls_factory_aura.h",
    "test/window_event_dispatcher_test_api.cc",
    "test/window_event_dispatcher_test_api.h",
    "test/window_occlusion_tracker_test_api.cc",
    "test/window_occlusion_tracker_test_api.h",
    "test/window_test_api.cc",
    "test/window_test_api.h",
  ]

  # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
  configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]

  public_deps = [
    ":aura",
    "//services/ws/common",

    # Must be public as headers include ui_features.h.
    "//ui/base:ui_features",
  ]
  deps = [
    "//base/test:test_support",
    "//cc:test_support",
    "//components/viz/test:test_support",
    "//services/service_manager/public/cpp",
    "//services/ws/public/cpp/input_devices",
    "//services/ws/public/mojom",
    "//skia",
    "//testing/gtest",
    "//ui/base:test_support",
    "//ui/base/ime",
    "//ui/compositor:test_support",
    "//ui/display",
    "//ui/display/manager",
    "//ui/events",
    "//ui/events:events_base",
    "//ui/events:test_support",
    "//ui/gfx",
    "//ui/gfx/geometry",
    "//ui/platform_window",
    "//ui/wm",
  ]

  if (is_win) {
    sources += [ "test/ui_controls_factory_aurawin.cc" ]
  }

  if (use_x11) {
    sources += [
      "test/ui_controls_factory_aurax11.cc",
      "test/x11_event_sender.cc",
      "test/x11_event_sender.h",
    ]

    deps += [ "//ui/gfx/x" ]
  }

  if (use_ozone) {
    sources += [ "test/ui_controls_factory_ozone.cc" ]
  }
}

executable("demo") {
  output_name = "aura_demo"
  testonly = true

  sources = [
    "demo/demo_main.cc",
  ]

  deps = [
    ":aura",
    ":test_support",
    "//base",
    "//base:i18n",
    "//build/win:default_exe_manifest",
    "//components/viz/host",
    "//components/viz/service",
    "//skia",
    "//third_party/icu",
    "//ui/base",
    "//ui/base/ime",
    "//ui/compositor",
    "//ui/compositor:test_support",
    "//ui/display",
    "//ui/events",
    "//ui/gfx",
    "//ui/gfx/geometry",
    "//ui/gl/init",
  ]

  if (use_x11) {
    deps += [ "//ui/gfx/x" ]
  }
}

test("aura_unittests") {
  sources = [
    "../compositor_extra/shadow_unittest.cc",
    "//ui/aura_extra/window_occlusion_impl_unittest_win.cc",
    "gestures/gesture_recognizer_unittest.cc",
    "hit_test_data_provider_aura_unittest.cc",
    "mouse_location_manager_unittest.cc",
    "mus/drag_drop_controller_mus_unittest.cc",
    "mus/focus_synchronizer_unittest.cc",
    "mus/input_method_mus_unittest.cc",
    "mus/os_exchange_data_provider_mus_unittest.cc",
    "mus/property_converter_unittest.cc",
    "mus/user_activity_forwarder_unittest.cc",
    "mus/window_port_mus_unittest.cc",
    "mus/window_tree_client_unittest.cc",
    "mus/window_tree_host_mus_unittest.cc",
    "test/aura_test_suite.h",
    "test/run_all_unittests.cc",
    "window_event_dispatcher_unittest.cc",
    "window_occlusion_tracker_unittest.cc",
    "window_targeter_unittest.cc",
    "window_tree_host_unittest.cc",
    "window_unittest.cc",
  ]

  deps = [
    ":test_support",
    "//base/test:test_support",
    "//cc/mojo_embedder",
    "//components/viz/client",
    "//mojo/core/embedder",
    "//net",
    "//services/ws/common:task_runner_test_base",
    "//services/ws/public/cpp",
    "//skia",
    "//testing/gtest",
    "//ui/aura_extra",
    "//ui/base:test_support",
    "//ui/compositor:test_support",
    "//ui/compositor_extra",
    "//ui/display:test_support",
    "//ui/events:gesture_detection",
    "//ui/events:test_support",
    "//ui/gfx",
    "//ui/gfx/geometry",
    "//ui/gl:test_support",
    "//ui/platform_window",
    "//ui/platform_window/stub",
    "//ui/wm",
  ]

  data_deps = [
    "//third_party/mesa_headers",
  ]
}
