Merge \"Check extra type before blindingly casting to Parcelable.\" into nyc-dev
am: 47c3afa10b
Change-Id: I4cb74a467a10ee3d38db91fde077263179bf9359
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index 45b5f26..50f6ec7 100644
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -2614,17 +2614,18 @@
private static void setPendingIntentWhitelistDuration(ActivityManagerInternal am, long duration,
Bundle extras) {
for (String key : extras.keySet()) {
- setPendingIntentWhitelistDuration(am, duration, extras.getParcelable(key));
- final Parcelable[] parcelableArray = extras.getParcelableArray(key);
- if (parcelableArray != null) {
- for (Parcelable parcelable: parcelableArray) {
+ final Object value = extras.get(key);
+ if (value instanceof Parcelable) {
+ setPendingIntentWhitelistDuration(am, duration, (Parcelable) value);
+ } else if (value instanceof Parcelable[]) {
+ for (Parcelable parcelable : (Parcelable[]) value) {
setPendingIntentWhitelistDuration(am, duration, parcelable);
}
- }
- final ArrayList<Parcelable> parcelableList = extras.getParcelableArrayList(key);
- if (parcelableList != null) {
- for (Parcelable parcelable: parcelableList) {
- setPendingIntentWhitelistDuration(am, duration, parcelable);
+ } else if (value instanceof List) {
+ for (Object element : (List <?>) value) {
+ if (element instanceof Parcelable) {
+ setPendingIntentWhitelistDuration(am, duration, (Parcelable) element);
+ }
}
}
}