Guard against NPE

Test: atest; manually ensure that icons still work when
using SystemUI's context
Fixes: 192575971

Change-Id: I3c93d4898a6995148606b15fc8bd98d465741c0a
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java
index a00d014..5302188 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java
@@ -416,10 +416,12 @@
         return mIcon.icon;
     }
 
-    private Drawable getIcon(StatusBarIcon icon) {
-        Context notifContext = mNotification != null ?
-                mNotification.getPackageContext(getContext()) : getContext();
-        return getIcon(getContext(), notifContext, icon);
+    Drawable getIcon(StatusBarIcon icon) {
+        Context notifContext = getContext();
+        if (mNotification != null) {
+            notifContext = mNotification.getPackageContext(getContext());
+        }
+        return getIcon(getContext(), notifContext != null ? notifContext : getContext(), icon);
     }
 
     /**
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/StatusBarIconViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/StatusBarIconViewTest.java
index 7c819f5..85ea52b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/StatusBarIconViewTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/StatusBarIconViewTest.java
@@ -39,6 +39,7 @@
 import android.graphics.Color;
 import android.graphics.drawable.Icon;
 import android.os.UserHandle;
+import android.service.notification.StatusBarNotification;
 
 import androidx.test.filters.SmallTest;
 import androidx.test.runner.AndroidJUnit4;
@@ -131,4 +132,19 @@
                 icon, 0, 0, "");
         assertFalse(mIconView.set(largeIcon));
     }
+
+    @Test
+    public void testNullNotifInfo() {
+        Bitmap bitmap = Bitmap.createBitmap(60, 60, Bitmap.Config.ARGB_8888);
+        Icon icon = Icon.createWithBitmap(bitmap);
+        StatusBarIcon largeIcon = new StatusBarIcon(UserHandle.ALL, "mockPackage",
+                icon, 0, 0, "");
+        mIconView.setNotification(mock(StatusBarNotification.class));
+        mIconView.getIcon(largeIcon);
+        // no crash? good
+
+        mIconView.setNotification(null);
+        mIconView.getIcon(largeIcon);
+        // no crash? good
+    }
 }
\ No newline at end of file