Guard against NPE

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

Change-Id: I3c93d4898a6995148606b15fc8bd98d465741c0a
This commit is contained in:
Julia Reynolds
2021-07-09 13:05:29 -04:00
parent f36c575bee
commit eb505a200c
2 changed files with 22 additions and 4 deletions

View File

@@ -416,10 +416,12 @@ public class StatusBarIconView extends AnimatedImageView implements StatusIconDi
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);
}
/**

View File

@@ -39,6 +39,7 @@ import android.graphics.Bitmap;
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 @@ public class StatusBarIconViewTest extends SysuiTestCase {
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
}
}