# mediacodec - multimedia daemon
type mediacodec, domain, domain_deprecated;
type mediacodec_exec, exec_type, file_type;

typeattribute mediacodec mlstrustedsubject;

init_daemon_domain(mediacodec)

binder_use(mediacodec)
binder_call(mediacodec, binderservicedomain)
binder_call(mediacodec, appdomain)
binder_service(mediacodec)

allow mediacodec kernel:system module_request;
allow mediacodec gpu_device:chr_file rw_file_perms;
allow mediacodec video_device:dir r_dir_perms;
allow mediacodec video_device:chr_file rw_file_perms;

# Needed on some devices for playing DRM protected content,
# but seems expected and appropriate for all devices.
unix_socket_connect(mediacodec, drmserver, drmserver)

allow mediacodec drmserver_service:service_manager find;
allow mediacodec mediacodec_service:service_manager { add find };
allow mediacodec processinfo_service:service_manager find;
allow mediacodec surfaceflinger_service:service_manager find;

use_drmservice(mediacodec)
allow mediacodec drmserver:drmservice {
    consumeRights
    setPlaybackStatus
    openDecryptSession
    closeDecryptSession
    initializeDecryptUnit
    decrypt
    finalizeDecryptUnit
    pread
};

###
### neverallow rules
###

# mediacodec should never execute any executable without a
# domain transition
neverallow mediacodec { file_type fs_type }:file execute_no_trans;
