From 5356ff955c5acbc7640474142013b7ec0b7fdc17 Mon Sep 17 00:00:00 2001 From: Sebastian Franco Date: Mon, 5 Dec 2022 16:16:45 -0800 Subject: [PATCH] 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 --- src/com/android/launcher3/Workspace.java | 2 +- .../launcher3/celllayout/ReorderWidgets.java | 13 ++++------- .../celllayout/testcases/FullReorderCase.java | 23 ++++++++++++++++++- 3 files changed, 27 insertions(+), 11 deletions(-) diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index fd670c1707..483309d1cf 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -2392,10 +2392,10 @@ public class Workspace extends PagedView 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 d3b6d379a4..a8753ed135 100644 --- a/tests/src/com/android/launcher3/celllayout/ReorderWidgets.java +++ b/tests/src/com/android/launcher3/celllayout/ReorderWidgets.java @@ -41,7 +41,6 @@ import com.android.launcher3.widget.LauncherAppWidgetHostView; 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 @@ public class ReorderWidgets extends AbstractLauncherUiTest { 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 a98882cc7f..d68d2ede61 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 @@ public class FullReorderCase { 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 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); }