From f3007589e346df224d357b389069adfeb266545e Mon Sep 17 00:00:00 2001 From: Michael Jurka Date: Wed, 21 Aug 2013 14:33:57 +0200 Subject: [PATCH] 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 --- .../android/launcher3/DeleteDropTarget.java | 49 +++++++++---------- src/com/android/launcher3/Folder.java | 1 + src/com/android/launcher3/Launcher.java | 4 -- 3 files changed, 24 insertions(+), 30 deletions(-) diff --git a/src/com/android/launcher3/DeleteDropTarget.java b/src/com/android/launcher3/DeleteDropTarget.java index c98f761f29..01edb9eb67 100644 --- a/src/com/android/launcher3/DeleteDropTarget.java +++ b/src/com/android/launcher3/DeleteDropTarget.java @@ -253,7 +253,7 @@ public class DeleteDropTarget extends ButtonDropTarget { 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 @@ public class DeleteDropTarget extends ButtonDropTarget { } 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 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 @@ public class DeleteDropTarget extends ButtonDropTarget { ((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 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 f23e1bb39c..d428abc2ce 100644 --- a/src/com/android/launcher3/Folder.java +++ b/src/com/android/launcher3/Folder.java @@ -725,6 +725,7 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList 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 a16a33e587..71054ffc58 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -3457,10 +3457,6 @@ public class Launcher extends Activity 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.