Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a9a1b436 authored by Alisa Hung's avatar Alisa Hung
Browse files

Trim oversized strings in setId and setConversationId

Flag: EXEMPT bugfix
Test: android.app.NotificationChannelTest
Test: cts NotificationChannelTest
Bug: 419014146
Change-Id: Id721d3123ee8d38753f550fe57ba0f5d15d743ac
parent 97b70cd6
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -651,7 +651,7 @@ public final class NotificationChannel implements Parcelable {
     * @hide
     */
    public void setId(String id) {
        mId = id;
        mId = getTrimmedString(id);
    }

    // Modifiable by apps on channel creation.
@@ -895,8 +895,8 @@ public final class NotificationChannel implements Parcelable {
     */
    public void setConversationId(@NonNull String parentChannelId,
            @NonNull String conversationId) {
        mParentId = parentChannelId;
        mConversationId = conversationId;
        mParentId = getTrimmedString(parentChannelId);
        mConversationId = getTrimmedString(conversationId);
    }

    /**
+30 −0
Original line number Diff line number Diff line
@@ -255,6 +255,36 @@ public class NotificationChannelTest {
                fromParcel.getSound().toString().length());
    }

    @Test
    public void testSetId_longStringIsTrimmed() {
        NotificationChannel channel =
                new NotificationChannel("id", "name", NotificationManager.IMPORTANCE_DEFAULT);
        String longId = Strings.repeat("A", NotificationChannel.MAX_TEXT_LENGTH + 10);

        channel.setId(longId);

        assertThat(channel.getId()).hasLength(NotificationChannel.MAX_TEXT_LENGTH);
        assertThat(channel.getId())
                .isEqualTo(longId.substring(0, NotificationChannel.MAX_TEXT_LENGTH));
    }

    @Test
    public void testSetConversationId_longStringsAreTrimmed() {
        NotificationChannel channel =
                new NotificationChannel("id", "name", NotificationManager.IMPORTANCE_DEFAULT);
        String longParentId = Strings.repeat("P", NotificationChannel.MAX_TEXT_LENGTH + 10);
        String longConversationId = Strings.repeat("C", NotificationChannel.MAX_TEXT_LENGTH + 10);

        channel.setConversationId(longParentId, longConversationId);

        assertThat(channel.getParentChannelId()).hasLength(NotificationChannel.MAX_TEXT_LENGTH);
        assertThat(channel.getParentChannelId())
                .isEqualTo(longParentId.substring(0, NotificationChannel.MAX_TEXT_LENGTH));
        assertThat(channel.getConversationId()).hasLength(NotificationChannel.MAX_TEXT_LENGTH);
        assertThat(channel.getConversationId())
                .isEqualTo(longConversationId.substring(0, NotificationChannel.MAX_TEXT_LENGTH));
    }

    @Test
    @EnableFlags({Flags.FLAG_NOTIFICATION_CHANNEL_VIBRATION_EFFECT_API,
            Flags.FLAG_NOTIF_CHANNEL_CROP_VIBRATION_EFFECTS})