summaryrefslogtreecommitdiffstats
path: root/services/core/java/com/android/server/notification
diff options
context:
space:
mode:
authorJean-Michel Trivi <jmtrivi@google.com>2014-09-09 20:49:49 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-09-09 20:49:50 +0000
commit97dc52c8579d70a075e9c999f1f244bbcf3e9bc1 (patch)
tree134d5b0609d2298172194854e3b24df13fd2a5a0 /services/core/java/com/android/server/notification
parent9ed0292a650eb52becc0c17e4001767065d325ca (diff)
parentceb79bc31a91daf3d43156947f6666d2a8887859 (diff)
downloadframeworks_base-97dc52c8579d70a075e9c999f1f244bbcf3e9bc1.zip
frameworks_base-97dc52c8579d70a075e9c999f1f244bbcf3e9bc1.tar.gz
frameworks_base-97dc52c8579d70a075e9c999f1f244bbcf3e9bc1.tar.bz2
Merge "Prevent NotificationManagerService from using bad stream type" into lmp-dev
Diffstat (limited to 'services/core/java/com/android/server/notification')
-rw-r--r--services/core/java/com/android/server/notification/NotificationManagerService.java18
1 files changed, 12 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index 280db73..c09eff8 100644
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -49,6 +49,7 @@ import android.content.res.Resources;
import android.database.ContentObserver;
import android.media.AudioAttributes;
import android.media.AudioManager;
+import android.media.AudioSystem;
import android.media.IRingtonePlayer;
import android.net.Uri;
import android.os.Binder;
@@ -1945,14 +1946,19 @@ public class NotificationManagerService extends SystemService {
}
private static AudioAttributes audioAttributesForNotification(Notification n) {
- if (n.audioAttributes != null
- && !Notification.AUDIO_ATTRIBUTES_DEFAULT.equals(n.audioAttributes)) {
+ if (n.audioAttributes != null) {
return n.audioAttributes;
+ } else if (n.audioStreamType >= 0 && n.audioStreamType < AudioSystem.getNumStreamTypes()) {
+ // the stream type is valid, use it
+ return new AudioAttributes.Builder()
+ .setInternalLegacyStreamType(n.audioStreamType)
+ .build();
+ } else if (n.audioStreamType == AudioSystem.STREAM_DEFAULT) {
+ return Notification.AUDIO_ATTRIBUTES_DEFAULT;
+ } else {
+ Log.w(TAG, String.format("Invalid stream type: %d", n.audioStreamType));
+ return Notification.AUDIO_ATTRIBUTES_DEFAULT;
}
- return new AudioAttributes.Builder()
- .setLegacyStreamType(n.audioStreamType)
- .setUsage(AudioAttributes.usageForLegacyStreamType(n.audioStreamType))
- .build();
}
void showNextToastLocked() {