# 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.

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

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

  defines = [ "CC_BLINK_IMPLEMENTATION" ]

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

# GYP version: //cc/blink/cc_blink_tests.gyp:cc_blink_unittests
# TODO(GYP): make linking work on the mac.
if (!is_mac) {
  test("cc_blink_unittests") {
    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",
    ]

    sources = [
      "web_animation_unittest.cc",
      "web_float_animation_curve_unittest.cc",
      "web_layer_impl_fixed_bounds_unittest.cc",
    ]
  }
}
