chromium/ash/DEPS

include_rules = [
  "+device/bluetooth",
  "+cc/debug",
  "+cc/output",
  "+cc/paint",
  "+components/access_code_cast",
  "+components/account_id",
  "+components/app_constants",
  "+components/app_restore",
  "+components/desks_storage",
  "+components/discardable_memory/public",
  "+components/discardable_memory/service/discardable_shared_memory_manager.h",
  "+components/fullscreen_control",
  "+components/global_media_controls",
  "+components/language/core/browser/pref_names.h",
  "+components/language/core/common/locale_util.h",
  "+components/live_caption",
  "+components/media_message_center",
  "+components/metrics/structured/structured_events.h",
  "+components/metrics/structured/structured_metrics_client.h",
  "+components/metrics/structured/test/test_structured_metrics_recorder.h",
  "+components/pref_registry",
  "+components/prefs",
  "+components/quirks",
  "+components/services/app_service/public",
  "+components/soda",
  "+components/strings",
  "+components/sync",
  "+components/sync_preferences/testing_pref_service_syncable.h",
  "+components/ui_devtools",
  "+components/ukm",
  "+components/url_formatter",
  "+components/url_matcher",
  "+components/user_education/common",
  "+components/user_education/views",
  "+components/vector_icons",
  "+components/version_info",
  "+components/viz/common",
  "+components/viz/host",
  "+components/wallpaper",
  "+crypto",
  "+dbus",
  "+extensions/common/constants.h",
  "+gpu/config",
  "+media",
  "+mojo/public",
  "+services/device/public",
  "+services/data_decoder/public",
  "+services/media_session/public",
  "+services/metrics/public/cpp",
  "+services/video_capture/public/mojom",
  "+services/network/public",
  "+services/network/test",
  "+services/preferences/public",
  "+services/viz/public",
  "+skia/ext",
  "+third_party/cros_system_api",
  "+third_party/icu",
  "+third_party/khronos/GLES2",
  "+third_party/re2",
  "+third_party/rust/fend_core/v1/wrapper/fend_core.h",
  "+third_party/skia",
  "+net",
  "+ui",
  "-ash/host",

  # Ash sits above content. Exceptions live in //ash/webui.
  "-content",

  # Some code in //chromeos should not be used by ash, so use an allowlist.
  # See //chromeos/README.md for details about Lacros, which is migrating some
  # code out of //chromeos into //ash.
  "-chromeos",
  # //ash can use chromeos components that sit below it in the dependency tree.
  "+chromeos/ash/components/audio",
  "+chromeos/ash/components/growth",
  "+chromeos/ash/components/auth_panel",
  "+chromeos/ash/components/cryptohome",
  "+chromeos/ash/components/emoji",
  "+chromeos/ash/components/feature_usage",
  "+chromeos/ash/components/human_presence",
  "+chromeos/ash/components/local_search_service",
  "+chromeos/ash/components/login/auth",
  "+chromeos/ash/components/mojo_service_manager",
  "+chromeos/ash/components/multidevice",
  "+chromeos/ash/components/osauth",
  "+chromeos/ash/components/peripheral_notification",
  "+chromeos/ash/components/phonehub",
  "+chromeos/ash/components/proximity_auth",
  "+chromeos/ash/components/string_matching",
  "+chromeos/ash/components/system",
  "+chromeos/components/editor_menu",
  "+chromeos/components/magic_boost",
  "+chromeos/components/mahi",
  "+chromeos/components/quick_answers",
  "+chromeos/components/security_token_pin",
  "+chromeos/components/sensors",
  "+chromeos/components/webauthn",
  "+chromeos/constants",
  # crosapi is an API to support lacros.
  "+chromeos/crosapi",
  # //ash can access all D-Bus client libraries. The mustash project previously
  # limit D-Bus communication to a subset of OS daemons, but that project
  # stopped in 2019. See //ash/README.md.
  "+chromeos/ash/components/dbus",
  "+chromeos/dbus",
  # //ash should use code in //ash/session to get login state. The state in
  # //ash/session and the state in //chromeos/ash/components/login/login_state
  # are both derived from the canonical state in the browser. Using both sources
  # could create subtle inconsistencies based on when observers are called.
  "-chromeos/ash/compoments/login/login_state",
  "+chromeos/ash/components/network",
  # //ash can use resources from the internal ash resources repo.
  "+chromeos/ash/resources/internal",
  # //ash can use the public interfaces of various services.
  "+chromeos/ash/services/assistant/public/cpp" ,
  "+chromeos/ash/services/assistant/test_support",
  "+chromeos/ash/services/bluetooth_config",
  "+chromeos/ash/services/hotspot_config",
  "+chromeos/ash/services/federated/public",
  "+chromeos/ash/services/libassistant/public",
  "+chromeos/ash/services/nearby/public",
  "+chromeos/ash/services/multidevice_setup/public",
  "+chromeos/ash/services/secure_channel/public",
  "+chromeos/ash/services/network_config/public",
  "+chromeos/services/machine_learning/public",
  "+chromeos/services/network_config/public",
  "+chromeos/services/power/public",
  "+chromeos/strings",
  "+chromeos/ui",
  "+chromeos/utils",

  # ui/base/idle depends on SessionManagerClient so disallow it.
  "-ui/base/idle",

  # user_manager::UserManager and session_manager::SessionManager lives in the
  # browser process. Use SessionController to access user or user session info
  # so that ash code depends on a single source of truth. If the info is not
  # available, add new interface to SessionControllerClient and friends to
  # bridge data from user_manager::UserManager or
  # session_manager::SessionManager.
  "-components/session_manager",
  "+components/session_manager/session_manager_types.h",
  "-components/user_manager",
  "+components/user_manager/known_user.h",
  "+components/user_manager/multi_user/multi_user_sign_in_policy.h",
  "+components/user_manager/user_directory_integrity_manager.h",
  "+components/user_manager/user_names.h",
  "+components/user_manager/user_type.h",
  "+components/user_manager/user.h",
]

specific_include_rules = {
  "keyboard_capability_unittest\.cc": [
    "+device/udev_linux/fake_udev_loader.h",
  ],
  "policy_recommendation_restorer_unittest.cc": [
    "+components/sync_preferences/testing_pref_service_syncable.h"
  ],
  "root_window_controller\.(cc|h)": [
    "+ash/host"
  ],
  "shell.cc": [
    "+ash/host/ash_window_tree_host_init_params.h",
    "+chromeos/ash/components/fwupd",
  ],
  "window_manager.cc": [
    "+ash/host/ash_window_tree_host.h"
  ],
  ".*test\.cc": [
    # Allowed to access user_manager in test code to set up testing environment
    # close to the production.
    "+components/user_manager",
  ]
}