am 14882cf3: am e828b6c0: Merge "AudioService: Restore ringer-mode validation check." into lmp-mr1-dev
* commit '14882cf3773c7c142c9a8aa4eb7c95a80e5711f9':
AudioService: Restore ringer-mode validation check.
diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java
index 69c1142..c100df2 100644
--- a/media/java/android/media/AudioManager.java
+++ b/media/java/android/media/AudioManager.java
@@ -512,8 +512,11 @@
*/
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.
@@ -887,7 +890,13 @@
if (ringerMode < 0 || ringerMode > RINGER_MODE_MAX) {
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;
+ }
}
/**
diff --git a/media/java/android/media/AudioService.java b/media/java/android/media/AudioService.java
index b0bf4a1..bbeeac0 100644
--- a/media/java/android/media/AudioService.java
+++ b/media/java/android/media/AudioService.java
@@ -843,7 +843,7 @@
int ringerMode = ringerModeFromSettings;
// sanity check in case the settings are restored from a device with incompatible
// ringer modes
- if (!AudioManager.isValidRingerMode(ringerMode)) {
+ if (!isValidRingerMode(ringerMode)) {
ringerMode = AudioManager.RINGER_MODE_NORMAL;
}
if ((ringerMode == AudioManager.RINGER_MODE_VIBRATE) && !mHasVibrator) {
@@ -1733,17 +1733,22 @@
}
private void ensureValidRingerMode(int ringerMode) {
- if (!AudioManager.isValidRingerMode(ringerMode)) {
+ if (!isValidRingerMode(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) */
public void setRingerMode(int ringerMode, boolean checkZen) {
if (mUseFixedVolume || isPlatformTelevision()) {
return;
}
-
+ ensureValidRingerMode(ringerMode);
if ((ringerMode == AudioManager.RINGER_MODE_VIBRATE) && !mHasVibrator) {
ringerMode = AudioManager.RINGER_MODE_SILENT;
}
diff --git a/media/java/android/media/IAudioService.aidl b/media/java/android/media/IAudioService.aidl
index 39b074e..2d8042c 100644
--- a/media/java/android/media/IAudioService.aidl
+++ b/media/java/android/media/IAudioService.aidl
@@ -80,6 +80,8 @@
int getRingerMode();
+ boolean isValidRingerMode(int ringerMode);
+
void setVibrateSetting(int vibrateType, int vibrateSetting);
int getVibrateSetting(int vibrateType);