type hal_face_default, domain;
hal_server_domain(hal_face_default, hal_face)

type hal_face_default_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(hal_face_default)

# android.frameworks.sensorservice through libsensorndkbridge
allow hal_face_default fwk_sensor_service:service_manager find;

# virtual_face_hal_prop is only for debuggable builds
userdebug_or_eng(`set_prop(hal_face_default, virtual_face_hal_prop)');
neverallow { domain -init -dumpstate userdebug_or_eng(`-hal_face_default') not_compatible_property(`-vendor_init') } virtual_face_hal_prop:file no_rw_file_perms;
neverallow { domain -init userdebug_or_eng(`-hal_face_default') not_compatible_property(`-vendor_init') } virtual_face_hal_prop:property_service set;


