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

Commit 65635381 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Revert^2 "Add MODIFY_AUDIO_SETTINGS_PRIVILEGED permission check to...

Merge "Revert^2 "Add MODIFY_AUDIO_SETTINGS_PRIVILEGED permission check to volume callback"" into main
parents 808bdb92 468c01c5
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@

    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_ROUTING" />
    <uses-permission android:name="android.permission.CHANGE_ACCESSIBILITY_VOLUME" />

+17 −1
Original line number Diff line number Diff line
@@ -53,6 +53,7 @@ import static android.media.audio.Flags.cacheGetStreamVolume;
import static android.media.audio.Flags.concurrentAudioRecordBypassPermission;
import static android.media.audio.Flags.featureSpatialAudioHeadtrackingLowLatency;
import static android.media.audio.Flags.focusFreezeTestApi;
import static android.media.audio.Flags.registerVolumeCallbackApiHardening;
import static android.media.audio.Flags.roForegroundAudioControl;
import static android.media.audio.Flags.scoManagedByAudio;
import static android.media.audio.Flags.unifyAbsoluteVolumeManagement;
@@ -68,8 +69,8 @@ import static com.android.internal.annotations.VisibleForTesting.Visibility.PACK
import static com.android.media.audio.Flags.alarmMinVolumeZero;
import static com.android.media.audio.Flags.asDeviceConnectionFailure;
import static com.android.media.audio.Flags.audioserverPermissions;
import static com.android.media.audio.Flags.disablePrescaleAbsoluteVolume;
import static com.android.media.audio.Flags.deferWearPermissionUpdates;
import static com.android.media.audio.Flags.disablePrescaleAbsoluteVolume;
import static com.android.media.audio.Flags.equalScoLeaVcIndexRange;
import static com.android.media.audio.Flags.optimizeBtDeviceSwitch;
import static com.android.media.audio.Flags.replaceStreamBtSco;
@@ -4590,11 +4591,13 @@ public class AudioService extends IAudioService.Stub
    /** @see AudioManager#registerVolumeGroupCallback(executor, callback) */
    public void registerAudioVolumeCallback(IAudioVolumeChangeDispatcher callback) {
        checkCallingAudioSettingsPrivilegedPermission();
        mAudioVolumeChangeHandler.registerListener(callback);
    }
    /** @see AudioManager#unregisterVolumeGroupCallback(callback) */
    public void unregisterAudioVolumeCallback(IAudioVolumeChangeDispatcher callback) {
        checkCallingAudioSettingsPrivilegedPermission();
        mAudioVolumeChangeHandler.unregisterListener(callback);
    }
@@ -5183,6 +5186,8 @@ public class AudioService extends IAudioService.Stub
                + optimizeBtDeviceSwitch());
        pw.println("\tandroid.media.audio.unifyAbsoluteVolumeManagement:"
                + unifyAbsoluteVolumeManagement());
        pw.println("\tandroid.media.audio.Flags.registerVolumeCallbackApiHardening:"
                + registerVolumeCallbackApiHardening());
    }
    private void dumpAudioMode(PrintWriter pw) {
@@ -8084,6 +8089,17 @@ public class AudioService extends IAudioService.Stub
                == PackageManager.PERMISSION_GRANTED;
    }
    private void checkCallingAudioSettingsPrivilegedPermission() {
        if (!registerVolumeCallbackApiHardening()) {
            return;
        }
        if (mContext.checkCallingPermission(MODIFY_AUDIO_SETTINGS_PRIVILEGED)
                == PackageManager.PERMISSION_GRANTED) {
            return;
        }
        throw new SecurityException("Missing MODIFY_AUDIO_SETTINGS_PRIVILEGED permission");
    }
    /**
     * Minimum attenuation that can be set for alarms over speaker by an application that
     * doesn't have the MODIFY_AUDIO_SETTINGS permission.