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

Commit 4133d44c authored by Vlad Popa's avatar Vlad Popa Committed by Android (Google) Code Review
Browse files

Merge "Add MODIFY_AUDIO_ROUTING permission for setting the assistant mode" into main

parents 4bbab50b 52b25970
Loading
Loading
Loading
Loading
+15 −6
Original line number Diff line number Diff line
@@ -7081,8 +7081,7 @@ public class AudioService extends IAudioService.Stub
                    + ", uid=" + uid + ", caller=" + callingPackage + ")");
        }
        if (mContext.checkCallingPermission(
                MODIFY_AUDIO_SETTINGS_PRIVILEGED) != PackageManager.PERMISSION_GRANTED) {
        if (!hasAudioSettingsPrivilegedOrAudioRoutingPermission(/*withSelf=*/false)) {
            if (mode == MODE_ASSISTANT_CONVERSATION) {
                Log.w(TAG,
                        "MODIFY_AUDIO_SETTINGS_PRIVILEGED Permission Denial for "
@@ -8488,6 +8487,19 @@ public class AudioService extends IAudioService.Stub
                == PackageManager.PERMISSION_GRANTED;
    }
    private boolean hasAudioSettingsPrivilegedOrAudioRoutingPermission(boolean withSelf) {
        if (withSelf) {
            return mContext.checkCallingOrSelfPermission(MODIFY_AUDIO_SETTINGS_PRIVILEGED)
                    == PackageManager.PERMISSION_GRANTED
                    || mContext.checkCallingOrSelfPermission(MODIFY_AUDIO_ROUTING)
                    == PackageManager.PERMISSION_GRANTED;
        }
        return mContext.checkCallingPermission(MODIFY_AUDIO_SETTINGS_PRIVILEGED)
                == PackageManager.PERMISSION_GRANTED
                || mContext.checkCallingPermission(MODIFY_AUDIO_ROUTING)
                == PackageManager.PERMISSION_GRANTED;
    }
    private void checkCallingAudioSettingsPrivilegedPermission() {
        if (!registerVolumeCallbackApiHardening()) {
            return;
@@ -11967,10 +11979,7 @@ public class AudioService extends IAudioService.Stub
        // does caller have system privileges to bypass HardeningEnforcer
        boolean permissionOverridesCheck = false;
        if ((mContext.checkCallingOrSelfPermission(MODIFY_AUDIO_SETTINGS_PRIVILEGED)
                == PackageManager.PERMISSION_GRANTED)
                || (mContext.checkCallingOrSelfPermission(MODIFY_AUDIO_ROUTING)
                == PackageManager.PERMISSION_GRANTED)) {
        if (hasAudioSettingsPrivilegedOrAudioRoutingPermission(/*withSelf=*/true)) {
            permissionOverridesCheck = true;
        } else if (uid < UserHandle.AID_APP_START) {
            permissionOverridesCheck = true;