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

jumbo_source_set("blink") {
  sources = [
    "blink_event_util.cc",
    "blink_event_util.h",
    "blink_features.cc",
    "blink_features.h",
    "compositor_thread_event_queue.cc",
    "compositor_thread_event_queue.h",
    "did_overscroll_params.cc",
    "did_overscroll_params.h",
    "event_with_callback.cc",
    "event_with_callback.h",
    "fling_booster.cc",
    "fling_booster.h",
    "input_handler_proxy.cc",
    "input_handler_proxy.h",
    "input_handler_proxy_client.h",
    "input_scroll_elasticity_controller.cc",
    "input_scroll_elasticity_controller.h",
    "prediction/empty_predictor.cc",
    "prediction/empty_predictor.h",
    "prediction/input_predictor.h",
    "prediction/kalman_filter.cc",
    "prediction/kalman_filter.h",
    "prediction/kalman_predictor.cc",
    "prediction/kalman_predictor.h",
    "prediction/least_squares_predictor.cc",
    "prediction/least_squares_predictor.h",
    "scroll_predictor.cc",
    "scroll_predictor.h",
    "synchronous_input_handler_proxy.h",
    "web_input_event.cc",
    "web_input_event.h",
    "web_input_event_traits.cc",
    "web_input_event_traits.h",
  ]

  deps = [
    "//cc:cc",
    "//third_party/blink/public:blink_headers",
    "//ui/events",
    "//ui/events:dom_keycode_converter",
    "//ui/events:events_base",
    "//ui/events:gesture_detection",
    "//ui/gfx",
    "//ui/gfx/geometry",
    "//ui/latency",
  ]

  if (is_win) {
    sources += [
      "web_input_event_builders_win.cc",
      "web_input_event_builders_win.h",
    ]
    deps += [ "//ui/display" ]
  }
}
