diff options
| author | 2022-09-06 10:19:06 -0400 | |
|---|---|---|
| committer | 2022-09-06 17:49:18 -0400 | |
| commit | 6f02c07176d0fa4d6985c8f2200ccf49a1657d1c (patch) | |
| tree | 3cbfc068171fbc58ece45481939e6e902e4760cd | |
| parent | b2f2546b5bb555a56dc36bdc887bee0f52a2cef0 (diff) | |
Fix NPE
Test: NotificationChannelGroupTest
Test: view notification settings for an app that doesn't use groups
Fixes: 244574602
Bug: 241764350
Bug: 241764340
Bug: 241764135
Bug: 242702935
Bug: 242703118
Bug: 242703202
Bug: 242702851
Bug: 242703217
Bug: 242703556
Change-Id: I9c681106f6d645e62b0e44903d40aa523fee0e95
| -rw-r--r-- | core/java/android/app/NotificationChannelGroup.java | 14 | ||||
| -rw-r--r-- | core/tests/coretests/src/android/app/NotificationChannelGroupTest.java | 16 | 
2 files changed, 27 insertions, 3 deletions
| diff --git a/core/java/android/app/NotificationChannelGroup.java b/core/java/android/app/NotificationChannelGroup.java index 2b245aae915f..5c29eb35fcee 100644 --- a/core/java/android/app/NotificationChannelGroup.java +++ b/core/java/android/app/NotificationChannelGroup.java @@ -95,8 +95,11 @@ public final class NotificationChannelGroup implements Parcelable {          } else {              mId = null;          } -        mName = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in); -        mName = getTrimmedString(mName.toString()); +        if (in.readByte() != 0) { +            mName = getTrimmedString(in.readString()); +        } else { +            mName = ""; +        }          if (in.readByte() != 0) {              mDescription = getTrimmedString(in.readString());          } else { @@ -122,7 +125,12 @@ public final class NotificationChannelGroup implements Parcelable {          } else {              dest.writeByte((byte) 0);          } -        TextUtils.writeToParcel(mName.toString(), dest, flags); +        if (mName != null) { +            dest.writeByte((byte) 1); +            dest.writeString(mName.toString()); +        } else { +            dest.writeByte((byte) 0); +        }          if (mDescription != null) {              dest.writeByte((byte) 1);              dest.writeString(mDescription); diff --git a/core/tests/coretests/src/android/app/NotificationChannelGroupTest.java b/core/tests/coretests/src/android/app/NotificationChannelGroupTest.java index 2a3da05eabb3..625c66a4c60e 100644 --- a/core/tests/coretests/src/android/app/NotificationChannelGroupTest.java +++ b/core/tests/coretests/src/android/app/NotificationChannelGroupTest.java @@ -17,9 +17,11 @@  package android.app;  import static junit.framework.TestCase.assertEquals; +import static junit.framework.TestCase.assertTrue;  import android.os.Parcel;  import android.test.AndroidTestCase; +import android.text.TextUtils;  import androidx.test.filters.SmallTest;  import androidx.test.runner.AndroidJUnit4; @@ -70,4 +72,18 @@ public class NotificationChannelGroupTest {          assertEquals(NotificationChannelGroup.MAX_TEXT_LENGTH,                  fromParcel.getDescription().length());      } + +    @Test +    public void testNullableFields() { +        NotificationChannelGroup group = new NotificationChannelGroup("my_group_01", null); + +        Parcel parcel = Parcel.obtain(); +        group.writeToParcel(parcel, 0); +        parcel.setDataPosition(0); + +        NotificationChannelGroup fromParcel = +                NotificationChannelGroup.CREATOR.createFromParcel(parcel); +        assertEquals(group.getId(), fromParcel.getId()); +        assertTrue(TextUtils.isEmpty(fromParcel.getName())); +    }  } |