Loading services/audioflinger/PlaybackTracks.h +1 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ public: private: OpPlayAudioMonitor(uid_t uid, audio_usage_t usage, int id); void onFirstRef() override; static void getPackagesForUid(uid_t uid, Vector<String16>& packages); AppOpsManager mAppOpsManager; Loading services/audioflinger/Tracks.cpp +19 −5 Original line number Diff line number Diff line Loading @@ -389,10 +389,17 @@ sp<AudioFlinger::PlaybackThread::OpPlayAudioMonitor> AudioFlinger::PlaybackThread::OpPlayAudioMonitor::createIfNeeded( uid_t uid, const audio_attributes_t& attr, int id, audio_stream_type_t streamType) { if (isAudioServerOrRootUid(uid)) { ALOGD("OpPlayAudio: not muting track:%d usage:%d root or audioserver", id, attr.usage); if (isServiceUid(uid)) { Vector <String16> packages; getPackagesForUid(uid, packages); if (packages.isEmpty()) { ALOGD("OpPlayAudio: not muting track:%d usage:%d for service UID %d", id, attr.usage, uid); return nullptr; } } // stream type has been filtered by audio policy to indicate whether it can be muted if (streamType == AUDIO_STREAM_ENFORCED_AUDIBLE) { ALOGD("OpPlayAudio: not muting track:%d usage:%d ENFORCED_AUDIBLE", id, attr.usage); Loading Loading @@ -423,8 +430,7 @@ AudioFlinger::PlaybackThread::OpPlayAudioMonitor::~OpPlayAudioMonitor() void AudioFlinger::PlaybackThread::OpPlayAudioMonitor::onFirstRef() { PermissionController permissionController; permissionController.getPackagesForUid(mUid, mPackages); getPackagesForUid(mUid, mPackages); checkPlayAudioForUsage(); if (!mPackages.isEmpty()) { mOpCallback = new PlayAudioOpCallback(this); Loading Loading @@ -475,6 +481,14 @@ void AudioFlinger::PlaybackThread::OpPlayAudioMonitor::PlayAudioOpCallback::opCh } } // static void AudioFlinger::PlaybackThread::OpPlayAudioMonitor::getPackagesForUid( uid_t uid, Vector<String16>& packages) { PermissionController permissionController; permissionController.getPackagesForUid(uid, packages); } // ---------------------------------------------------------------------------- #undef LOG_TAG #define LOG_TAG "AF::Track" Loading Loading
services/audioflinger/PlaybackTracks.h +1 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ public: private: OpPlayAudioMonitor(uid_t uid, audio_usage_t usage, int id); void onFirstRef() override; static void getPackagesForUid(uid_t uid, Vector<String16>& packages); AppOpsManager mAppOpsManager; Loading
services/audioflinger/Tracks.cpp +19 −5 Original line number Diff line number Diff line Loading @@ -389,10 +389,17 @@ sp<AudioFlinger::PlaybackThread::OpPlayAudioMonitor> AudioFlinger::PlaybackThread::OpPlayAudioMonitor::createIfNeeded( uid_t uid, const audio_attributes_t& attr, int id, audio_stream_type_t streamType) { if (isAudioServerOrRootUid(uid)) { ALOGD("OpPlayAudio: not muting track:%d usage:%d root or audioserver", id, attr.usage); if (isServiceUid(uid)) { Vector <String16> packages; getPackagesForUid(uid, packages); if (packages.isEmpty()) { ALOGD("OpPlayAudio: not muting track:%d usage:%d for service UID %d", id, attr.usage, uid); return nullptr; } } // stream type has been filtered by audio policy to indicate whether it can be muted if (streamType == AUDIO_STREAM_ENFORCED_AUDIBLE) { ALOGD("OpPlayAudio: not muting track:%d usage:%d ENFORCED_AUDIBLE", id, attr.usage); Loading Loading @@ -423,8 +430,7 @@ AudioFlinger::PlaybackThread::OpPlayAudioMonitor::~OpPlayAudioMonitor() void AudioFlinger::PlaybackThread::OpPlayAudioMonitor::onFirstRef() { PermissionController permissionController; permissionController.getPackagesForUid(mUid, mPackages); getPackagesForUid(mUid, mPackages); checkPlayAudioForUsage(); if (!mPackages.isEmpty()) { mOpCallback = new PlayAudioOpCallback(this); Loading Loading @@ -475,6 +481,14 @@ void AudioFlinger::PlaybackThread::OpPlayAudioMonitor::PlayAudioOpCallback::opCh } } // static void AudioFlinger::PlaybackThread::OpPlayAudioMonitor::getPackagesForUid( uid_t uid, Vector<String16>& packages) { PermissionController permissionController; permissionController.getPackagesForUid(uid, packages); } // ---------------------------------------------------------------------------- #undef LOG_TAG #define LOG_TAG "AF::Track" Loading