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

Commit 787bc067 authored by tim peng's avatar tim peng Committed by Android (Google) Code Review
Browse files

Merge "Fix NPE when notification icon is empty"

parents 5e2d9278 cf0efe78
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -16,10 +16,12 @@

package com.android.systemui.media.dialog;

import android.app.Notification;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon;
import android.media.MediaMetadata;
import android.media.MediaRoute2Info;
import android.media.RoutingSessionInfo;
@@ -221,9 +223,14 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback {
        }
        for (NotificationEntry entry
                : mNotificationEntryManager.getActiveNotificationsForCurrentUser()) {
            if (entry.getSbn().getNotification().hasMediaSession()
            final Notification notification = entry.getSbn().getNotification();
            if (notification.hasMediaSession()
                    && TextUtils.equals(entry.getSbn().getPackageName(), mPackageName)) {
                return IconCompat.createFromIcon(entry.getSbn().getNotification().getLargeIcon());
                final Icon icon = notification.getLargeIcon();
                if (icon == null) {
                    break;
                }
                return IconCompat.createFromIcon(icon);
            }
        }
        return null;
+19 −0
Original line number Diff line number Diff line
@@ -446,6 +446,25 @@ public class MediaOutputControllerTest extends SysuiTestCase {
        assertThat(mMediaOutputController.getNotificationIcon()).isNull();
    }

    @Test
    public void getNotificationLargeIcon_withoutLargeIcon_returnsNull() {
        final List<NotificationEntry> entryList = new ArrayList<>();
        final NotificationEntry entry = mock(NotificationEntry.class);
        final StatusBarNotification sbn = mock(StatusBarNotification.class);
        final Notification notification = mock(Notification.class);
        entryList.add(entry);

        when(mNotificationEntryManager.getActiveNotificationsForCurrentUser())
                .thenReturn(entryList);
        when(entry.getSbn()).thenReturn(sbn);
        when(sbn.getNotification()).thenReturn(notification);
        when(sbn.getPackageName()).thenReturn(TEST_PACKAGE_NAME);
        when(notification.hasMediaSession()).thenReturn(true);
        when(notification.getLargeIcon()).thenReturn(null);

        assertThat(mMediaOutputController.getNotificationIcon()).isNull();
    }

    @Test
    public void getNotificationLargeIcon_withPackageNameAndMediaSession_returnsIconCompat() {
        final List<NotificationEntry> entryList = new ArrayList<>();