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

# TODO(fxb/58062): Delete after all packages are migrated away from dart_app
# and flutter_app.
group("deprecated_flutter_app_allowlist") {
  #  ________  _________  ________  ________
  # |\   ____\|\___   ___\\   __  \|\   __  \
  # \ \  \___|\|___ \  \_\ \  \|\  \ \  \|\  \
  #  \ \_____  \   \ \  \ \ \  \\\  \ \   ____\
  #   \|____|\  \   \ \  \ \ \  \\\  \ \  \___|
  #     ____\_\  \   \ \__\ \ \_______\ \__\
  #    |\_________\   \|__|  \|_______|\|__|
  #    \|_________|
  # This is an allowlist of packages that have not migrated to use flutter_component.
  # This is only intended to be used as a temporary allowlist. Do not add to this list.
  allowlist = [
    "//examples/dart/fuchsia_inspect_flutter/torus15:torus15-flutter",
    "//examples/dart/fuchsia_modular/multilevel_mod:multilevel-mod",
    "//examples/dart/fuchsia_modular/slider_mod:slider-mod",
    "//examples/dart/fuchsia_webview_flutter/webview_mod:webview-mod",
    "//examples/diagnostics/inspect/dart/inspect_mod:inspect-mod",
    "//sdk/dart/fuchsia_inspect/test/inspect_flutter_integration_tester:inspect-flutter-integration-tester",
    "//src/experiences/benchmarks/bin/button_flutter:button-flutter",
    "//src/experiences/benchmarks/bin/clockface_flutter:clockface-flutter",
    "//src/experiences/benchmarks/bin/gamma_flutter:gamma-flutter",
    "//src/experiences/benchmarks/bin/scroll_flutter:scroll-flutter",
    "//src/experiences/session_shells/ermine/shell:ermine",
    "//src/ui/tests/integration_flutter_tests/embedder/child-view:child-view",
    "//src/ui/tests/integration_flutter_tests/embedder/parent-view:parent-view",
    "//src/tests/intl/timestamp-server-dart:timestamp-server-flutter",
    "//vendor/google/factory/fctui:fctui",
  ]

  visibility = []
  foreach(target, allowlist) {
    visibility += [
      target,
      target + "_manifest_dist",
      target + "_manifest_dist_generate",
      target + "_component_manifests",
    ]
  }
}

# Copies the patched SDK files for the flutter runner
copy("platform_files") {
  sources = [
    "//prebuilt/third_party/flutter/$target_cpu/release/aot/flutter_runner_patched_sdk/platform_strong.dill",
    "//prebuilt/third_party/flutter/$target_cpu/release/aot/flutter_runner_patched_sdk/platform_strong.dill.d",
    "//prebuilt/third_party/flutter/$target_cpu/release/aot/flutter_runner_patched_sdk/vm_outline_strong.dill",
  ]
  outputs = [ "$root_out_dir/flutter_runner_patched_sdk/{{source_file_part}}" ]
}
