typeattribute traceur_app coredomain;

app_domain(traceur_app);
allow traceur_app debugfs_tracing:file rw_file_perms;
allow traceur_app debugfs_tracing_debug:dir r_dir_perms;

userdebug_or_eng(`
  allow traceur_app debugfs_tracing_debug:file rw_file_perms;
')

allow traceur_app trace_data_file:file create_file_perms;
allow traceur_app trace_data_file:dir rw_dir_perms;
allow traceur_app wm_trace_data_file:dir rw_dir_perms;
allow traceur_app wm_trace_data_file:file { getattr r_file_perms unlink };
allow traceur_app atrace_exec:file rx_file_perms;

# To exec the perfetto cmdline client and pass it the trace config on
# stdint through a pipe.
allow traceur_app perfetto_exec:file rx_file_perms;

# Allow to access traced's privileged consumer socket.
unix_socket_connect(traceur_app, traced_consumer, traced)

dontaudit traceur_app debugfs_tracing_debug:file audit_access;

set_prop(traceur_app, debug_prop)
