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

Commit cd36b3c3 authored by Julia Tuttle's avatar Julia Tuttle Committed by Android (Google) Code Review
Browse files

Merge "BigPictureStyle: set unused big picture extra to null" into main

parents b9720608 297baf11
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -7733,11 +7733,12 @@ public class Notification implements Parcelable
            } else if (mPictureIcon.getType() == Icon.TYPE_BITMAP) {
                // If the icon contains a bitmap, use the old extra so that listeners which look
                // for that extra can still find the picture. Don't include the new extra in
                // that case, to avoid duplicating data.
                // that case, to avoid duplicating data. Leave the unused extra set to null to avoid
                // crashing apps that came to expect it to be present but null.
                extras.putParcelable(EXTRA_PICTURE, mPictureIcon.getBitmap());
                extras.remove(EXTRA_PICTURE_ICON);
                extras.putParcelable(EXTRA_PICTURE_ICON, null);
            } else {
                extras.remove(EXTRA_PICTURE);
                extras.putParcelable(EXTRA_PICTURE, null);
                extras.putParcelable(EXTRA_PICTURE_ICON, mPictureIcon);
            }
        }
+16 −8
Original line number Diff line number Diff line
@@ -1244,29 +1244,33 @@ public class NotificationTest {
    }

    @Test
    public void testBigPictureStyle_setExtras_pictureIconNull_noPictureIconKey() {
    public void testBigPictureStyle_setExtras_pictureIconNull_pictureIconKeyNull() {
        Notification.BigPictureStyle bpStyle = new Notification.BigPictureStyle();
        bpStyle.bigPicture((Bitmap) null);

        Bundle extras = new Bundle();
        bpStyle.addExtras(extras);

        assertThat(extras.containsKey(EXTRA_PICTURE_ICON)).isFalse();
        assertThat(extras.containsKey(EXTRA_PICTURE_ICON)).isTrue();
        final Parcelable pictureIcon = extras.getParcelable(EXTRA_PICTURE_ICON);
        assertThat(pictureIcon).isNull();
    }

    @Test
    public void testBigPictureStyle_setExtras_pictureIconNull_noPictureKey() {
    public void testBigPictureStyle_setExtras_pictureIconNull_pictureKeyNull() {
        Notification.BigPictureStyle bpStyle = new Notification.BigPictureStyle();
        bpStyle.bigPicture((Bitmap) null);

        Bundle extras = new Bundle();
        bpStyle.addExtras(extras);

        assertThat(extras.containsKey(EXTRA_PICTURE)).isFalse();
        assertThat(extras.containsKey(EXTRA_PICTURE)).isTrue();
        final Parcelable picture = extras.getParcelable(EXTRA_PICTURE);
        assertThat(picture).isNull();
    }

    @Test
    public void testBigPictureStyle_setExtras_pictureIconTypeBitmap_noPictureIconKey() {
    public void testBigPictureStyle_setExtras_pictureIconTypeBitmap_pictureIconKeyNull() {
        Bitmap bitmap = Bitmap.createBitmap(300, 300, Bitmap.Config.ARGB_8888);
        Notification.BigPictureStyle bpStyle = new Notification.BigPictureStyle();
        bpStyle.bigPicture(bitmap);
@@ -1274,11 +1278,13 @@ public class NotificationTest {
        Bundle extras = new Bundle();
        bpStyle.addExtras(extras);

        assertThat(extras.containsKey(EXTRA_PICTURE_ICON)).isFalse();
        assertThat(extras.containsKey(EXTRA_PICTURE_ICON)).isTrue();
        final Parcelable pictureIcon = extras.getParcelable(EXTRA_PICTURE_ICON);
        assertThat(pictureIcon).isNull();
    }

    @Test
    public void testBigPictureStyle_setExtras_pictureIconTypeIcon_noPictureKey() {
    public void testBigPictureStyle_setExtras_pictureIconTypeIcon_pictureKeyNull() {
        Icon icon = Icon.createWithResource(mContext, R.drawable.btn_plus);
        Notification.BigPictureStyle bpStyle = new Notification.BigPictureStyle();
        bpStyle.bigPicture(icon);
@@ -1286,7 +1292,9 @@ public class NotificationTest {
        Bundle extras = new Bundle();
        bpStyle.addExtras(extras);

        assertThat(extras.containsKey(EXTRA_PICTURE)).isFalse();
        assertThat(extras.containsKey(EXTRA_PICTURE)).isTrue();
        final Parcelable picture = extras.getParcelable(EXTRA_PICTURE);
        assertThat(picture).isNull();
    }

    @Test
+8 −5
Original line number Diff line number Diff line
@@ -7018,12 +7018,14 @@ public class NotificationManagerService extends SystemService {
            return false;
        }
        final boolean hasBitmap = n.extras.containsKey(Notification.EXTRA_PICTURE);
        final boolean hasBitmap = n.extras.containsKey(Notification.EXTRA_PICTURE)
                && n.extras.getParcelable(Notification.EXTRA_PICTURE) != null;
        if (hasBitmap) {
            return true;
        }
        final boolean hasIcon = n.extras.containsKey(Notification.EXTRA_PICTURE_ICON);
        final boolean hasIcon = n.extras.containsKey(Notification.EXTRA_PICTURE_ICON)
                && n.extras.getParcelable(Notification.EXTRA_PICTURE_ICON) != null;
        if (hasIcon) {
            return true;
        }
@@ -7039,9 +7041,10 @@ public class NotificationManagerService extends SystemService {
        if (!isBigPictureWithBitmapOrIcon(r.getNotification())) {
            return;
        }
        // Remove Notification object's reference to picture bitmap or URI
        r.getNotification().extras.remove(Notification.EXTRA_PICTURE);
        r.getNotification().extras.remove(Notification.EXTRA_PICTURE_ICON);
        // Remove Notification object's reference to picture bitmap or URI. Leave the extras set to
        // null to avoid crashing apps that came to expect them to be present but null.
        r.getNotification().extras.putParcelable(Notification.EXTRA_PICTURE, null);
        r.getNotification().extras.putParcelable(Notification.EXTRA_PICTURE_ICON, null);
        // Make Notification silent
        r.getNotification().flags |= FLAG_ONLY_ALERT_ONCE;
+7 −2
Original line number Diff line number Diff line
@@ -12302,7 +12302,9 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
                /* isImageBitmap= */ true,
                /* isExpired= */ true);
        addRecordAndRemoveBitmaps(record);
        assertThat(record.getNotification().extras.containsKey(EXTRA_PICTURE)).isFalse();
        assertThat(record.getNotification().extras.containsKey(EXTRA_PICTURE)).isTrue();
        final Parcelable picture = record.getNotification().extras.getParcelable(EXTRA_PICTURE);
        assertThat(picture).isNull();
    }
    @Test
@@ -12336,7 +12338,10 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
                /* isImageBitmap= */ false,
                /* isExpired= */ true);
        addRecordAndRemoveBitmaps(record);
        assertThat(record.getNotification().extras.containsKey(EXTRA_PICTURE_ICON)).isFalse();
        assertThat(record.getNotification().extras.containsKey(EXTRA_PICTURE_ICON)).isTrue();
        final Parcelable pictureIcon =
                record.getNotification().extras.getParcelable(EXTRA_PICTURE_ICON);
        assertThat(pictureIcon).isNull();
    }
    @Test