Merge "Don't use a More Apps folder." into jb-ub-gel-agar
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 b7d7a2a..d91fee8 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.