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

* commit 'e828b6c034f7330ee70d72d1af979b0a35f883d9':
  AudioService: Restore ringer-mode validation check.
This commit is contained in:
John Spurlock
2014-10-27 13:35:52 +00:00
committed by Android Git Automerger
3 changed files with 22 additions and 6 deletions

View File

@@ -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;
}
} }
/** /**

View File

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

View File

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