hal_attribute(lazy_test);

# This is applied to apps on vendor images with SDK <=30 only,
# to exempt them from recent mls changes. It must not be applied
# to any domain on newer system or vendor image.
attribute mlsvendorcompat;

# Attributes for property types having both system_property_type
# and vendor_property_type. Such types are ill-formed because
# property owner attributes must be exclusive.
attribute system_and_vendor_property_type;
expandattribute system_and_vendor_property_type false;

# HALs
until_board_api(202504, `
    hal_attribute(mediaquality);
')

until_board_api(202504, `
attribute unconstrained_vsock_violators;
expandattribute unconstrained_vsock_violators false;
')

# All SDK sandbox domains
attribute sdk_sandbox_all;
# The SDK sandbox domains for the current SDK level.
attribute sdk_sandbox_current;
# Common to adbd and adbd_tradeinmode.
attribute adbd_common;

# Provides access to platform update services.
# WARNING: USING THE update_provider ATTRIBUTE WILL CAUSE CTS TO FAIL!
attribute update_provider;
expandattribute update_provider false;

until_board_api(202504, `
    attribute tee_service_type;
')

until_board_api(202504, `
    hal_attribute(vm_capabilities);
')

until_board_api(202504, `
    hal_attribute(hwcrypto);
')
