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

Commit e828b6c0 authored by John Spurlock's avatar John Spurlock Committed by Android (Google) Code Review
Browse files

Merge "AudioService: Restore ringer-mode validation check." into lmp-mr1-dev

parents 9162890f 9755937e
Loading
Loading
Loading
Loading
+12 −3
Original line number Original line Diff line number Diff line
@@ -512,8 +512,11 @@ public class AudioManager {
     */
     */
    public static final int RINGER_MODE_NORMAL = 2;
    public static final int RINGER_MODE_NORMAL = 2;


    // maximum valid ringer mode value. Values must start from 0 and be contiguous.
    /**
    private static final int RINGER_MODE_MAX = RINGER_MODE_NORMAL;
     * Maximum valid ringer mode value. Values must start from 0 and be contiguous.
     * @hide
     */
    public static final int RINGER_MODE_MAX = RINGER_MODE_NORMAL;


    /**
    /**
     * Vibrate type that corresponds to the ringer.
     * Vibrate type that corresponds to the ringer.
@@ -887,7 +890,13 @@ public class AudioManager {
        if (ringerMode < 0 || ringerMode > RINGER_MODE_MAX) {
        if (ringerMode < 0 || ringerMode > RINGER_MODE_MAX) {
            return false;
            return false;
        }
        }
        return true;
        IAudioService service = getService();
        try {
            return service.isValidRingerMode(ringerMode);
        } catch (RemoteException e) {
            Log.e(TAG, "Dead object in isValidRingerMode", e);
            return false;
        }
    }
    }


    /**
    /**
+8 −3
Original line number Original line Diff line number Diff line
@@ -843,7 +843,7 @@ public class AudioService extends IAudioService.Stub {
        int ringerMode = ringerModeFromSettings;
        int ringerMode = ringerModeFromSettings;
        // sanity check in case the settings are restored from a device with incompatible
        // sanity check in case the settings are restored from a device with incompatible
        // ringer modes
        // ringer modes
        if (!AudioManager.isValidRingerMode(ringerMode)) {
        if (!isValidRingerMode(ringerMode)) {
            ringerMode = AudioManager.RINGER_MODE_NORMAL;
            ringerMode = AudioManager.RINGER_MODE_NORMAL;
        }
        }
        if ((ringerMode == AudioManager.RINGER_MODE_VIBRATE) && !mHasVibrator) {
        if ((ringerMode == AudioManager.RINGER_MODE_VIBRATE) && !mHasVibrator) {
@@ -1733,17 +1733,22 @@ public class AudioService extends IAudioService.Stub {
    }
    }


    private void ensureValidRingerMode(int ringerMode) {
    private void ensureValidRingerMode(int ringerMode) {
        if (!AudioManager.isValidRingerMode(ringerMode)) {
        if (!isValidRingerMode(ringerMode)) {
            throw new IllegalArgumentException("Bad ringer mode " + ringerMode);
            throw new IllegalArgumentException("Bad ringer mode " + ringerMode);
        }
        }
    }
    }


    /** @see AudioManager#isValidRingerMode(int) */
    public boolean isValidRingerMode(int ringerMode) {
        return ringerMode >= 0 && ringerMode <= AudioManager.RINGER_MODE_MAX;
    }

    /** @see AudioManager#setRingerMode(int) */
    /** @see AudioManager#setRingerMode(int) */
    public void setRingerMode(int ringerMode, boolean checkZen) {
    public void setRingerMode(int ringerMode, boolean checkZen) {
        if (mUseFixedVolume || isPlatformTelevision()) {
        if (mUseFixedVolume || isPlatformTelevision()) {
            return;
            return;
        }
        }

        ensureValidRingerMode(ringerMode);
        if ((ringerMode == AudioManager.RINGER_MODE_VIBRATE) && !mHasVibrator) {
        if ((ringerMode == AudioManager.RINGER_MODE_VIBRATE) && !mHasVibrator) {
            ringerMode = AudioManager.RINGER_MODE_SILENT;
            ringerMode = AudioManager.RINGER_MODE_SILENT;
        }
        }
+2 −0
Original line number Original line Diff line number Diff line
@@ -80,6 +80,8 @@ interface IAudioService {


    int getRingerMode();
    int getRingerMode();


    boolean isValidRingerMode(int ringerMode);

    void setVibrateSetting(int vibrateType, int vibrateSetting);
    void setVibrateSetting(int vibrateType, int vibrateSetting);


    int getVibrateSetting(int vibrateType);
    int getVibrateSetting(int vibrateType);