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

import("//flutter/common/config.gni")
import("//flutter/impeller/tools/impeller.gni")
import("//flutter/shell/gpu/gpu.gni")
import("//flutter/testing/testing.gni")

if (is_fuchsia) {
  import("//flutter/tools/fuchsia/gn-sdk/src/gn_configs.gni")
}

# Template to generate a dart embedder resource.cc file.
# Required invoker inputs:
#   String output (name of output file)
#   List inputs (list of input files to be included)
#   String table_name (name of symbol for resource table)
#   String root_prefix (base directory of resources)
# Optional invoker inputs:
#   String input_directory (directory of resources that are recursively added)
#   List deps
#   List datadeps
template("dart_embedder_resources") {
  action(target_name) {
    script = "$dart_src/runtime/tools/create_resources.py"
    deps = []
    if (defined(invoker.deps)) {
      deps += invoker.deps
    }
    datadeps = []
    if (defined(invoker.datadeps)) {
      datadeps = invoker.datadeps
    }

    output = invoker.output
    outputs = [ output ]

    inputs = [ script ] + invoker.inputs

    root_prefix = rebase_path(invoker.root_prefix)

    args = [
      "--output",
      rebase_path(output),
      "--outer_namespace",
      "flutter",
      "--inner_namespace",
      "runtime",
      "--table_name",
      invoker.table_name,
      "--root_prefix",
      root_prefix,
    ]
    if (defined(invoker.input_directory)) {
      args += [
        "--client_root",
        rebase_path(invoker.input_directory),
      ]
    }
    args += rebase_path(invoker.inputs)
  }
}

source_set("platform_message_handler") {
  sources = [ "platform_message_handler.h" ]
  public_configs = [ "//flutter:config" ]
  deps = [ "//flutter/fml:fml" ]
}

source_set("display") {
  sources = [
    "display.cc",
    "display.h",
    "variable_refresh_rate_display.cc",
    "variable_refresh_rate_display.h",
    "variable_refresh_rate_reporter.h",
  ]
  public_configs = [ "//flutter:config" ]
  deps = [ "//flutter/fml:fml" ]
}

source_set("common") {
  sources = [
    "animator.cc",
    "animator.h",
    "context_options.cc",
    "context_options.h",
    "display_manager.cc",
    "display_manager.h",
    "dl_op_spy.cc",
    "dl_op_spy.h",
    "engine.cc",
    "engine.h",
    "pipeline.cc",
    "pipeline.h",
    "platform_view.cc",
    "platform_view.h",
    "pointer_data_dispatcher.cc",
    "pointer_data_dispatcher.h",
    "rasterizer.cc",
    "rasterizer.h",
    "resource_cache_limit_calculator.cc",
    "resource_cache_limit_calculator.h",
    "run_configuration.cc",
    "run_configuration.h",
    "serialization_callbacks.cc",
    "serialization_callbacks.h",
    "shell.cc",
    "shell.h",
    "shell_io_manager.cc",
    "shell_io_manager.h",
    "skia_event_tracer_impl.cc",
    "skia_event_tracer_impl.h",
    "snapshot_controller.cc",
    "snapshot_controller.h",
    "snapshot_controller_skia.cc",
    "snapshot_controller_skia.h",
    "snapshot_surface_producer.h",
    "switches.cc",
    "switches.h",
    "thread_host.cc",
    "thread_host.h",
    "vsync_waiter.cc",
    "vsync_waiter.h",
    "vsync_waiter_fallback.cc",
    "vsync_waiter_fallback.h",
  ]

  public_configs = [ "//flutter:config" ]

  public_deps = [
    ":display",
    ":platform_message_handler",
    "//flutter/shell/version",
    "//flutter/third_party/rapidjson",
    "//flutter/third_party/tonic",
    "//flutter/third_party/txt",
  ]

  deps = [
    "$dart_src/runtime:dart_api",
    "//flutter/assets",
    "//flutter/common",
    "//flutter/common/graphics",
    "//flutter/flow",
    "//flutter/fml",
    "//flutter/lib/ui",
    "//flutter/runtime",
    "//flutter/shell/common:base64",
    "//flutter/shell/profiling",
    "//flutter/skia",
  ]

  if (impeller_supports_rendering) {
    sources += [
      "snapshot_controller_impeller.cc",
      "snapshot_controller_impeller.h",
    ]

    deps += [ "//flutter/impeller" ]
  }
}

# These are in their own source_set to avoid a dependency cycle with //common/graphics
source_set("base64") {
  sources = [
    "base64.cc",
    "base64.h",
  ]
  deps = [ "//flutter/fml" ]
}

template("shell_host_executable") {
  executable(target_name) {
    testonly = true

    deps = []

    ldflags = []

    forward_variables_from(invoker, "*")

    deps += [
      ":common",
      "//flutter/lib/snapshot",
      "//flutter/runtime:libdart",
    ]

    public_configs = [ "//flutter:export_dynamic_symbols" ]
  }
}

if (enable_unittests) {
  shell_gpu_configuration("shell_unittests_gpu_configuration") {
    enable_software = test_enable_software
    enable_vulkan = test_enable_vulkan
    enable_gl = test_enable_gl
    enable_metal = test_enable_metal
  }

  test_fixtures("shell_unittests_fixtures") {
    dart_main = "fixtures/shell_test.dart"

    fixtures = [
      "fixtures/shelltest_screenshot.png",
      "fixtures/hello_loop_2.gif",
      "//flutter/third_party/txt/third_party/fonts/Roboto-Regular.ttf",
    ]
  }

  shell_host_executable("shell_benchmarks") {
    sources = [
      "dart_native_benchmarks.cc",
      "shell_benchmarks.cc",
    ]

    deps = [
      ":shell_unittests_fixtures",
      "//flutter/benchmarking",
      "//flutter/flow",
      "//flutter/testing:dart",
      "//flutter/testing:fixture_test",
      "//flutter/testing:testing_lib",
    ]
  }

  config("shell_test_fixture_sources_config") {
    defines = [
      # Required for MSVC STL
      "_ENABLE_ATOMIC_ALIGNMENT_FIX",
    ]
  }

  source_set("shell_test_fixture_sources") {
    testonly = true

    sources = [
      "shell_test.cc",
      "shell_test.h",
      "shell_test_external_view_embedder.cc",
      "shell_test_external_view_embedder.h",
      "shell_test_platform_view.cc",
      "shell_test_platform_view.h",
      "vsync_waiters_test.cc",
      "vsync_waiters_test.h",
    ]

    public_deps = [
      "//flutter/common/graphics",
      "//flutter/flow",
      "//flutter/runtime",
      "//flutter/shell/common",
      "//flutter/testing",
    ]

    deps = [
      ":shell_unittests_gpu_configuration",
      "//flutter/assets",
      "//flutter/common",
      "//flutter/lib/ui",
      "//flutter/skia",
      "//flutter/testing:dart",
      "//flutter/testing:fixture_test",
      "//flutter/third_party/rapidjson",
    ]

    if (impeller_supports_rendering) {
      deps += [ "//flutter/impeller" ]
    }

    public_configs = [
      ":shell_test_fixture_sources_config",
      ":shell_unittests_gpu_configuration_config",
    ]

    if (test_enable_gl) {
      sources += [
        "shell_test_platform_view_gl.cc",
        "shell_test_platform_view_gl.h",
      ]

      public_deps += [ "//flutter/testing:opengl" ]
    }

    if (test_enable_vulkan) {
      sources += [
        "shell_test_platform_view_vulkan.cc",
        "shell_test_platform_view_vulkan.h",
      ]

      public_deps += [
        "//flutter/flutter_vma:flutter_skia_vma",
        "//flutter/vulkan",
      ]
    }

    if (test_enable_metal) {
      sources += [
        "shell_test_platform_view_metal.h",
        "shell_test_platform_view_metal.mm",
      ]

      public_deps += [ "//flutter/shell/platform/darwin/graphics" ]
    }
  }

  shell_host_executable("shell_unittests") {
    testonly = true

    sources = [
      "animator_unittests.cc",
      "base64_unittests.cc",
      "context_options_unittests.cc",
      "dl_op_spy_unittests.cc",
      "engine_animator_unittests.cc",
      "engine_unittests.cc",
      "input_events_unittests.cc",
      "persistent_cache_unittests.cc",
      "pipeline_unittests.cc",
      "rasterizer_unittests.cc",
      "resource_cache_limit_calculator_unittests.cc",
      "shell_unittests.cc",
      "switches_unittests.cc",
      "variable_refresh_rate_display_unittests.cc",
      "vsync_waiter_unittests.cc",
    ]

    deps = [
      ":shell_test_fixture_sources",
      ":shell_unittests_fixtures",
      "//flutter/assets",
      "//flutter/common/graphics",
      "//flutter/display_list/testing:display_list_testing",
      "//flutter/shell/common:base64",
      "//flutter/shell/profiling:profiling_unittests",
      "//flutter/shell/version",
      "//flutter/testing:fixture_test",
      "//flutter/third_party/googletest:gmock",
    ]

    if (is_fuchsia) {
      sources += [ "shell_fuchsia_unittests.cc" ]

      deps += [
        "${fuchsia_sdk}/fidl/fuchsia.intl",
        "${fuchsia_sdk}/fidl/fuchsia.settings",
        "${fuchsia_sdk}/pkg/fidl_cpp",
        "${fuchsia_sdk}/pkg/sys_cpp",
      ]
    } else if (shell_enable_gl) {
      # TODO(63837): This test is hard-coded to use a TestGLSurface so it cannot
      # run on fuchsia or when GL is not enabled.
      sources += [ "shell_io_manager_unittests.cc" ]
      deps += [ "//flutter/third_party/swiftshader" ]
    }

    if (shell_enable_gl) {
      deps += [
        "//flutter/third_party/angle:libEGL_static",
        "//flutter/third_party/angle:libGLESv2_static",
        "//flutter/third_party/swiftshader",
      ]
    }
  }
}
