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

if (is_android) {
  import("//build/config/android/rules.gni")
}

if (is_ios) {
  import("//ios/build/config.gni")
}

if (is_android) {
  if (!defined(keycode_conversion_data_android_path)) {
    keycode_conversion_data_android_path =
        "keycodes/dom/keycode_conversion_data_android.inc"
  }
  keycode_conversion_data_android_gen_path = "$target_gen_dir/keycodes/dom/keycode_conversion_data_android_generated.inc"

  copy("keycode_conversion_data_android") {
    sources = [
      keycode_conversion_data_android_path,
    ]
    outputs = [
      keycode_conversion_data_android_gen_path,
    ]
  }
}

jumbo_static_library("dom_keycode_converter") {
  public = [
    "keycodes/dom/dom_code.h",
    "keycodes/dom/dom_codes.h",
    "keycodes/dom/dom_key.h",
    "keycodes/dom/keycode_converter.h",
  ]

  sources = [
    "keycodes/dom/dom_key_data.inc",
    "keycodes/dom/keycode_converter.cc",
    "keycodes/dom/keycode_converter_data.inc",
  ]

  deps = [
    "//base",
  ]

  if (!is_ios) {
    deps += [ "//ipc:param_traits" ]
  }

  if (is_android) {
    sources += [ keycode_conversion_data_android_gen_path ]

    deps += [ ":keycode_conversion_data_android" ]
  }
}

static_library("dom_keyboard_layout") {
  public = [
    "keycodes/dom/dom_keyboard_layout.h",
    "keycodes/dom/dom_keyboard_layout_manager.h",
    "keycodes/dom/dom_keyboard_layout_map.h",
  ]

  sources = [
    "keycodes/dom/dom_keyboard_layout.cc",
    "keycodes/dom/dom_keyboard_layout_manager.cc",
    "keycodes/dom/dom_keyboard_layout_map_base.cc",
    "keycodes/dom/dom_keyboard_layout_map_base.h",
  ]

  # Make sure we don't compile two versions of dom_keyboard_layout_map*
  if (is_mac) {
    sources += [ "keycodes/dom/dom_keyboard_layout_map_mac.mm" ]
  } else if (is_win) {
    sources += [ "keycodes/dom/dom_keyboard_layout_map_win.cc" ]
  } else {
    sources += [ "keycodes/dom/dom_keyboard_layout_map_ozone.cc" ]
  }

  deps = [
    ":dom_keycode_converter",
    ":events_base",
    "//base",
    "//ui/events/ozone:events_ozone_layout",
  ]

  if (!is_ios) {
    deps += [ "//ipc:param_traits" ]
  }

  # Expose the internals of this target to other packages in this BUILD file
  # so the unit tests can access the private header files.
  # Note: Only 'events_unittests' needs access in this file, however it uses a
  # template which generates different target names on different platforms.
  friend = [ ":*" ]
}

source_set("event_constants") {
  sources = [
    "event_constants.h",
  ]
}

source_set("platform_event") {
  sources = [
    "platform_event.h",
  ]
}

jumbo_component("events_base") {
  sources = [
    "base_event_utils.cc",
    "base_event_utils.h",
    "event_switches.cc",
    "event_switches.h",
    "events_base_export.h",
    "fraction_of_time_without_user_input_recorder.cc",
    "fraction_of_time_without_user_input_recorder.h",
    "gesture_curve.h",
    "gesture_event_details.cc",
    "gesture_event_details.h",
    "gestures/fixed_velocity_curve.cc",
    "gestures/fixed_velocity_curve.h",
    "gestures/fling_curve.cc",
    "gestures/fling_curve.h",
    "keycodes/dom_us_layout_data.h",
    "keycodes/keyboard_code_conversion.cc",
    "keycodes/keyboard_code_conversion.h",
    "keycodes/keyboard_code_conversion_android.cc",
    "keycodes/keyboard_code_conversion_android.h",
    "keycodes/keyboard_code_conversion_mac.h",
    "keycodes/keyboard_code_conversion_mac.mm",
    "keycodes/keyboard_code_conversion_win.cc",
    "keycodes/keyboard_code_conversion_win.h",
    "keycodes/keyboard_codes.h",
    "mobile_scroller.cc",
    "mobile_scroller.h",
  ]

  defines = [ "EVENTS_BASE_IMPLEMENTATION" ]

  deps = [
    ":dom_keycode_converter",
    "//base/third_party/dynamic_annotations",
  ]

  public_deps = [
    ":event_constants",
    ":platform_event",
    "//base",
    "//ui/events/platform",
    "//ui/gfx/geometry",
  ]

  if (use_x11) {
    public_deps += [ "//ui/events/keycodes:x11" ]
  }

  if (!is_ios) {
    deps += [ "//ipc:param_traits" ]
  }

  if (is_mac) {
    libs = [
      "AppKit.framework",
      "Carbon.framework",
    ]
  }

  if (is_android) {
    sources += [ keycode_conversion_data_android_gen_path ]

    deps += [ ":keycode_conversion_data_android" ]
  }
}

jumbo_component("events") {
  public = [
    "cocoa/cocoa_event_utils.h",
    "event.h",
    "event_dispatcher.h",
    "event_handler.h",
    "event_modifiers.h",
    "event_observer.h",
    "event_processor.h",
    "event_rewriter.h",
    "event_sink.h",
    "event_source.h",
    "event_target.h",
    "event_target_iterator.h",
    "event_targeter.h",
    "event_utils.h",
    "events_export.h",
    "gestures/gesture_recognizer.h",
    "gestures/gesture_recognizer_impl_mac.h",
    "gestures/gesture_recognizer_observer.h",
    "gestures/gesture_types.h",
    "keyboard_hook.h",
    "null_event_targeter.h",
    "scoped_target_handler.h",
    "system_input_injector.h",
    "win/events_win_utils.h",
    "win/system_event_state_lookup.h",
  ]

  sources = [
    "cocoa/cocoa_event_utils.mm",
    "cocoa/events_mac.mm",
    "event.cc",
    "event_dispatcher.cc",
    "event_handler.cc",
    "event_modifiers.cc",
    "event_processor.cc",
    "event_rewriter.cc",
    "event_rewriter_continuation.h",
    "event_source.cc",
    "event_target.cc",
    "event_utils.cc",
    "events_exports.cc",
    "events_stub.cc",
    "gestures/gesture_recognizer.cc",
    "gestures/gesture_recognizer_impl_mac.cc",
    "gestures/gesture_recognizer_observer.cc",
    "gestures/gesture_types.cc",
    "keyboard_hook_base.cc",
    "keyboard_hook_base.h",
    "keycodes/platform_key_map_win.cc",
    "keycodes/platform_key_map_win.h",
    "mac/keyboard_hook_mac.mm",
    "null_event_targeter.cc",
    "scoped_target_handler.cc",
    "system_input_injector.cc",
    "win/events_win.cc",
    "win/events_win_utils.cc",
    "win/keyboard_hook_win_base.cc",
    "win/keyboard_hook_win_base.h",
    "win/media_keyboard_hook_win.cc",
    "win/modifier_keyboard_hook_win.cc",
    "win/system_event_state_lookup.cc",
  ]

  defines = [ "EVENTS_IMPLEMENTATION" ]

  public_deps = [
    ":events_base",
    "//ui/display",
    "//ui/latency",
  ]
  deps = [
    ":dom_keycode_converter",
    ":gesture_detection",
    "//base/third_party/dynamic_annotations",
    "//skia",
    "//ui/gfx",
    "//ui/gfx/geometry",
  ]

  # Expose the internals of this target to other packages in this BUILD file
  # so the unit tests can access the private header files.
  # Note: Only 'events_unittests' needs access in this file, however it uses a
  # template which generates different target names on different platforms.
  friend = [ ":*" ]

  if (use_x11) {
    sources += [
      "x/events_x.cc",
      "x/keyboard_hook_x11.cc",
    ]
    configs += [ "//build/config/linux:x11" ]
    deps += [
      "//ui/events/devices",
      "//ui/events/devices/x11",
      "//ui/events/x",
      "//ui/gfx/x",
    ]
  }

  if (use_glib) {
    configs += [ "//build/config/linux:glib" ]
  }

  if (use_ozone) {
    sources += [ "events_default.cc" ]
  }

  if (is_win && use_ozone) {
    sources -= [ "win/events_win.cc" ]
  }

  if (use_ozone) {
    public += [ "ozone/events_ozone.h" ]
    sources += [
      "ozone/events_ozone.cc",
      "ozone/keyboard_hook_ozone.cc",
    ]
    deps += [ "//ui/events/ozone:events_ozone_layout" ]
  }

  if (use_aura) {
    public += [
      "gestures/gesture_provider_aura.h",
      "gestures/gesture_recognizer_impl.h",
      "gestures/motion_event_aura.h",
    ]
    sources += [
      "gestures/gesture_provider_aura.cc",
      "gestures/gesture_recognizer_impl.cc",
      "gestures/motion_event_aura.cc",
    ]
  }

  if (is_win || is_mac || use_x11 || use_ozone) {
    sources -= [ "events_stub.cc" ]
  }

  if (is_android) {
    public += [
      "android/drag_event_android.h",
      "android/event_handler_android.h",
      "android/gesture_event_android.h",
      "android/gesture_event_type.h",
      "android/key_event_android.h",
      "android/key_event_utils.h",
      "android/motion_event_android.h",
    ]
    sources += [
      "android/drag_event_android.cc",
      "android/event_handler_android.cc",
      "android/gesture_event_android.cc",
      "android/key_event_android.cc",
      "android/key_event_utils.cc",
      "android/keyboard_hook_android.cc",
      "android/motion_event_android.cc",
    ]
    deps += [
      ":keyevent_jni_headers",
      ":motionevent_jni_headers",
    ]
  }

  if (is_mac) {
    libs = [ "AppKit.framework" ]
  }

  if (is_fuchsia) {
    public += [
      "fuchsia/input_event_dispatcher.h",
      "fuchsia/input_event_dispatcher_delegate.h",
    ]
    sources += [ "fuchsia/input_event_dispatcher.cc" ]
    public_deps += [ "//third_party/fuchsia-sdk/sdk:ui_input" ]
  }
}

jumbo_component("gesture_detection") {
  sources = [
    "gesture_detection/bitset_32.h",
    "gesture_detection/filtered_gesture_provider.cc",
    "gesture_detection/filtered_gesture_provider.h",
    "gesture_detection/gesture_configuration.cc",
    "gesture_detection/gesture_configuration.h",
    "gesture_detection/gesture_detection_export.h",
    "gesture_detection/gesture_detector.cc",
    "gesture_detection/gesture_detector.h",
    "gesture_detection/gesture_event_data.cc",
    "gesture_detection/gesture_event_data.h",
    "gesture_detection/gesture_event_data_packet.cc",
    "gesture_detection/gesture_event_data_packet.h",
    "gesture_detection/gesture_listeners.cc",
    "gesture_detection/gesture_listeners.h",
    "gesture_detection/gesture_provider.cc",
    "gesture_detection/gesture_provider.h",
    "gesture_detection/gesture_provider_config_helper.cc",
    "gesture_detection/gesture_provider_config_helper.h",
    "gesture_detection/gesture_touch_uma_histogram.cc",
    "gesture_detection/gesture_touch_uma_histogram.h",
    "gesture_detection/motion_event.cc",
    "gesture_detection/motion_event.h",
    "gesture_detection/motion_event_buffer.cc",
    "gesture_detection/motion_event_buffer.h",
    "gesture_detection/motion_event_generic.cc",
    "gesture_detection/motion_event_generic.h",
    "gesture_detection/scale_gesture_detector.cc",
    "gesture_detection/scale_gesture_detector.h",
    "gesture_detection/scale_gesture_listeners.cc",
    "gesture_detection/scale_gesture_listeners.h",
    "gesture_detection/snap_scroll_controller.cc",
    "gesture_detection/snap_scroll_controller.h",
    "gesture_detection/touch_disposition_gesture_filter.cc",
    "gesture_detection/touch_disposition_gesture_filter.h",
    "gesture_detection/velocity_tracker.cc",
    "gesture_detection/velocity_tracker.h",
    "gesture_detection/velocity_tracker_state.cc",
    "gesture_detection/velocity_tracker_state.h",
  ]

  deps = [
    ":events_base",
    "//base",
    "//base/third_party/dynamic_annotations",
    "//ui/display",
    "//ui/gfx",
    "//ui/gfx/geometry",
  ]

  defines = [ "GESTURE_DETECTION_IMPLEMENTATION" ]

  if (is_android) {
    sources += [ "gesture_detection/gesture_configuration_android.cc" ]
  } else if (is_chromecast) {
    sources += [ "gesture_detection/gesture_configuration_cast.cc" ]
  } else if (use_aura) {
    sources += [ "gesture_detection/gesture_configuration_aura.cc" ]
  } else {
    sources += [ "gesture_detection/gesture_configuration_default.cc" ]
  }
}

jumbo_static_library("test_support") {
  sources = [
    "test/cocoa_test_event_utils.h",
    "test/cocoa_test_event_utils.mm",
    "test/event_generator.cc",
    "test/event_generator.h",
    "test/events_test_utils.cc",
    "test/events_test_utils.h",
    "test/keyboard_layout.cc",
    "test/keyboard_layout.h",
    "test/keyboard_layout_mac.cc",
    "test/keyboard_layout_win.cc",
    "test/motion_event_test_utils.cc",
    "test/motion_event_test_utils.h",
    "test/platform_event_source_test_api.cc",
    "test/platform_event_source_test_api.h",
    "test/platform_event_waiter.cc",
    "test/platform_event_waiter.h",
    "test/test_event_handler.cc",
    "test/test_event_handler.h",
    "test/test_event_processor.cc",
    "test/test_event_processor.h",
    "test/test_event_rewriter.cc",
    "test/test_event_rewriter.h",
    "test/test_event_source.cc",
    "test/test_event_source.h",
    "test/test_event_target.cc",
    "test/test_event_target.h",
    "test/test_event_targeter.cc",
    "test/test_event_targeter.h",
  ]

  public_deps = [
    ":dom_keycode_converter",
    ":events",
    ":events_base",
    ":gesture_detection",
    "//ui/events/devices",
  ]
  deps = [
    "//base",
    "//skia",
    "//ui/events/platform",
    "//ui/gfx",
    "//ui/gfx/geometry",
  ]

  if (is_ios) {
    sources -= [
      "test/cocoa_test_event_utils.h",
      "test/cocoa_test_event_utils.mm",
    ]
  }

  if (is_mac) {
    libs = [ "Carbon.framework" ]
  }

  if (use_x11 || ozone_platform_x11) {
    sources += [
      "test/events_test_utils_x11.cc",
      "test/events_test_utils_x11.h",
    ]
    deps += [
      "//ui/events/devices/x11",
      "//ui/events/keycodes:x11",
      "//ui/gfx/x",
    ]
  }

  if (use_x11 || ozone_platform_x11) {
    deps += [ "//ui/events/x" ]
  }
}

if (!is_ios) {
  test("events_unittests") {
    sources = [
      "blink/blink_event_util_unittest.cc",
      "blink/fling_booster_unittest.cc",
      "blink/input_handler_proxy_unittest.cc",
      "blink/input_scroll_elasticity_controller_unittest.cc",
      "blink/prediction/input_predictor_unittest_helpers.cc",
      "blink/prediction/input_predictor_unittest_helpers.h",
      "blink/prediction/kalman_predictor_unittest.cc",
      "blink/prediction/least_squares_predictor_unittest.cc",
      "blink/scroll_predictor_unittest.cc",
      "blink/web_input_event_traits_unittest.cc",
      "blink/web_input_event_unittest.cc",
      "cocoa/events_mac_unittest.mm",
      "devices/mojo/device_struct_traits_unittest.cc",
      "devices/mojo/touch_device_transform_struct_traits_unittest.cc",
      "event_dispatcher_unittest.cc",
      "event_processor_unittest.cc",
      "event_rewriter_unittest.cc",
      "event_target_unittest.cc",
      "event_unittest.cc",
      "fraction_of_time_without_user_input_recorder_unittest.cc",
      "gesture_detection/bitset_32_unittest.cc",
      "gesture_detection/filtered_gesture_provider_unittest.cc",
      "gesture_detection/gesture_event_data_packet_unittest.cc",
      "gesture_detection/gesture_provider_unittest.cc",
      "gesture_detection/motion_event_buffer_unittest.cc",
      "gesture_detection/motion_event_generic_unittest.cc",
      "gesture_detection/snap_scroll_controller_unittest.cc",
      "gesture_detection/touch_disposition_gesture_filter_unittest.cc",
      "gesture_detection/velocity_tracker_unittest.cc",
      "gestures/blink/web_gesture_curve_impl_unittest.cc",
      "gestures/fling_curve_unittest.cc",
      "keycodes/dom/dom_keyboard_layout_map_unittest.cc",
      "keycodes/dom/keycode_converter_unittest.cc",
      "keycodes/keyboard_code_conversion_unittest.cc",
      "keycodes/platform_key_map_win_unittest.cc",
      "mobile_scroller_unittest.cc",
      "mojo/struct_traits_unittest.cc",
      "platform/platform_event_source_unittest.cc",
      "scoped_target_handler_unittest.cc",
      "win/event_utils_win_unittest.cc",
      "win/media_keyboard_hook_win_unittest.cc",
      "win/modifier_keyboard_hook_win_unittest.cc",
    ]

    deps = [
      ":dom_keyboard_layout",
      ":dom_keycode_converter",
      ":events",
      ":events_base",
      ":gesture_detection",
      ":test_support",
      "//base",
      "//base/test:test_support",
      "//cc",
      "//ipc:test_support",
      "//mojo/core/test:run_all_unittests",
      "//mojo/public/cpp/bindings",
      "//mojo/public/cpp/test_support:test_utils",
      "//skia",
      "//testing/gmock",
      "//testing/gtest",
      "//third_party/blink/public:blink_headers",
      "//ui/base:test_support",
      "//ui/display",
      "//ui/events/blink",
      "//ui/events/devices",
      "//ui/events/devices/mojo:test_interfaces",
      "//ui/events/gestures/blink",
      "//ui/events/mojo:interfaces",
      "//ui/events/platform",
      "//ui/gfx/geometry/mojo:struct_traits",
      "//ui/gfx/ipc/geometry",
    ]

    if (is_android) {
      sources += [ "android/motion_event_android_unittest.cc" ]
    } else {
      data_deps = [
        "//third_party/mesa_headers",
      ]
    }

    if (use_x11) {
      sources += [
        "devices/x11/device_data_manager_x11_unittest.cc",
        "x/events_x_unittest.cc",
      ]
      configs += [ "//build/config/linux:x11" ]
      deps += [
        "//ui/events/devices/x11",
        "//ui/events/x",
        "//ui/gfx/x",
      ]
    }

    if (use_x11 || use_ozone) {
      sources += [ "devices/device_data_manager_unittest.cc" ]
    }

    if (use_ozone && (is_linux || is_chromeos)) {
      sources += [
        "ozone/chromeos/cursor_controller_unittest.cc",
        "ozone/evdev/event_converter_evdev_impl_unittest.cc",
        "ozone/evdev/event_converter_test_util.cc",
        "ozone/evdev/event_converter_test_util.h",
        "ozone/evdev/event_device_info_unittest.cc",
        "ozone/evdev/event_device_test_util.cc",
        "ozone/evdev/event_device_test_util.h",
        "ozone/evdev/gamepad_event_converter_evdev_unittest.cc",
        "ozone/evdev/input_injector_evdev_unittest.cc",
        "ozone/evdev/tablet_event_converter_evdev_unittest.cc",
        "ozone/evdev/touch_event_converter_evdev_unittest.cc",
        "ozone/evdev/touch_filter/false_touch_finder_unittest.cc",
        "ozone/gamepad/generic_gamepad_mapping_unittest.cc",
      ]

      if (use_xkbcommon) {
        sources += [
          "ozone/layout/keyboard_layout_engine_unittest.cc",
          "ozone/layout/xkb/xkb_keyboard_layout_engine_unittest.cc",
        ]
      }

      deps += [
        "//ui/events/ozone:events_ozone",
        "//ui/events/ozone:events_ozone_evdev",
        "//ui/events/ozone:events_ozone_layout",
      ]
    }

    if (use_aura) {
      sources += [
        "gestures/gesture_provider_aura_unittest.cc",
        "gestures/gesture_recognizer_impl_unittest.cc",
        "gestures/motion_event_aura_unittest.cc",
      ]
    }

    if (is_win) {
      sources += [ "blink/web_input_event_builders_win_unittest.cc" ]
    }

    if (is_chromecast && !is_android) {
      sources += [ "chromecast/scroller_unittest.cc" ]
    }

    if (is_fuchsia) {
      sources += [ "fuchsia/input_event_dispatcher_unittest.cc" ]
      deps += [ "//third_party/fuchsia-sdk/sdk:ui_input" ]
    }
  }
}

if (is_android) {
  generate_jar_jni("motionevent_jni_headers") {
    jni_package = "ui"
    classes = [ "android/view/MotionEvent.class" ]
  }

  generate_jar_jni("keyevent_jni_headers") {
    jni_package = "ui"
    classes = [ "android/view/KeyEvent.class" ]
  }
}

# This target is added as a dependency of browser interactive_ui_tests. It must
# be source_set, otherwise the linker will drop the tests as dead code.
source_set("events_interactive_ui_tests") {
  testonly = true
  if (is_win) {
    sources = [
      "win/media_keyboard_hook_win_interactive_test.cc",
    ]

    deps = [
      ":events",
      ":test_support",
      "//base/test:test_support",
      "//testing/gtest",
    ]
  }
}
