Use default icon if notification icon is null.

This could happen, for instance, if there is a
ResourcesNotFoundException when loading the icon.

Bug: 36134256
Change-Id: If2d13207252a2ec46f581455f5709a95d68f29c1
diff --git a/src/com/android/launcher3/notification/NotificationInfo.java b/src/com/android/launcher3/notification/NotificationInfo.java
index 77a18c7..58e2e03 100644
--- a/src/com/android/launcher3/notification/NotificationInfo.java
+++ b/src/com/android/launcher3/notification/NotificationInfo.java
@@ -20,6 +20,7 @@
 import android.app.Notification;
 import android.app.PendingIntent;
 import android.content.Context;
+import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.Icon;
 import android.os.Bundle;
@@ -27,6 +28,7 @@
 import android.view.View;
 
 import com.android.launcher3.Launcher;
+import com.android.launcher3.LauncherAppState;
 import com.android.launcher3.graphics.IconPalette;
 import com.android.launcher3.popup.PopupContainerWithArrow;
 import com.android.launcher3.util.PackageUserKey;
@@ -53,8 +55,8 @@
     public final boolean autoCancel;
     public final boolean dismissable;
 
-    private final int mBadgeIcon;
-    private final Drawable mIconDrawable;
+    private int mBadgeIcon;
+    private Drawable mIconDrawable;
     private int mIconColor;
     private boolean mIsIconLarge;
 
@@ -82,6 +84,12 @@
             mIconDrawable = icon.loadDrawable(context);
             mIsIconLarge = true;
         }
+        if (mIconDrawable == null) {
+            mIconDrawable = new BitmapDrawable(context.getResources(), LauncherAppState
+                    .getInstance(context).getIconCache()
+                    .getDefaultIcon(statusBarNotification.getUser()));
+            mBadgeIcon = BADGE_ICON_NONE;
+        }
         intent = notification.contentIntent;
         autoCancel = (notification.flags & Notification.FLAG_AUTO_CANCEL) != 0;
         dismissable = (notification.flags & Notification.FLAG_ONGOING_EVENT) == 0;