# 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
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",
  ]
}
