# 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("//testing/test.gni")

# GYP version: //cc/blink/cc_blink.gyp:cc_blink
component("blink") {
  output_name = "cc_blink"

  sources = [
    "context_provider_web_context.h",
    "cc_blink_export.h",
    "scrollbar_impl.cc",
    "scrollbar_impl.h",
    "web_animation_curve_common.cc",
    "web_animation_curve_common.h",
    "web_animation_impl.cc",
    "web_animation_impl.h",
    "web_compositor_support_impl.cc",
    "web_compositor_support_impl.h",
    "web_content_layer_impl.cc",
    "web_content_layer_impl.h",
    "web_display_item_list_impl.cc",
    "web_display_item_list_impl.h",
    "web_external_bitmap_impl.cc",
    "web_external_bitmap_impl.h",
    "web_external_texture_layer_impl.cc",
    "web_external_texture_layer_impl.h",
    "web_filter_animation_curve_impl.cc",
    "web_filter_animation_curve_impl.h",
    "web_filter_operations_impl.cc",
    "web_filter_operations_impl.h",
    "web_float_animation_curve_impl.cc",
    "web_float_animation_curve_impl.h",
    "web_image_layer_impl.cc",
    "web_image_layer_impl.h",
    "web_layer_impl.cc",
    "web_layer_impl.h",
    "web_layer_impl_fixed_bounds.cc",
    "web_layer_impl_fixed_bounds.h",
    "web_nine_patch_layer_impl.cc",
    "web_nine_patch_layer_impl.h",
    "web_scroll_offset_animation_curve_impl.cc",
    "web_scroll_offset_animation_curve_impl.h",
    "web_scrollbar_layer_impl.cc",
    "web_scrollbar_layer_impl.h",
    "web_to_cc_animation_delegate_adapter.cc",
    "web_to_cc_animation_delegate_adapter.h",
    "web_transform_animation_curve_impl.cc",
    "web_transform_animation_curve_impl.h",
    "web_transform_operations_impl.cc",
    "web_transform_operations_impl.h",
  ]

  defines = [ "CC_BLINK_IMPLEMENTATION" ]

  public_deps = [
    "//skia",
  ]

  deps = [
    "//base",
    "//base/third_party/dynamic_annotations",
    "//cc",
    "//gpu",
    "//third_party/WebKit/public:blink",
    "//ui/gfx",
    "//ui/gfx/geometry",
  ]
}

# GYP version: //cc/blink/cc_blink_tests.gyp:cc_blink_unittests
# TODO(GYP): make linking work on the mac.
if (!is_mac && (!is_win || link_chrome_on_windows)) {
  test("cc_blink_unittests") {
    sources = [
      "web_animation_unittest.cc",
      "web_float_animation_curve_unittest.cc",
      "web_layer_impl_fixed_bounds_unittest.cc",
    ]

    deps = [
      ":blink",
      "//base/test:run_all_unittests",
      "//base/third_party/dynamic_annotations",
      "//skia",
      "//testing/gtest",
      "//ui/gfx/geometry",
      "//ui/gfx:test_support",
      "//cc",
      "//cc:test_support",
    ]
  }
}
