DO NOT MERGE - Fix 2941495: Launcher short-cut icons don't work for apps on SD card after reboot

Bug: 2941495
Change-Id: Idf1869d33cd5c01abea5b059ca466529cee0ad93
diff --git a/src/com/android/launcher2/IconCache.java b/src/com/android/launcher2/IconCache.java
index 4bb7d08..81a786c 100644
--- a/src/com/android/launcher2/IconCache.java
+++ b/src/com/android/launcher2/IconCache.java
@@ -124,6 +124,10 @@
         }
     }
 
+    public boolean isDefaultIcon(Bitmap icon) {
+        return mDefaultIcon == icon;
+    }
+
     private CacheEntry cacheLocked(ComponentName componentName, ResolveInfo info) {
         CacheEntry entry = mCache.get(componentName);
         if (entry == null) {
diff --git a/src/com/android/launcher2/LauncherModel.java b/src/com/android/launcher2/LauncherModel.java
index eb341f6..c1ecf50 100644
--- a/src/com/android/launcher2/LauncherModel.java
+++ b/src/com/android/launcher2/LauncherModel.java
@@ -1490,7 +1490,7 @@
         // into the DB.  We do this so when we're loading, if the
         // package manager can't find an icon (for example because
         // the app is on SD) then we can use that instead.
-        if (info.onExternalStorage && !info.customIcon && !info.usingFallbackIcon) {
+        if (!info.customIcon && !info.usingFallbackIcon) {
             boolean needSave;
             byte[] data = c.getBlob(iconIndex);
             try {
diff --git a/src/com/android/launcher2/ShortcutInfo.java b/src/com/android/launcher2/ShortcutInfo.java
index 5c322ba..2c5aec4 100644
--- a/src/com/android/launcher2/ShortcutInfo.java
+++ b/src/com/android/launcher2/ShortcutInfo.java
@@ -54,11 +54,6 @@
     boolean usingFallbackIcon;
 
     /**
-     * Indicates whether the shortcut is on external storage and may go away at any time.
-     */
-    boolean onExternalStorage;
-
-    /**
      * If isShortcut=true and customIcon=false, this contains a reference to the
      * shortcut icon as an application's resource.
      */
@@ -101,6 +96,7 @@
     public Bitmap getIcon(IconCache iconCache) {
         if (mIcon == null) {
             mIcon = iconCache.getIcon(this.intent);
+            this.usingFallbackIcon = iconCache.isDefaultIcon(mIcon);
         }
         return mIcon;
     }
@@ -135,7 +131,7 @@
                     LauncherSettings.BaseLauncherColumns.ICON_TYPE_BITMAP);
             writeBitmap(values, mIcon);
         } else {
-            if (onExternalStorage && !usingFallbackIcon) {
+            if (!usingFallbackIcon) {
                 writeBitmap(values, mIcon);
             }
             values.put(LauncherSettings.BaseLauncherColumns.ICON_TYPE,