type cros_browser, cros_miscdomain, chromeos_domain, domain, mlstrustedobject, mlstrustedsubject;

permissive cros_browser;

cros_net(cros_browser);
cros_udp_listen(cros_browser);
cros_tcp_connect(cros_browser);
cros_cras_client(cros_browser);

domain_auto_trans({chromeos_domain -cros_crash}, chrome_browser_exec, cros_browser);

allow cros_browser domain:dir { getattr search };
allow cros_browser domain:file { getattr open read };
allow cros_browser domain:lnk_file { read getattr };

filetrans_pattern({cros_session_manager cros_browser}, cros_run, arc_dir, dir, "chrome");
filetrans_pattern(cros_browser, arc_dir, wayland_socket, sock_file, "wayland-0");
filetrans_pattern(cros_browser, cros_var_log, cros_var_log_chrome, dir, "chrome");
filetrans_pattern(cros_browser, cros_home_chronos, cros_home_chronos_crash, dir, "crash");

tmp_file(cros_browser, dir);

allow cros_browser proc_type:file getattr;
allow cros_browser { proc_cmdline proc_meminfo proc_stat }:file r_file_perms;

uma_writer(cros_browser);

rw_dir_file(cros_browser, cros_home_chronos);

allow cros_browser self:capability { sys_admin sys_chroot };
arc_cts_fails_release(
`allow cros_browser self:capability sys_ptrace;'
, (cros_browser))

allow cros_browser { cros_home_shadow_uid_user cros_home_chronos cros_home_chronos_crash }:{file lnk_file} create_file_perms;
allow cros_browser { cros_home_shadow_uid_user cros_home_chronos cros_home_chronos_crash }:dir create_dir_perms;
