# Copyright 2013 The Flutter Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

if (is_fuchsia) {
  import("//build/fuchsia/sdk.gni")
}

import("$flutter_root/testing/testing.gni")

source_set("flow") {
  sources = [
    "compositor_context.cc",
    "compositor_context.h",
    "debug_print.cc",
    "debug_print.h",
    "embedded_views.cc",
    "embedded_views.h",
    "instrumentation.cc",
    "instrumentation.h",
    "layers/backdrop_filter_layer.cc",
    "layers/backdrop_filter_layer.h",
    "layers/clip_path_layer.cc",
    "layers/clip_path_layer.h",
    "layers/clip_rect_layer.cc",
    "layers/clip_rect_layer.h",
    "layers/clip_rrect_layer.cc",
    "layers/clip_rrect_layer.h",
    "layers/color_filter_layer.cc",
    "layers/color_filter_layer.h",
    "layers/container_layer.cc",
    "layers/container_layer.h",
    "layers/filter_layer.cc",
    "layers/filter_layer.h",
    "layers/layer.cc",
    "layers/layer.h",
    "layers/layer_tree.cc",
    "layers/layer_tree.h",
    "layers/mask_layer.cc",
    "layers/mask_layer.h",
    "layers/opacity_layer.cc",
    "layers/opacity_layer.h",
    "layers/performance_overlay_layer.cc",
    "layers/performance_overlay_layer.h",
    "layers/physical_shape_layer.cc",
    "layers/physical_shape_layer.h",
    "layers/picture_layer.cc",
    "layers/picture_layer.h",
    "layers/platform_view_layer.cc",
    "layers/platform_view_layer.h",
    "layers/shader_mask_layer.cc",
    "layers/shader_mask_layer.h",
    "layers/texture_layer.cc",
    "layers/texture_layer.h",
    "layers/transform_layer.cc",
    "layers/transform_layer.h",
    "matrix_decomposition.cc",
    "matrix_decomposition.h",
    "paint_utils.cc",
    "paint_utils.h",
    "raster_cache.cc",
    "raster_cache.h",
    "raster_cache_key.cc",
    "raster_cache_key.h",
    "skia_gpu_object.cc",
    "skia_gpu_object.h",
    "texture.cc",
    "texture.h",
  ]
  
  public_configs = [ "$flutter_root:config" ]

  public_deps = []

  deps = [
    "$flutter_root/common",
    "$flutter_root/fml",
    "$flutter_root/third_party/skia",
  ]

  if (is_fuchsia) {
    sources += [
      "layers/child_scene_layer.cc",
      "layers/child_scene_layer.h",
      "scene_update_context.cc",
      "scene_update_context.h",
      "view_holder.cc",
      "view_holder.h",
    ]

    if (using_fuchsia_sdk) {
      public_deps += [
        "$fuchsia_sdk_root/fidl:fuchsia.ui.gfx",
        "$fuchsia_sdk_root/pkg:scenic_cpp",
      ]
    } else {
      public_deps += [
        "//garnet/public/lib/ui/scenic/cpp",
        "//sdk/fidl/fuchsia.ui.scenic",
        "//topaz/public/dart-pkg/zircon",
        "//zircon/public/lib/zx",
      ]
    }
  }
}

test_fixtures("flow_fixtures") {
  fixtures = []
}

executable("flow_unittests") {
  testonly = true

  sources = [
    "flow_run_all_unittests.cc",
    "flow_test_utils.cc",
    "flow_test_utils.h",
    "layers/performance_overlay_layer_unittests.cc",
    "layers/physical_shape_layer_unittests.cc",
    "matrix_decomposition_unittests.cc",
    "mutators_stack_unittests.cc",
    "raster_cache_unittests.cc",
  ]

  deps = [
    ":flow",
    ":flow_fixtures",
    "$flutter_root/fml",
    "$flutter_root/third_party/skia",
    "//third_party/dart/runtime:libdart_jit",  # for tracing
    "//third_party/googletest:gtest",
  ]
}