Merge "Remove heuristic that determines whether to shift cells down or not" into main
diff --git a/src/com/android/launcher3/model/GridSizeMigrationDBController.java b/src/com/android/launcher3/model/GridSizeMigrationDBController.java
index 0732379..8cbe764 100644
--- a/src/com/android/launcher3/model/GridSizeMigrationDBController.java
+++ b/src/com/android/launcher3/model/GridSizeMigrationDBController.java
@@ -140,22 +140,13 @@
try (SQLiteTransaction t = new SQLiteTransaction(target.getWritableDatabase())) {
if (shouldMigrateToStrictlyTallerGrid) {
- // This is a special case where if the grid is the same amount of columns but a
- // larger amount of rows we simply copy over the source grid to the destination
- // grid, rather than undergoing the general grid migration. If there are more icons
- // on the bottom of the first page then we shift the icons down to the bottom of the
- // grid so that the icons remain bottom-anchored.
+ // We want to add the extra row(s) to the top of the screen, so we shift the grid
+ // down.
if (oneGridSpecs()) {
- DbReader destReader = new DbReader(
- target.getWritableDatabase(), TABLE_NAME, context);
- boolean shouldShiftCells =
- shouldShiftCells(destReader, srcDeviceState.getRows());
- if (shouldShiftCells) {
- shiftTableByXCells(
- target.getWritableDatabase(),
- (destDeviceState.getRows() - srcDeviceState.getRows()),
- TABLE_NAME);
- }
+ shiftTableByXCells(
+ target.getWritableDatabase(),
+ (destDeviceState.getRows() - srcDeviceState.getRows()),
+ TABLE_NAME);
}
// Save current configuration, so that the migration does not run again.
@@ -455,22 +446,6 @@
}
}
- private static boolean shouldShiftCells(final DbReader destReader, final int srcGridRowCount) {
- List<DbEntry> workspaceItems = destReader.loadAllWorkspaceEntries();
- int firstPageItemsRowPosSum = workspaceItems.stream()
- .filter(entry -> entry.screenId == 0)
- .mapToInt(entry -> entry.cellY).sum();
- int firstPageWorkspaceItemsCount = (int) workspaceItems.stream()
- .filter(entry -> entry.screenId == 0).count();
- if (firstPageWorkspaceItemsCount == 0) {
- return false;
- }
- float srcGridMidPoint = srcGridRowCount / 2f;
- float firstPageItemPosAvg = (float) firstPageItemsRowPosSum / firstPageWorkspaceItemsCount;
- return (firstPageItemPosAvg >= srcGridMidPoint);
- }
-
-
@VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
public static class DbReader {
diff --git a/src/com/android/launcher3/model/GridSizeMigrationLogic.kt b/src/com/android/launcher3/model/GridSizeMigrationLogic.kt
index 1729153..dfda8e4 100644
--- a/src/com/android/launcher3/model/GridSizeMigrationLogic.kt
+++ b/src/com/android/launcher3/model/GridSizeMigrationLogic.kt
@@ -77,24 +77,16 @@
val migrationStartTime = System.currentTimeMillis()
try {
SQLiteTransaction(target.writableDatabase).use { t ->
- // This is a special case where if the grid is the same amount of columns but a
- // larger amount of rows we simply copy over the source grid to the destination
- // grid, rather than undergoing the general grid migration. If there are more icons
- // on the bottom of the first page then we shift the icons down to the bottom of the
- // grid so that the icons remain bottom-anchored.
+ // We want to add the extra row(s) to the top of the screen, so we shift the grid
+ // down.
if (shouldMigrateToStrtictlyTallerGrid) {
Log.d(TAG, "Migrating to strictly taller grid")
if (oneGridSpecs()) {
- val destReader = DbReader(target.writableDatabase, TABLE_NAME, context)
- val shouldShiftCells = shouldShiftCells(destReader, srcDeviceState.rows)
- if (shouldShiftCells) {
- Log.i("TAGTAG", "should shift cells")
- shiftTableByXCells(
- target.writableDatabase,
- (destDeviceState.rows - srcDeviceState.rows),
- TABLE_NAME,
- )
- }
+ shiftTableByXCells(
+ target.writableDatabase,
+ (destDeviceState.rows - srcDeviceState.rows),
+ TABLE_NAME,
+ )
}
// Save current configuration, so that the migration does not run again.
destDeviceState.writeToPrefs(context)
@@ -139,19 +131,6 @@
}
}
- private fun shouldShiftCells(destReader: DbReader, srcGridRowCount: Int): Boolean {
- val workspaceItems = destReader.loadAllWorkspaceEntries()
- val firstPageItemsRowPosSum =
- workspaceItems.sumOf { entry -> if (entry.screenId == 0) entry.cellY else 0 }
- val firstPageWorkspaceItemsCount = workspaceItems.count { entry -> entry.screenId == 0 }
- if (firstPageWorkspaceItemsCount == 0) {
- return false
- }
- val srcGridMidPoint = srcGridRowCount / 2f
- val firstPageItemPosAvg = firstPageItemsRowPosSum / firstPageWorkspaceItemsCount.toFloat()
- return (firstPageItemPosAvg >= srcGridMidPoint)
- }
-
/** Handles hotseat migration. */
@VisibleForTesting
fun migrateHotseat(
diff --git a/tests/assets/databases/GridMigrationTest/result5x5to5x8.db b/tests/assets/databases/GridMigrationTest/result5x5to5x8.db
index 311a112..d750774 100644
--- a/tests/assets/databases/GridMigrationTest/result5x5to5x8.db
+++ b/tests/assets/databases/GridMigrationTest/result5x5to5x8.db
Binary files differ
diff --git a/tests/assets/databases/GridMigrationTest/result5x5to5x8WithShift.db b/tests/assets/databases/GridMigrationTest/result5x5to5x8WithShift.db
deleted file mode 100644
index d750774..0000000
--- a/tests/assets/databases/GridMigrationTest/result5x5to5x8WithShift.db
+++ /dev/null
Binary files differ
diff --git a/tests/assets/databases/GridMigrationTest/test_launcher_2.db b/tests/assets/databases/GridMigrationTest/test_launcher_2.db
deleted file mode 100644
index b538e26..0000000
--- a/tests/assets/databases/GridMigrationTest/test_launcher_2.db
+++ /dev/null
Binary files differ
diff --git a/tests/src/com/android/launcher3/model/GridMigrationTest.kt b/tests/src/com/android/launcher3/model/GridMigrationTest.kt
index 8bd0c60..380c208 100644
--- a/tests/src/com/android/launcher3/model/GridMigrationTest.kt
+++ b/tests/src/com/android/launcher3/model/GridMigrationTest.kt
@@ -82,8 +82,6 @@
@RunWith(AndroidJUnit4::class)
class GridMigrationTest {
private val DB_FILE = "test_launcher.db"
- // This DB is used for testing the heuristic where we add an extra row at the bottom.
- private val DB_FILE_NO_SHIFT = "test_launcher_2.db"
@JvmField
@Rule
@@ -230,42 +228,6 @@
@JvmField
@Rule
- val result5x5to5x8WithShift =
- TestToPhoneFileCopier(
- src = "databases/GridMigrationTest/result5x5to5x8WithShift.db",
- dest = "databases/result5x5to5x8WithShift.db",
- removeOnFinish = true,
- )
-
- @Test
- fun `5x5 to 5x8 with cells shifting down`() =
- runTest(
- src = GridMigrationData(DB_FILE, DeviceGridState(5, 5, 5, TYPE_PHONE, DB_FILE)),
- dst =
- GridMigrationData(
- null, // in memory db, to download a new db change null
- // for
- // the filename of the db name to store it. Do not use existing names.
- DeviceGridState(5, 8, 5, TYPE_PHONE, ""),
- ),
- target =
- GridMigrationData(
- "result5x5to5x8WithShift.db",
- DeviceGridState(5, 8, 5, TYPE_PHONE, ""),
- ),
- )
-
- @JvmField
- @Rule
- val fileCopierNoShift =
- TestToPhoneFileCopier(
- src = "databases/GridMigrationTest/$DB_FILE_NO_SHIFT",
- dest = "databases/$DB_FILE_NO_SHIFT",
- removeOnFinish = true,
- )
-
- @JvmField
- @Rule
val result5x5to5x8 =
TestToPhoneFileCopier(
src = "databases/GridMigrationTest/result5x5to5x8.db",
@@ -274,16 +236,13 @@
)
@Test
- fun `5x5 to 5x8 without cell shift`() =
+ fun `5x5 to 5x8`() =
runTest(
- src =
- GridMigrationData(
- DB_FILE_NO_SHIFT,
- DeviceGridState(5, 5, 5, TYPE_PHONE, DB_FILE_NO_SHIFT),
- ),
+ src = GridMigrationData(DB_FILE, DeviceGridState(5, 5, 5, TYPE_PHONE, DB_FILE)),
dst =
GridMigrationData(
- null, // in memory db, to download a new db change null for
+ null, // in memory db, to download a new db change null
+ // for
// the filename of the db name to store it. Do not use existing names.
DeviceGridState(5, 8, 5, TYPE_PHONE, ""),
),