Merge "audioflinger: fix App Ops for services" into qt-dev

gugelfrei
TreeHugger Robot 5 years ago committed by Android (Google) Code Review
commit 3be0ffbd9d

@ -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;

@ -389,9 +389,16 @@ 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);
return nullptr;
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) {
@ -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);
@ -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…
Cancel
Save