Add logging for Folder drag issues

Drags out of Folders are getting lost, adding
debug code to see if the uninstall logic is
causing that

Also, fixing one potential cause of the issue

Change-Id: I0b6a91268571c2a9394e0d6f19fb9d324b427b51
diff --git a/src/com/android/launcher3/DeleteDropTarget.java b/src/com/android/launcher3/DeleteDropTarget.java
index c98f761..01edb9e 100644
--- a/src/com/android/launcher3/DeleteDropTarget.java
+++ b/src/com/android/launcher3/DeleteDropTarget.java
@@ -253,7 +253,7 @@
          return AppsCustomizePagedView.DISABLE_ALL_APPS && isWorkspaceOrFolderApplication(d);
     }
 
-    private void completeDrop(final DragObject d) {
+    private void completeDrop(DragObject d) {
         ItemInfo item = (ItemInfo) d.dragInfo;
         boolean wasWaitingForUninstall = mWaitingForUninstall;
         mWaitingForUninstall = false;
@@ -264,11 +264,32 @@
         } else if (AppsCustomizePagedView.DISABLE_ALL_APPS && isWorkspaceOrFolderApplication(d)) {
             ShortcutInfo shortcut = (ShortcutInfo) item;
             if (shortcut.intent != null && shortcut.intent.getComponent() != null) {
-                ComponentName componentName = shortcut.intent.getComponent();
+                final ComponentName componentName = shortcut.intent.getComponent();
+                final DragSource dragSource = d.dragSource;
                 int flags = ApplicationInfo.initFlags(
                     ShortcutInfo.getPackageInfo(getContext(), componentName.getPackageName()));
                 mWaitingForUninstall =
                     mLauncher.startApplicationUninstallActivity(componentName, flags);
+                if (mWaitingForUninstall) {
+                    final Runnable checkIfUninstallWasSuccess = new Runnable() {
+                        @Override
+                        public void run() {
+                            mWaitingForUninstall = false;
+                            String packageName = componentName.getPackageName();
+                            List<ResolveInfo> activities =
+                                    AllAppsList.findActivitiesForPackage(getContext(), packageName);
+                            boolean uninstallSuccessful = activities.size() == 0;
+                            if (dragSource instanceof Folder) {
+                                ((Folder) dragSource).
+                                    onUninstallActivityReturned(uninstallSuccessful);
+                            } else if (dragSource instanceof Workspace) {
+                                ((Workspace) dragSource).
+                                    onUninstallActivityReturned(uninstallSuccessful);
+                            }
+                        }
+                    };
+                    mLauncher.addOnResumeCallback(checkIfUninstallWasSuccess);
+                }
             }
         } else if (isWorkspaceOrFolderApplication(d)) {
             LauncherModel.deleteItemFromDatabase(mLauncher, item);
@@ -301,30 +322,6 @@
                 ((Workspace) d.dragSource).onUninstallActivityReturned(false);
             }
         }
-        if (mWaitingForUninstall) {
-            final Runnable checkIfUninstallWasSuccess = new Runnable() {
-                    @Override
-                        public void run() {
-                        mWaitingForUninstall = false;
-                        ShortcutInfo shortcut = (ShortcutInfo) d.dragInfo;
-                        if (shortcut.intent != null && shortcut.intent.getComponent() != null) {
-                            String packageName = shortcut.intent.getComponent().getPackageName();
-                            List<ResolveInfo> activities =
-                                AllAppsList.findActivitiesForPackage(getContext(), packageName);
-                            boolean uninstallSuccessful = activities.size() == 0;
-                              mLauncher.removeOnResumeCallback(this);
-                              if (d.dragSource instanceof Folder) {
-                                  ((Folder) d.dragSource).
-                                      onUninstallActivityReturned(uninstallSuccessful);
-                              } else if (d.dragSource instanceof Workspace) {
-                                  ((Workspace) d.dragSource).
-                                      onUninstallActivityReturned(uninstallSuccessful);
-                              }
-                        }
-                    }
-                };
-            mLauncher.addOnResumeCallback(checkIfUninstallWasSuccess);
-        }
     }
 
     public void onDrop(DragObject d) {
diff --git a/src/com/android/launcher3/Folder.java b/src/com/android/launcher3/Folder.java
index f23e1bb..d428abc 100644
--- a/src/com/android/launcher3/Folder.java
+++ b/src/com/android/launcher3/Folder.java
@@ -725,6 +725,7 @@
     public void onDropCompleted(final View target, final DragObject d,
             final boolean isFlingToDelete, final boolean success) {
         if (mDeferDropAfterUninstall) {
+            Log.d(TAG, "Deferred handling drop because waiting for uninstall.");
             mDeferredAction = new Runnable() {
                     public void run() {
                         onDropCompleted(target, d, isFlingToDelete, success);
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index a16a33e..71054ff 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -3457,10 +3457,6 @@
         mOnResumeCallbacks.add(run);
     }
 
-    public void removeOnResumeCallback(Runnable run) {
-        mOnResumeCallbacks.remove(run);
-    }
-
     /**
      * If the activity is currently paused, signal that we need to re-run the loader
      * in onResume.