Creating a new alarm when drag X,Y change

If the user is changing the X and Y of the reorder, wich requires
the user to move at least one Workspace cell from the previous
position, then it doesn't make sense to wait for the previous alarm to finish
to start a new reorder.

Also, I added a new test to run on foldable devices.

Fix: 259995663
Fix: 259295374
Test: atest ReorderWidgets (it mostly fails on postsubmit)
Test: modify ReorderWidgets.fullReorder to run 20 times and it should work, before the chagne it would fail.
Change-Id: Ic6b436ea1088f8092c849e9791862947e9035c9f
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index fd670c1..483309d 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -2392,10 +2392,10 @@
             mDragTargetLayout.visualizeDropLocation(mTargetCell[0], mTargetCell[1],
                     item.spanX, item.spanY, d);
         } else if ((mDragMode == DRAG_MODE_NONE || mDragMode == DRAG_MODE_REORDER)
-                && !mReorderAlarm.alarmPending()
                 && (mLastReorderX != reorderX || mLastReorderY != reorderY)
                 && targetCellDistance < mDragTargetLayout.getReorderRadius(mTargetCell, item.spanX,
                 item.spanY)) {
+            mReorderAlarm.cancelAlarm();
             mLastReorderX = reorderX;
             mLastReorderY = reorderY;
             mDragTargetLayout.performReorder((int) mDragViewVisualCenter[0],
diff --git a/tests/src/com/android/launcher3/celllayout/ReorderWidgets.java b/tests/src/com/android/launcher3/celllayout/ReorderWidgets.java
index d3b6d37..a8753ed 100644
--- a/tests/src/com/android/launcher3/celllayout/ReorderWidgets.java
+++ b/tests/src/com/android/launcher3/celllayout/ReorderWidgets.java
@@ -41,7 +41,6 @@
 
 import org.junit.Assume;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -145,28 +144,24 @@
         runTestCase(testCaseMap.get(iconGridDimensions));
     }
 
-    @Ignore //b/261178121
     @Test
-    public void simpleReorder()  throws ExecutionException, InterruptedException {
+    public void simpleReorder() throws ExecutionException, InterruptedException {
         runTestCaseMap(SimpleReorderCase.TEST_BY_GRID_SIZE,
                 SimpleReorderCase.class.getSimpleName());
     }
 
-    @Ignore //b/261178121
     @Test
-    public void pushTest()  throws ExecutionException, InterruptedException {
+    public void pushTest() throws ExecutionException, InterruptedException {
         runTestCaseMap(PushReorderCase.TEST_BY_GRID_SIZE, PushReorderCase.class.getSimpleName());
     }
 
-    @Ignore //b/261178121
     @Test
-    public void fullReorder()  throws ExecutionException, InterruptedException {
+    public void fullReorder() throws ExecutionException, InterruptedException {
         runTestCaseMap(FullReorderCase.TEST_BY_GRID_SIZE, FullReorderCase.class.getSimpleName());
     }
 
-    @Ignore //b/261178121
     @Test
-    public void moveOutReorder()  throws ExecutionException, InterruptedException {
+    public void moveOutReorder() throws ExecutionException, InterruptedException {
         runTestCaseMap(MoveOutReorderCase.TEST_BY_GRID_SIZE,
                 MoveOutReorderCase.class.getSimpleName());
     }
diff --git a/tests/src/com/android/launcher3/celllayout/testcases/FullReorderCase.java b/tests/src/com/android/launcher3/celllayout/testcases/FullReorderCase.java
index a98882c..d68d2ed 100644
--- a/tests/src/com/android/launcher3/celllayout/testcases/FullReorderCase.java
+++ b/tests/src/com/android/launcher3/celllayout/testcases/FullReorderCase.java
@@ -81,8 +81,29 @@
             MOVE_TO_4x4,
             END_BOARD_STR_4x4);
 
+    /** 4x4 Test
+     **/
+    private static final String START_BOARD_STR_4x5 = ""
+            + "xxxx\n"
+            + "22mm\n"
+            + "iimm\n"
+            + "ii11\n"
+            + "ii11";
+    private static final Point MOVE_TO_4x5 = new Point(0, 3);
+    private static final String END_BOARD_STR_4x5 = ""
+            + "xxxx\n"
+            + "22ii\n"
+            + "mmii\n"
+            + "mm11\n"
+            + "ii11";
+
+    private static final ReorderTestCase TEST_CASE_4x5 = new ReorderTestCase(START_BOARD_STR_4x5,
+            MOVE_TO_4x5,
+            END_BOARD_STR_4x5);
+
     public static final Map<Point, ReorderTestCase> TEST_BY_GRID_SIZE =
             Map.of(new Point(5, 5), TEST_CASE_5x5,
                     new Point(6, 5), TEST_CASE_6x5,
-                    new Point(4, 4), TEST_CASE_4x4);
+                    new Point(4, 4), TEST_CASE_4x4,
+                    new Point(4, 5), TEST_CASE_4x5);
 }