From 45759ca54def7995df4207818d799c6b7a536ded Mon Sep 17 00:00:00 2001 From: Julia Reynolds Date: Mon, 30 Jan 2023 13:50:39 -0500 Subject: [PATCH] Fix potential NPE Fixes: 247244229 Test: NotificationTest Change-Id: If26322a9560dc38f788cabf9b6827bf6cdfeab58 --- core/java/android/app/Notification.java | 7 +++++-- .../src/android/app/NotificationTest.java | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java index 9b348fce01a5a..13459100f5e5a 100644 --- a/core/java/android/app/Notification.java +++ b/core/java/android/app/Notification.java @@ -3885,8 +3885,11 @@ public class Notification implements Parcelable } if (mN.extras.containsKey(EXTRA_PEOPLE_LIST)) { - ArrayList people = mN.extras.getParcelableArrayList(EXTRA_PEOPLE_LIST, android.app.Person.class); - mPersonList.addAll(people); + ArrayList people = mN.extras.getParcelableArrayList(EXTRA_PEOPLE_LIST, + android.app.Person.class); + if (people != null && !people.isEmpty()) { + mPersonList.addAll(people); + } } if (mN.getSmallIcon() == null && mN.icon != 0) { diff --git a/core/tests/coretests/src/android/app/NotificationTest.java b/core/tests/coretests/src/android/app/NotificationTest.java index 4548730fc4876..34d669bb5ebd2 100644 --- a/core/tests/coretests/src/android/app/NotificationTest.java +++ b/core/tests/coretests/src/android/app/NotificationTest.java @@ -31,6 +31,7 @@ import static android.app.Notification.EXTRA_LARGE_ICON_BIG; import static android.app.Notification.EXTRA_MEDIA_REMOTE_INTENT; import static android.app.Notification.EXTRA_MEDIA_SESSION; import static android.app.Notification.EXTRA_MESSAGING_PERSON; +import static android.app.Notification.EXTRA_PEOPLE_LIST; import static android.app.Notification.EXTRA_PICTURE; import static android.app.Notification.EXTRA_PICTURE_ICON; import static android.app.Notification.MessagingStyle.Message.KEY_DATA_URI; @@ -816,6 +817,23 @@ public class NotificationTest { } } + @Test + public void testRecoverBuilder_nullExtraPeopleList_noCrash() { + Bundle extras = new Bundle(); + extras.putParcelable(EXTRA_PEOPLE_LIST, null); + + Notification n = new Notification.Builder(mContext, "test") + .setSmallIcon(0) + .addExtras(extras) + .build(); + Bundle fakeTypes = new Bundle(); + fakeTypes.putParcelable(EXTRA_BUILDER_APPLICATION_INFO, new Bundle()); + + Notification.Builder.recoverBuilder(mContext, n); + + // no crash, good + } + @Test public void testVisitUris_invalidExtra_noCrash() { Notification n = new Notification.Builder(mContext, "test")