AudioFlinger: enforce OP_RECORD_AUDIO during recording
Fix issue where RecordTrack silencing didn't silence the
full buffer: the memset to 0 was using the RecordThread frame
size, not the RecordTrack frame size.
OP_RECORD_AUDIO was only enforced at the start of a recording
which would fail if not granted. This patch silences the recording
(i.e. silence is recorded instead) when it is lost, and undoes that
when granted again. This requires:
- propagating the package name of the client to the RecordTrack class
- registering an appOp callback in RecordTrack (through a new
OpRecordAudioMonitor class) to (un)silence the recording
- update the isSilenced() method to take into account the appOp.
Test: run app that records audio, then "adb shell appops __pack_name__ 27 2"
and verify recording is silent after that.
(cherry picked from commit ddf87effa4d80f413a80fde861f73877ccd80599)
(cherry picked from commit 7307293e8befafa12b244b74cd3c8cb84b27997c)
6 files changed