Tying accessibility drag lifecycle to that of dragController

Bug: 20865291
Change-Id: I1e0aceb20efcf4c32d76a656c499a1a4a5a32a65
diff --git a/src/com/android/launcher3/accessibility/LauncherAccessibilityDelegate.java b/src/com/android/launcher3/accessibility/LauncherAccessibilityDelegate.java
index 3c49ccc..fe7b25e 100644
--- a/src/com/android/launcher3/accessibility/LauncherAccessibilityDelegate.java
+++ b/src/com/android/launcher3/accessibility/LauncherAccessibilityDelegate.java
@@ -20,6 +20,8 @@
 import com.android.launcher3.AppWidgetResizeFrame;
 import com.android.launcher3.CellLayout;
 import com.android.launcher3.DeleteDropTarget;
+import com.android.launcher3.DragController.DragListener;
+import com.android.launcher3.DragSource;
 import com.android.launcher3.Folder;
 import com.android.launcher3.FolderInfo;
 import com.android.launcher3.InfoDropTarget;
@@ -39,7 +41,7 @@
 import java.util.ArrayList;
 
 @TargetApi(Build.VERSION_CODES.LOLLIPOP)
-public class LauncherAccessibilityDelegate extends AccessibilityDelegate {
+public class LauncherAccessibilityDelegate extends AccessibilityDelegate implements DragListener {
 
     private static final String TAG = "LauncherAccessibilityDelegate";
 
@@ -328,7 +330,6 @@
         mLauncher.getDragLayer().getDescendantCoordRelativeToSelf(clickedTarget, loc);
         mLauncher.getDragController().completeAccessibleDrag(loc);
 
-        endAccessibleDrag();
         if (!TextUtils.isEmpty(confirmation)) {
             announceConfirmation(confirmation);
         }
@@ -366,22 +367,21 @@
         }
         mDragSource.enableAccessibleDrag(true);
         mDragSource.startDrag(cellInfo, true);
-    }
 
-    public boolean onBackPressed() {
-        if (isInAccessibleDrag()) {
-            cancelAccessibleDrag();
-            return true;
+        if (mLauncher.getDragController().isDragging()) {
+            mLauncher.getDragController().addDragListener(this);
         }
-        return false;
     }
 
-    private void cancelAccessibleDrag() {
-        mLauncher.getDragController().cancelDrag();
-        endAccessibleDrag();
+
+    @Override
+    public void onDragStart(DragSource source, Object info, int dragAction) {
+        // No-op
     }
 
-    private void endAccessibleDrag() {
+    @Override
+    public void onDragEnd() {
+        mLauncher.getDragController().removeDragListener(this);
         mDragInfo = null;
         if (mDragSource != null) {
             mDragSource.enableAccessibleDrag(false);