# 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/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",
    "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",
    "//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/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_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 = [
    "//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",
  ]
}
