Merge "Fixing crash upon cancellation of an accessible drag." into ub-launcher3-master
diff --git a/src/com/android/launcher3/LauncherBackupAgentHelper.java b/src/com/android/launcher3/LauncherBackupAgentHelper.java
index 611ab2e..3debef6 100644
--- a/src/com/android/launcher3/LauncherBackupAgentHelper.java
+++ b/src/com/android/launcher3/LauncherBackupAgentHelper.java
@@ -98,7 +98,7 @@
                 LauncherAppState.getLauncherProvider().updateFolderItemsRank();
             }
 
-            if (mHelper.shouldAttemptWorkspaceMigration()) {
+            if (MigrateFromRestoreTask.ENABLED && mHelper.shouldAttemptWorkspaceMigration()) {
                 MigrateFromRestoreTask.markForMigration(getApplicationContext(),
                         (int) mHelper.migrationCompatibleProfileData.desktopCols,
                         (int) mHelper.migrationCompatibleProfileData.desktopRows,
diff --git a/src/com/android/launcher3/LauncherBackupHelper.java b/src/com/android/launcher3/LauncherBackupHelper.java
index 136556b..2d11d3a 100644
--- a/src/com/android/launcher3/LauncherBackupHelper.java
+++ b/src/com/android/launcher3/LauncherBackupHelper.java
@@ -52,6 +52,7 @@
 import com.android.launcher3.backup.BackupProtos.Widget;
 import com.android.launcher3.compat.UserHandleCompat;
 import com.android.launcher3.compat.UserManagerCompat;
+import com.android.launcher3.model.MigrateFromRestoreTask;
 import com.android.launcher3.util.Thunk;
 import com.google.protobuf.nano.InvalidProtocolBufferNanoException;
 import com.google.protobuf.nano.MessageNano;
@@ -314,7 +315,8 @@
             return true;
         }
 
-        if ((oldProfile.desktopCols - currentProfile.desktopCols <= 1) &&
+        if (MigrateFromRestoreTask.ENABLED &&
+                (oldProfile.desktopCols - currentProfile.desktopCols <= 1) &&
                 (oldProfile.desktopRows - currentProfile.desktopRows <= 1)) {
             // Allow desktop migration when row and/or column count contracts by 1.
 
diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java
index 43f92c4..c3b66ec 100644
--- a/src/com/android/launcher3/LauncherModel.java
+++ b/src/com/android/launcher3/LauncherModel.java
@@ -1753,8 +1753,7 @@
             int countX = (int) profile.numColumns;
             int countY = (int) profile.numRows;
 
-
-            if (MigrateFromRestoreTask.shouldRunTask(mContext)) {
+            if (MigrateFromRestoreTask.ENABLED && MigrateFromRestoreTask.shouldRunTask(mContext)) {
                 long migrationStartTime = System.currentTimeMillis();
                 Log.v(TAG, "Starting workspace migration after restore");
                 try {
diff --git a/src/com/android/launcher3/PreloadIconDrawable.java b/src/com/android/launcher3/PreloadIconDrawable.java
index bcb59c4..45e4b2c 100644
--- a/src/com/android/launcher3/PreloadIconDrawable.java
+++ b/src/com/android/launcher3/PreloadIconDrawable.java
@@ -213,6 +213,10 @@
         return mAnimationProgress;
     }
 
+    public boolean hasNotCompleted() {
+        return mAnimationProgress < ANIMATION_PROGRESS_COMPLETED;
+    }
+
     @Override
     public int getIntrinsicHeight() {
         return mIcon.getIntrinsicHeight();
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index 7a31300..d3c7a1d 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -4301,8 +4301,9 @@
                         updates.contains(info)) {
                     ShortcutInfo si = (ShortcutInfo) info;
                     BubbleTextView shortcut = (BubbleTextView) v;
-                    boolean oldPromiseState = getTextViewIcon(shortcut)
-                            instanceof PreloadIconDrawable;
+                    Drawable oldIcon = getTextViewIcon(shortcut);
+                    boolean oldPromiseState = (oldIcon instanceof PreloadIconDrawable)
+                            && ((PreloadIconDrawable) oldIcon).hasNotCompleted();
                     shortcut.applyFromShortcutInfo(si, mIconCache,
                             si.isPromise() != oldPromiseState);
 
diff --git a/src/com/android/launcher3/model/MigrateFromRestoreTask.java b/src/com/android/launcher3/model/MigrateFromRestoreTask.java
index 8d4472f..6a529f6 100644
--- a/src/com/android/launcher3/model/MigrateFromRestoreTask.java
+++ b/src/com/android/launcher3/model/MigrateFromRestoreTask.java
@@ -37,6 +37,8 @@
  */
 public class MigrateFromRestoreTask {
 
+    public static boolean ENABLED = false;
+
     private static final String TAG = "MigrateFromRestoreTask";
     private static final boolean DEBUG = true;