# SSRestartDetector app
type ssr_detector_app, domain;

app_domain(ssr_detector_app)

userdebug_or_eng(`
  allow ssr_detector_app ramdump_vendor_data_file:dir r_dir_perms;
  allow ssr_detector_app ramdump_vendor_data_file:file r_file_perms;
  get_prop(ssr_detector_app, vendor_ssr_prop)
')
get_prop(ssr_detector_app, vendor_wifi_version)

allow ssr_detector_app app_api_service:service_manager find;
allow ssr_detector_app radio_service:service_manager find;

# ssr_detector app's data type is system_app_data_file.
allow ssr_detector_app system_app_data_file:dir create_dir_perms;
allow ssr_detector_app system_app_data_file:{ file lnk_file } create_file_perms;

allow ssr_detector_app sysfs:lnk_file r_file_perms;

r_dir_file(ssr_detector_app, sysfs_msm_subsys)

allow ssr_detector_app cgroup:file w_file_perms;
