mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-03-01 00:06:47 +00:00
Merge "Pass in dbFile from idpGridState for grid migration" into tm-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
deae9343be
@@ -162,6 +162,7 @@ public class LauncherProvider extends ContentProvider {
|
||||
private synchronized boolean prepForMigration(String dbFile, String targetTableName,
|
||||
Supplier<DatabaseHelper> src, Supplier<DatabaseHelper> dst) {
|
||||
if (TextUtils.equals(dbFile, mOpenHelper.getDatabaseName())) {
|
||||
Log.e("b/198965093", "prepForMigration - target db is same as current: " + dbFile);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -439,7 +440,7 @@ public class LauncherProvider extends ContentProvider {
|
||||
Bundle result = new Bundle();
|
||||
result.putBoolean(LauncherSettings.Settings.EXTRA_VALUE,
|
||||
prepForMigration(
|
||||
InvariantDeviceProfile.INSTANCE.get(getContext()).dbFile,
|
||||
arg /* dbFile */,
|
||||
Favorites.TMP_TABLE,
|
||||
() -> mOpenHelper,
|
||||
() -> DatabaseHelper.createDatabaseHelper(
|
||||
|
||||
@@ -43,15 +43,18 @@ public class DeviceGridState implements Comparable<DeviceGridState> {
|
||||
public static final String KEY_WORKSPACE_SIZE = "migration_src_workspace_size";
|
||||
public static final String KEY_HOTSEAT_COUNT = "migration_src_hotseat_count";
|
||||
public static final String KEY_DEVICE_TYPE = "migration_src_device_type";
|
||||
public static final String KEY_DB_FILE = "migration_src_db_file";
|
||||
|
||||
private final String mGridSizeString;
|
||||
private final int mNumHotseat;
|
||||
private final @DeviceType int mDeviceType;
|
||||
private final String mDbFile;
|
||||
|
||||
public DeviceGridState(InvariantDeviceProfile idp) {
|
||||
mGridSizeString = String.format(Locale.ENGLISH, "%d,%d", idp.numColumns, idp.numRows);
|
||||
mNumHotseat = idp.numDatabaseHotseatIcons;
|
||||
mDeviceType = idp.deviceType;
|
||||
mDbFile = idp.dbFile;
|
||||
}
|
||||
|
||||
public DeviceGridState(Context context) {
|
||||
@@ -59,6 +62,7 @@ public class DeviceGridState implements Comparable<DeviceGridState> {
|
||||
mGridSizeString = prefs.getString(KEY_WORKSPACE_SIZE, "");
|
||||
mNumHotseat = prefs.getInt(KEY_HOTSEAT_COUNT, -1);
|
||||
mDeviceType = prefs.getInt(KEY_DEVICE_TYPE, TYPE_PHONE);
|
||||
mDbFile = prefs.getString(KEY_DB_FILE, "");
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -68,6 +72,20 @@ public class DeviceGridState implements Comparable<DeviceGridState> {
|
||||
return mDeviceType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the databaseFile for the grid.
|
||||
*/
|
||||
public String getDbFile() {
|
||||
return mDbFile;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of hotseat icons.
|
||||
*/
|
||||
public int getNumHotseat() {
|
||||
return mNumHotseat;
|
||||
}
|
||||
|
||||
/**
|
||||
* Stores the device state to shared preferences
|
||||
*/
|
||||
@@ -76,6 +94,7 @@ public class DeviceGridState implements Comparable<DeviceGridState> {
|
||||
.putString(KEY_WORKSPACE_SIZE, mGridSizeString)
|
||||
.putInt(KEY_HOTSEAT_COUNT, mNumHotseat)
|
||||
.putInt(KEY_DEVICE_TYPE, mDeviceType)
|
||||
.putString(KEY_DB_FILE, mDbFile)
|
||||
.apply();
|
||||
}
|
||||
|
||||
@@ -106,6 +125,7 @@ public class DeviceGridState implements Comparable<DeviceGridState> {
|
||||
+ "mGridSizeString='" + mGridSizeString + '\''
|
||||
+ ", mNumHotseat=" + mNumHotseat
|
||||
+ ", mDeviceType=" + mDeviceType
|
||||
+ ", mDbFile=" + mDbFile
|
||||
+ '}';
|
||||
}
|
||||
|
||||
|
||||
@@ -22,7 +22,6 @@ import android.content.ComponentName;
|
||||
import android.content.ContentValues;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.database.Cursor;
|
||||
@@ -104,13 +103,16 @@ public class GridSizeMigrationTaskV2 {
|
||||
* Check given a new IDP, if migration is necessary.
|
||||
*/
|
||||
public static boolean needsToMigrate(Context context, InvariantDeviceProfile idp) {
|
||||
DeviceGridState idpGridState = new DeviceGridState(idp);
|
||||
DeviceGridState contextGridState = new DeviceGridState(context);
|
||||
boolean needsToMigrate = !idpGridState.isCompatible(contextGridState);
|
||||
return needsToMigrate(new DeviceGridState(context), new DeviceGridState(idp));
|
||||
}
|
||||
|
||||
private static boolean needsToMigrate(
|
||||
DeviceGridState srcDeviceState, DeviceGridState destDeviceState) {
|
||||
boolean needsToMigrate = !destDeviceState.isCompatible(srcDeviceState);
|
||||
// TODO(b/198965093): Revert this change after bug is fixed
|
||||
if (needsToMigrate) {
|
||||
Log.d("b/198965093", "Migration is needed. idpGridState: " + idpGridState
|
||||
+ ", contextGridState: " + contextGridState);
|
||||
Log.d("b/198965093", "Migration is needed. destDeviceState: " + destDeviceState
|
||||
+ ", srcDeviceState: " + srcDeviceState);
|
||||
}
|
||||
return needsToMigrate;
|
||||
}
|
||||
@@ -143,23 +145,26 @@ public class GridSizeMigrationTaskV2 {
|
||||
idp = LauncherAppState.getIDP(context);
|
||||
}
|
||||
|
||||
if (!needsToMigrate(context, idp)) {
|
||||
DeviceGridState srcDeviceState = new DeviceGridState(context);
|
||||
DeviceGridState destDeviceState = new DeviceGridState(idp);
|
||||
if (!needsToMigrate(srcDeviceState, destDeviceState)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
SharedPreferences prefs = Utilities.getPrefs(context);
|
||||
HashSet<String> validPackages = getValidPackages(context);
|
||||
|
||||
if (migrateForPreview) {
|
||||
if (!LauncherSettings.Settings.call(
|
||||
context.getContentResolver(),
|
||||
LauncherSettings.Settings.METHOD_PREP_FOR_PREVIEW, idp.dbFile).getBoolean(
|
||||
LauncherSettings.Settings.METHOD_PREP_FOR_PREVIEW,
|
||||
destDeviceState.getDbFile()).getBoolean(
|
||||
LauncherSettings.Settings.EXTRA_VALUE)) {
|
||||
return false;
|
||||
}
|
||||
} else if (!LauncherSettings.Settings.call(
|
||||
context.getContentResolver(),
|
||||
LauncherSettings.Settings.METHOD_UPDATE_CURRENT_OPEN_HELPER).getBoolean(
|
||||
LauncherSettings.Settings.METHOD_UPDATE_CURRENT_OPEN_HELPER,
|
||||
destDeviceState.getDbFile()).getBoolean(
|
||||
LauncherSettings.Settings.EXTRA_VALUE)) {
|
||||
return false;
|
||||
}
|
||||
@@ -179,10 +184,10 @@ public class GridSizeMigrationTaskV2 {
|
||||
: LauncherSettings.Favorites.TABLE_NAME,
|
||||
context, validPackages);
|
||||
|
||||
Point targetSize = new Point(idp.numColumns, idp.numRows);
|
||||
Point targetSize = new Point(destDeviceState.getColumns(), destDeviceState.getRows());
|
||||
GridSizeMigrationTaskV2 task = new GridSizeMigrationTaskV2(context, t.getDb(),
|
||||
srcReader, destReader, idp.numDatabaseHotseatIcons, targetSize);
|
||||
task.migrate(idp);
|
||||
srcReader, destReader, destDeviceState.getNumHotseat(), targetSize);
|
||||
task.migrate(srcDeviceState, destDeviceState);
|
||||
|
||||
if (!migrateForPreview) {
|
||||
dropTable(t.getDb(), LauncherSettings.Favorites.TMP_TABLE);
|
||||
@@ -200,13 +205,13 @@ public class GridSizeMigrationTaskV2 {
|
||||
|
||||
if (!migrateForPreview) {
|
||||
// Save current configuration, so that the migration does not run again.
|
||||
new DeviceGridState(idp).writeToPrefs(context);
|
||||
destDeviceState.writeToPrefs(context);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
protected boolean migrate(InvariantDeviceProfile idp) {
|
||||
protected boolean migrate(DeviceGridState srcDeviceState, DeviceGridState destDeviceState) {
|
||||
if (mHotseatDiff.isEmpty() && mWorkspaceDiff.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
@@ -228,8 +233,6 @@ public class GridSizeMigrationTaskV2 {
|
||||
|
||||
boolean preservePages = false;
|
||||
if (screens.isEmpty() && FeatureFlags.ENABLE_NEW_MIGRATION_LOGIC.get()) {
|
||||
DeviceGridState srcDeviceState = new DeviceGridState(mContext);
|
||||
DeviceGridState destDeviceState = new DeviceGridState(idp);
|
||||
preservePages = destDeviceState.compareTo(srcDeviceState) >= 0
|
||||
&& destDeviceState.getColumns() - srcDeviceState.getColumns() <= 2;
|
||||
}
|
||||
|
||||
@@ -125,7 +125,7 @@ class GridSizeMigrationTaskV2Test {
|
||||
idp.numDatabaseHotseatIcons,
|
||||
Point(idp.numColumns, idp.numRows)
|
||||
)
|
||||
task.migrate(idp)
|
||||
task.migrate(DeviceGridState(context), DeviceGridState(idp))
|
||||
|
||||
// Check hotseat items
|
||||
var c = context.contentResolver.query(
|
||||
@@ -205,7 +205,7 @@ class GridSizeMigrationTaskV2Test {
|
||||
idp.numDatabaseHotseatIcons,
|
||||
Point(idp.numColumns, idp.numRows)
|
||||
)
|
||||
task.migrate(idp)
|
||||
task.migrate(DeviceGridState(context), DeviceGridState(idp))
|
||||
|
||||
// Check hotseat items
|
||||
val c = context.contentResolver.query(
|
||||
@@ -260,7 +260,7 @@ class GridSizeMigrationTaskV2Test {
|
||||
idp.numDatabaseHotseatIcons,
|
||||
Point(idp.numColumns, idp.numRows)
|
||||
)
|
||||
task.migrate(idp)
|
||||
task.migrate(DeviceGridState(context), DeviceGridState(idp))
|
||||
|
||||
// Check hotseat items
|
||||
val c = context.contentResolver.query(
|
||||
@@ -325,7 +325,7 @@ class GridSizeMigrationTaskV2Test {
|
||||
idp.numDatabaseHotseatIcons,
|
||||
Point(idp.numColumns, idp.numRows)
|
||||
)
|
||||
task.migrate(idp)
|
||||
task.migrate(DeviceGridState(context), DeviceGridState(idp))
|
||||
|
||||
// Get workspace items
|
||||
val c = context.contentResolver.query(
|
||||
@@ -385,7 +385,7 @@ class GridSizeMigrationTaskV2Test {
|
||||
idp.numDatabaseHotseatIcons,
|
||||
Point(idp.numColumns, idp.numRows)
|
||||
)
|
||||
task.migrate(idp)
|
||||
task.migrate(DeviceGridState(context), DeviceGridState(idp))
|
||||
|
||||
// Get workspace items
|
||||
val c = context.contentResolver.query(
|
||||
@@ -446,7 +446,7 @@ class GridSizeMigrationTaskV2Test {
|
||||
idp.numDatabaseHotseatIcons,
|
||||
Point(idp.numColumns, idp.numRows)
|
||||
)
|
||||
task.migrate(idp)
|
||||
task.migrate(DeviceGridState(context), DeviceGridState(idp))
|
||||
|
||||
// Get workspace items
|
||||
val c = context.contentResolver.query(
|
||||
|
||||
Reference in New Issue
Block a user