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

group("deprecated_global_persistent_storage_whitelist") {
  #  ________  _________  ________  ________
  # |\   ____\|\___   ___\\   __  \|\   __  \
  # \ \  \___|\|___ \  \_\ \  \|\  \ \  \|\  \
  #  \ \_____  \   \ \  \ \ \  \\\  \ \   ____\
  #   \|____|\  \   \ \  \ \ \  \\\  \ \  \___|
  #     ____\_\  \   \ \__\ \ \_______\ \__\
  #    |\_________\   \|__|  \|_______|\|__|
  #    \|_________|
  # This is a whitelist of packages that have components manifests that include
  # the "deprecated-global-persistent-storage" feature. Do not add to this
  # list. Use "isolated-persistent-storage" instead.
  visibility = [
    # These first two entries do not need migration and will be updated when
    # deleting the 'deprecated-global-persistent-storage' feature.
    "//garnet/bin/appmgr/integration_tests/sandbox/features/persistent-storage:has_persistent_storage",
    "//garnet/bin/appmgr/integration_tests/util:persistent_storage_test_util",

    "//garnet/bin/auth:account_handler",
    "//garnet/bin/auth:account_manager",
    "//garnet/bin/auth:token_manager_factory",
    "//garnet/bin/device_settings:device_settings_manager",
    "//garnet/bin/guest/pkg/biscotti_guest/bin:biscotti",
    "//garnet/bin/insntrace:insntrace",
    "//garnet/bin/media:audio_core",
    "//garnet/bin/media/camera_manager:camera_manager_cpp",
    "//garnet/bin/netcfg:netcfg",
    "//garnet/bin/timezone:timezone",
    "//garnet/bin/trace:trace",
    "//garnet/bin/wlan/wlancfg:wlancfg",
    "//garnet/go/src/amber:amber",
    "//peridot/bin/basemgr:basemgr",
    "//peridot/bin/voila:voila",
    "//topaz/app/dashboard:dashboard",
  ]
}
