Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 371c7fea authored by Evan Severson's avatar Evan Severson
Browse files

Fix sensor privacy check in audio policy service

This change addresses feedback for change
I6f9c762086cfa3900ec9585aaf68e458c9dadff5.

Test: Manual
Bug: 162549680
Change-Id: I0b4a318d0d14e545a845e9ac53ef170e4c5cb4c6
parent 0e6db8c6
Loading
Loading
Loading
Loading
+31 −31
Original line number Diff line number Diff line
@@ -472,7 +472,9 @@ void AudioPolicyService::updateUidStates_l()
{
//    Go over all active clients and allow capture (does not force silence) in the
//    following cases:
//    The client is the assistant
//    The client source is virtual (remote submix, call audio TX or RX...)
//    OR The user the client is running in has microphone sensor privacy disabled
//        AND The client is the assistant
//                AND an accessibility service is on TOP or a RTT call is active
//                        AND the source is VOICE_RECOGNITION or HOTWORD
//                    OR uses VOICE_RECOGNITION AND is on TOP
@@ -487,7 +489,6 @@ void AudioPolicyService::updateUidStates_l()
//                            OR client has CAPTURE_AUDIO_OUTPUT privileged permission
//                AND is on TOP
//                AND the source is VOICE_RECOGNITION or HOTWORD
//    OR the client source is virtual (remote submix, call audio TX or RX...)
//            OR the client source is HOTWORD
//                AND is on TOP
//                    OR all active clients are using HOTWORD source
@@ -529,12 +530,8 @@ void AudioPolicyService::updateUidStates_l()

    for (size_t i =0; i < mAudioRecordClients.size(); i++) {
        sp<AudioRecordClient> current = mAudioRecordClients[i];
        if (!isVirtualSource(current->attributes.source)
                && isUserSensorPrivacyEnabledForUid(current->uid)) {
            setAppState_l(current->portId, APP_STATE_IDLE);
            continue;
        }
        if (!current->active) {
        if (!current->active || (!isVirtualSource(current->attributes.source)
                && isUserSensorPrivacyEnabledForUid(current->uid))) {
            continue;
        }

@@ -662,6 +659,9 @@ void AudioPolicyService::updateUidStates_l()
        if (isVirtualSource(source)) {
            // Allow capture for virtual (remote submix, call audio TX or RX...) sources
            allowCapture = true;
        } else if (isUserSensorPrivacyEnabledForUid(current->uid)) {
            // If sensor privacy is enabled, don't allow capture
            allowCapture = false;
        } else if (mUidPolicy->isAssistantUid(current->uid)) {
            // For assistant allow capture if:
            //     An accessibility service is on TOP or a RTT call is active