# 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")

component("aura") {
  sources = [
    "../wm/public/activation_change_observer.cc",
    "../wm/public/activation_change_observer.h",
    "../wm/public/activation_client.cc",
    "../wm/public/activation_client.h",
    "../wm/public/activation_delegate.cc",
    "../wm/public/activation_delegate.h",
    "../wm/public/animation_host.cc",
    "../wm/public/animation_host.h",
    "../wm/public/scoped_drag_drop_disabler.cc",
    "../wm/public/scoped_drag_drop_disabler.h",
    "../wm/public/scoped_tooltip_disabler.cc",
    "../wm/public/scoped_tooltip_disabler.h",
    "../wm/public/tooltip_client.cc",
    "../wm/public/tooltip_client.h",
    "../wm/public/window_move_client.cc",
    "../wm/public/window_move_client.h",
    "../wm/public/window_types.h",
    "client/aura_constants.cc",
    "client/aura_constants.h",
    "client/capture_client.cc",
    "client/capture_client.h",
    "client/capture_client_observer.h",
    "client/capture_delegate.h",
    "client/cursor_client.cc",
    "client/cursor_client.h",
    "client/cursor_client_observer.cc",
    "client/cursor_client_observer.h",
    "client/default_capture_client.cc",
    "client/default_capture_client.h",
    "client/drag_drop_client.cc",
    "client/drag_drop_client.h",
    "client/drag_drop_delegate.cc",
    "client/drag_drop_delegate.h",
    "client/event_client.cc",
    "client/event_client.h",
    "client/focus_change_observer.cc",
    "client/focus_change_observer.h",
    "client/focus_client.cc",
    "client/focus_client.h",
    "client/screen_position_client.cc",
    "client/screen_position_client.h",
    "client/transient_window_client.cc",
    "client/transient_window_client.h",
    "client/transient_window_client_observer.h",
    "client/visibility_client.cc",
    "client/visibility_client.h",
    "client/window_parenting_client.cc",
    "client/window_parenting_client.h",
    "client/window_stacking_client.cc",
    "client/window_stacking_client.h",
    "env.cc",
    "env.h",
    "env_input_state_controller.cc",
    "env_input_state_controller.h",
    "env_observer.h",
    "input_state_lookup.cc",
    "input_state_lookup.h",
    "input_state_lookup_win.cc",
    "input_state_lookup_win.h",
    "layout_manager.cc",
    "layout_manager.h",
    "mus/capture_synchronizer.cc",
    "mus/capture_synchronizer.h",
    "mus/capture_synchronizer_delegate.h",
    "mus/client_surface_embedder.cc",
    "mus/client_surface_embedder.h",
    "mus/drag_drop_controller_host.h",
    "mus/drag_drop_controller_mus.cc",
    "mus/drag_drop_controller_mus.h",
    "mus/focus_synchronizer.cc",
    "mus/focus_synchronizer.h",
    "mus/focus_synchronizer_delegate.h",
    "mus/focus_synchronizer_observer.h",
    "mus/in_flight_change.cc",
    "mus/in_flight_change.h",
    "mus/input_method_mus.cc",
    "mus/input_method_mus.h",
    "mus/mus_context_factory.cc",
    "mus/mus_context_factory.h",
    "mus/mus_mouse_location_updater.cc",
    "mus/mus_mouse_location_updater.h",
    "mus/mus_types.h",
    "mus/os_exchange_data_provider_mus.cc",
    "mus/os_exchange_data_provider_mus.h",
    "mus/property_converter.cc",
    "mus/property_converter.h",
    "mus/property_utils.cc",
    "mus/property_utils.h",
    "mus/text_input_client_impl.cc",
    "mus/text_input_client_impl.h",
    "mus/user_activity_forwarder.cc",
    "mus/user_activity_forwarder.h",
    "mus/window_manager_delegate.cc",
    "mus/window_manager_delegate.h",
    "mus/window_mus.h",
    "mus/window_port_mus.cc",
    "mus/window_port_mus.h",
    "mus/window_tree_client.cc",
    "mus/window_tree_client.h",
    "mus/window_tree_client_delegate.cc",
    "mus/window_tree_client_delegate.h",
    "mus/window_tree_client_observer.h",
    "mus/window_tree_client_test_observer.h",
    "mus/window_tree_host_mus.cc",
    "mus/window_tree_host_mus.h",
    "mus/window_tree_host_mus_delegate.h",
    "mus/window_tree_host_mus_init_params.cc",
    "mus/window_tree_host_mus_init_params.h",
    "scoped_window_targeter.cc",
    "scoped_window_targeter.h",
    "window.cc",
    "window.h",
    "window_delegate.h",
    "window_event_dispatcher.cc",
    "window_event_dispatcher.h",
    "window_observer.cc",
    "window_observer.h",
    "window_port.cc",
    "window_port.h",
    "window_port_local.cc",
    "window_port_local.h",
    "window_targeter.cc",
    "window_targeter.h",
    "window_tracker.h",
    "window_tree_host.cc",
    "window_tree_host.h",
    "window_tree_host_mac.h",
    "window_tree_host_mac.mm",
    "window_tree_host_observer.h",
    "window_tree_host_platform.cc",
    "window_tree_host_platform.h",
    "window_tree_host_x11.cc",
    "window_tree_host_x11.h",
  ]

  defines = [ "AURA_IMPLEMENTATION" ]

  deps = [
    "//base",
    "//base:i18n",
    "//base/third_party/dynamic_annotations",
    "//cc",
    "//cc/surfaces",
    "//components/discardable_memory/client",
    "//components/discardable_memory/public/interfaces",
    "//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) {
    configs += [
      "//build/config/linux:x11",
      "//build/config/linux:xrandr",
    ]
    deps += [
      "//ui/events:events_base",
      "//ui/events/devices",
      "//ui/events/devices/x11",
      "//ui/events/platform/x11",
      "//ui/gfx/x",
    ]
  } else {
    sources -= [
      "window_tree_host_x11.cc",
      "window_tree_host_x11.h",
    ]
  }

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

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_helper.cc",
    "test/aura_test_helper.h",
    "test/aura_test_utils.cc",
    "test/aura_test_utils.h",
    "test/env_test_helper.h",
    "test/event_generator_delegate_aura.cc",
    "test/event_generator_delegate_aura.h",
    "test/input_method_glue.cc",
    "test/input_method_glue.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_tree.cc",
    "test/mus/test_window_tree.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",
  ]
  deps = [
    "//base/test:test_support",
    "//services/ui/public/interfaces",
    "//skia",
    "//testing/gtest",
    "//ui/base:test_support",
    "//ui/base/ime",
    "//ui/compositor:test_support",
    "//ui/display",
    "//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/sanitizers:deps",
    "//build/win:default_exe_manifest",
    "//cc/surfaces",
    "//skia",
    "//third_party/icu",
    "//ui/base",
    "//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",
    "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_tree_client_unittest.cc",
    "mus/window_tree_host_mus_unittest.cc",
    "test/run_all_unittests.cc",
    "window_event_dispatcher_unittest.cc",
    "window_targeter_unittest.cc",
    "window_tree_host_unittest.cc",
    "window_unittest.cc",
  ]

  deps = [
    ":test_support",
    "//base/test:test_support",
    "//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",
  ]

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

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