Fixing issue where updating the visibility of one application can trigger all icons to disappear. (Bug 8757421)

- Also queueing bindComponentsRemoved() and bindPackagesUpdated() to wait for resume (Bug 8594153)

Change-Id: I44028fe79f6fa6bcd6b829e36f3f5b9ed756dc4d
diff --git a/src/com/android/launcher2/DragController.java b/src/com/android/launcher2/DragController.java
index 78afe57..d15cb6e 100644
--- a/src/com/android/launcher2/DragController.java
+++ b/src/com/android/launcher2/DragController.java
@@ -328,18 +328,19 @@
         }
         endDrag();
     }
-    public void onAppsRemoved(ArrayList<String> packageNames, Context context) {
+    public void onAppsRemoved(ArrayList<ApplicationInfo> appInfos, Context context) {
         // Cancel the current drag if we are removing an app that we are dragging
         if (mDragObject != null) {
             Object rawDragInfo = mDragObject.dragInfo;
             if (rawDragInfo instanceof ShortcutInfo) {
                 ShortcutInfo dragInfo = (ShortcutInfo) rawDragInfo;
-                for (String pn : packageNames) {
+                for (ApplicationInfo info : appInfos) {
                     // Added null checks to prevent NPE we've seen in the wild
                     if (dragInfo != null &&
                         dragInfo.intent != null) {
-                        boolean isSamePackage = dragInfo.getPackageName().equals(pn);
-                        if (isSamePackage) {
+                        boolean isSameComponent =
+                                dragInfo.intent.getComponent().equals(info.componentName);
+                        if (isSameComponent) {
                             cancelDrag();
                             return;
                         }