# 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/ui.gni")

component("compositor") {
  sources = [
    "closure_animation_observer.cc",
    "closure_animation_observer.h",
    "compositor.cc",
    "compositor.h",
    "compositor_animation_observer.h",
    "compositor_export.h",
    "compositor_observer.cc",
    "compositor_observer.h",
    "compositor_vsync_manager.cc",
    "compositor_vsync_manager.h",
    "compositor_switches.cc",
    "compositor_switches.h",
    "debug_utils.cc",
    "debug_utils.h",
    "dip_util.cc",
    "dip_util.h",
    "float_animation_curve_adapter.cc",
    "float_animation_curve_adapter.h",
    "layer.cc",
    "layer.h",
    "layer_animation_delegate.h",
    "layer_animation_element.cc",
    "layer_animation_element.h",
    "layer_animation_observer.cc",
    "layer_animation_observer.h",
    "layer_animation_sequence.cc",
    "layer_animation_sequence.h",
    "layer_animator.cc",
    "layer_animator.h",
    "layer_animator_collection.cc",
    "layer_animator_collection.h",
    "layer_delegate.h",
    "layer_owner.cc",
    "layer_owner.h",
    "layer_tree_owner.cc",
    "layer_tree_owner.h",
    "layer_type.h",
    "reflector.h",
    "scoped_animation_duration_scale_mode.cc",
    "scoped_animation_duration_scale_mode.h",
    "scoped_layer_animation_settings.cc",
    "scoped_layer_animation_settings.h",
    "transform_animation_curve_adapter.cc",
    "transform_animation_curve_adapter.h",
  ]

  defines = [ "COMPOSITOR_IMPLEMENTATION" ]

  deps = [
    "//base",
    "//base/third_party/dynamic_annotations",
    "//cc",
    "//cc/surfaces",
    "//gpu/command_buffer/common",
    "//skia",
    "//ui/gfx",
    "//ui/gfx/geometry",
    "//ui/gl",
  ]

  if (is_win && use_aura) {
    # TODO(sky): before we make this real need to remove
    # IDR_BITMAP_BRUSH_IMAGE.
    deps += [
      "//ui/resources",
      "//third_party/angle:libEGL",
      "//third_party/angle:libGLESv2",
    ]
  }
}

source_set("test_support") {
  testonly = true
  sources = [
    "test/context_factories_for_test.cc",
    "test/context_factories_for_test.h",
    "test/draw_waiter_for_test.cc",
    "test/draw_waiter_for_test.h",
    "test/in_process_context_factory.cc",
    "test/in_process_context_factory.h",
    "test/layer_animator_test_controller.cc",
    "test/layer_animator_test_controller.h",
    "test/test_compositor_host.h",
    "test/test_compositor_host_mac.mm",
    "test/test_compositor_host_win.cc",
    "test/test_layer_animation_delegate.cc",
    "test/test_layer_animation_delegate.h",
    "test/test_layer_animation_observer.cc",
    "test/test_layer_animation_observer.h",
    "test/test_layers.cc",
    "test/test_layers.h",
    "test/test_suite.cc",
    "test/test_suite.h",
    "test/test_utils.cc",
    "test/test_utils.h",
  ]

  public_deps = [
    ":compositor",
  ]
  deps = [
    "//base/test:test_support",
    "//cc",
    "//cc:test_support",
    "//skia",
    "//testing/gtest",
    "//third_party/WebKit/public:blink_minimal",
    "//ui/base",
    "//ui/gfx",
    "//ui/gfx/geometry",
    "//ui/gl",
    "//webkit/common/gpu",
  ]

  if (use_x11) {
    configs += [ "//build/config/linux:x11" ]
    deps += [ "//ui/gfx/x" ]
  }

  if (use_ozone) {
    sources += [ "test/test_compositor_host_ozone.cc" ]
  } else if (use_x11) {
    sources += [ "test/test_compositor_host_x11.cc" ]
  }
}

# TODO(GYP) enable this when all dependencies are complete and it links.
#test("compositor_unittests") {
#  sources = [
#    "layer_animation_element_unittest.cc",
#    "layer_animation_sequence_unittest.cc",
#    "layer_animator_unittest.cc",
#    "layer_owner_unittest.cc",
#    "layer_unittest.cc",
#    "run_all_unittests.cc",
#    "transform_animation_curve_adapter_unittest.cc",
#  ]
#
#  deps = [
#    ":compositor",
#    ":test_support",
#    "//base",
#    "//base/allocator",
#    "//base/test:test_support",
#    "//cc",
#    "//cc:test_support",
#    "//skia",
#    "//testing/gtest",
#    "//ui/base",
#    "//ui/gfx",
#    "//ui/gfx/geometry",
#    "//ui/gl",
#    "//ui/resources",
#  ]
#
#  if (is_linux) {
#    deps += [ "//third_party/mesa:osmesa" ]
#  }
#}