Merge "Always pass DragEvents to the underlying DirFragment's ItemDragListener." into nyc-andromeda-dev
diff --git a/src/com/android/documentsui/dirlist/DragHoverListener.java b/src/com/android/documentsui/dirlist/DragHoverListener.java
index ae13d97..6b694e1 100644
--- a/src/com/android/documentsui/dirlist/DragHoverListener.java
+++ b/src/com/android/documentsui/dirlist/DragHoverListener.java
@@ -124,7 +124,6 @@
 
     @Override
     public boolean onDrag(View v, DragEvent event) {
-        boolean handled = false;
         switch (event.getAction()) {
             case DragEvent.ACTION_DRAG_STARTED:
                 mDragHappening = true;
@@ -132,21 +131,15 @@
             case DragEvent.ACTION_DRAG_ENDED:
                 mDragHappening = false;
                 break;
-            case DragEvent.ACTION_DRAG_ENTERED:
-                handled = insideDragZone();
-                break;
             case DragEvent.ACTION_DRAG_LOCATION:
-                handled = handleLocationEvent(v, event.getX(), event.getY());
+                handleLocationEvent(v, event.getX(), event.getY());
                 break;
             default:
                 break;
         }
 
-        if (!handled) {
-            handled = mDragHandler.onDrag(v, event);
-        }
-
-        return handled;
+        // Always forward events to the drag handler for item highlight, spring load, etc.
+        return mDragHandler.onDrag(v, event);
     }
 
     private boolean handleLocationEvent(View v, float x, float y) {
diff --git a/tests/unit/com/android/documentsui/dirlist/DragScrollListenerTest.java b/tests/unit/com/android/documentsui/dirlist/DragScrollListenerTest.java
index 46d9c67..27479ed 100644
--- a/tests/unit/com/android/documentsui/dirlist/DragScrollListenerTest.java
+++ b/tests/unit/com/android/documentsui/dirlist/DragScrollListenerTest.java
@@ -104,6 +104,12 @@
         triggerDragLocationEvent(0, BOTTOM_Y_POINT);
         assertTrue(mDragHandler.mLastDropEvent.getAction() == DragEvent.ACTION_DRAG_LOCATION);
 
+        triggerDragLocationEvent(0, TOP_Y_POINT);
+        assertTrue(mDragHandler.mLastDropEvent.getAction() == DragEvent.ACTION_DRAG_LOCATION);
+
+        triggerDragLocationEvent(0, BOTTOM_Y_POINT);
+        assertTrue(mDragHandler.mLastDropEvent.getAction() == DragEvent.ACTION_DRAG_LOCATION);
+
         triggerDragEvent(DragEvent.ACTION_DRAG_ENDED);
     }
 
@@ -134,18 +140,6 @@
         triggerDragEvent(DragEvent.ACTION_DRAG_ENDED);
     }
 
-    // Make sure given correct location/enter events, DragScrollListener handle them itself
-    @Test
-    public void testDragScrollEvent_Handled() {
-        triggerDragLocationEvent(0, TOP_Y_POINT);
-        triggerDragEvent(DragEvent.ACTION_DRAG_ENTERED);
-        assertTrue(mDragHandler.mLastDropEvent == null);
-
-        triggerDragLocationEvent(0, BOTTOM_Y_POINT);
-        triggerDragEvent(DragEvent.ACTION_DRAG_ENTERED);
-        assertTrue(mDragHandler.mLastDropEvent == null);
-    }
-
     // A correct Auto-scroll happens in the sequence of:
     // Started -> LocationChanged -> Scroll -> Enter -> Exit
     // This test to make sure scroll actually happens in the right direction given correct sequence
@@ -155,14 +149,12 @@
 
         triggerDragLocationEvent(0, TOP_Y_POINT);
         triggerDragEvent(DragEvent.ACTION_DRAG_ENTERED);
-        assertTrue(mDragHandler.mLastDropEvent.getAction() == DragEvent.ACTION_DRAG_STARTED);
         mActionDelegate.assertScrollNegative();
 
         triggerDragLocationEvent(0, BOTTOM_Y_POINT);
         triggerDragEvent(DragEvent.ACTION_DRAG_ENTERED);
 
         triggerDragEvent(DragEvent.ACTION_DRAG_ENDED);
-        assertTrue(mDragHandler.mLastDropEvent.getAction() == DragEvent.ACTION_DRAG_ENDED);
         mActionDelegate.assertScrollPositive();
     }