Merge "Check extra type before blindingly casting to Parcelable." into nyc-dev

This commit is contained in:
TreeHugger Robot
2016-06-16 18:47:50 +00:00
committed by Android (Google) Code Review

View File

@@ -2614,17 +2614,18 @@ public class NotificationManagerService extends SystemService {
private static void setPendingIntentWhitelistDuration(ActivityManagerInternal am, long duration, private static void setPendingIntentWhitelistDuration(ActivityManagerInternal am, long duration,
Bundle extras) { Bundle extras) {
for (String key : extras.keySet()) { for (String key : extras.keySet()) {
setPendingIntentWhitelistDuration(am, duration, extras.getParcelable(key)); final Object value = extras.get(key);
final Parcelable[] parcelableArray = extras.getParcelableArray(key); if (value instanceof Parcelable) {
if (parcelableArray != null) { setPendingIntentWhitelistDuration(am, duration, (Parcelable) value);
for (Parcelable parcelable: parcelableArray) { } else if (value instanceof Parcelable[]) {
for (Parcelable parcelable : (Parcelable[]) value) {
setPendingIntentWhitelistDuration(am, duration, parcelable); setPendingIntentWhitelistDuration(am, duration, parcelable);
} }
} } else if (value instanceof List) {
final ArrayList<Parcelable> parcelableList = extras.getParcelableArrayList(key); for (Object element : (List <?>) value) {
if (parcelableList != null) { if (element instanceof Parcelable) {
for (Parcelable parcelable: parcelableList) { setPendingIntentWhitelistDuration(am, duration, (Parcelable) element);
setPendingIntentWhitelistDuration(am, duration, parcelable); }
} }
} }
} }