type hal_camera_default, domain;
hal_server_domain(hal_camera_default, hal_camera)

type hal_camera_default_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(hal_camera_default)

# HIDL sensorservice
allow hal_camera_default fwk_sensor_hwservice:hwservice_manager find;
# AIDL sensorservice
allow hal_camera_default fwk_sensor_service:service_manager find;

get_prop(hal_camera_default, device_config_camera_native_prop);

# Allow reading graphics properties, specifically for EGL blobcache mode
get_prop(hal_camera_default, graphics_config_prop);
get_prop(hal_camera_default, graphics_config_writable_prop);

# For collecting bugreports.
allow hal_camera_default dumpstate:fd use;
allow hal_camera_default dumpstate:fifo_file write;

allow hal_camera_default gpu_device:chr_file rw_file_perms;
allow hal_camera_default gpu_device:dir r_dir_perms;
