# 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/layer_tree_frame_sink_local.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/focus_synchronizer.h",
    "mus/focus_synchronizer_delegate.h",
    "mus/focus_synchronizer_observer.h",
    "mus/in_flight_change.h",
    "mus/input_method_mus.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/user_activity_forwarder.h",
    "mus/window_manager_delegate.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",
    "scoped_window_targeter.h",
    "window.h",
    "window_delegate.h",
    "window_event_dispatcher.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/layer_tree_frame_sink_local.cc",
    "local/window_port_local.cc",
    "mus/capture_synchronizer.cc",
    "mus/client_surface_embedder.cc",
    "mus/drag_drop_controller_mus.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/user_activity_forwarder.cc",
    "mus/window_manager_delegate.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",
    "scoped_window_targeter.cc",
    "window.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",
    "//components/discardable_memory/client",
    "//components/discardable_memory/public/interfaces",
    "//components/viz/client",
    "//components/viz/host",
    "//components/viz/service",
    "//gpu/ipc/client",
    "//mojo/public/cpp/system",
    "//net",
    "//services/service_manager/public/cpp",
    "//services/ui/public/cpp",
    "//services/ui/public/interfaces",
    "//skia",
    "//ui/base",
    "//ui/base/ime",
    "//ui/display",
    "//ui/events",
    "//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",
  ]

  data_deps = [
    "//services/ui",
  ]

  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" ]
  }

  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_manager_client.cc",
    "test/mus/test_window_manager_client.h",
    "test/mus/test_window_manager_delegate.cc",
    "test/mus/test_window_manager_delegate.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_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",

    # 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/ui/public/cpp/input_devices",
    "//services/ui/public/interfaces",
    "//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/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/config:exe_and_shlib_deps",
    "//build/win:default_exe_manifest",
    "//components/viz/host",
    "//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 = [
    "gestures/gesture_recognizer_unittest.cc",
    "hit_test_data_provider_aura_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/system_input_injector_mus_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/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",
    "//components/viz/client",
    "//mojo/common",
    "//mojo/edk/system",
    "//net",
    "//services/ui/common:task_runner_test_base",
    "//services/ui/public/cpp",
    "//skia",
    "//testing/gtest",
    "//ui/base:test_support",
    "//ui/compositor:test_support",
    "//ui/display:test_support",
    "//ui/events:gesture_detection",
    "//ui/events:test_support",
    "//ui/gfx",
    "//ui/gfx/geometry",
    "//ui/gl:test_support",
    "//ui/platform_window/stub",
    "//ui/wm",
  ]

  if (is_linux) {
    deps += [ "//third_party/mesa" ]
  }

  data_deps = [
    "//third_party/mesa:osmesa",
  ]
}
