mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-20 11:18:21 +00:00
Revert "Revert "Revert "Revert "Revert "Revert "Changing GridMigrationTask to use ModelDbController directly""""""
This reverts commit 09905cfa90.
Reason for revert: Fixed the crashing issue
Change-Id: Ibcfc28a89356d262e67e8842d6bae37e230a70f5
This commit is contained in:
@@ -16,6 +16,8 @@
|
||||
|
||||
package com.android.launcher3.provider;
|
||||
|
||||
import static android.os.Process.myUserHandle;
|
||||
|
||||
import static com.android.launcher3.InvariantDeviceProfile.TYPE_MULTI_DISPLAY;
|
||||
import static com.android.launcher3.LauncherPrefs.APP_WIDGET_IDS;
|
||||
import static com.android.launcher3.LauncherPrefs.OLD_APP_WIDGET_IDS;
|
||||
@@ -47,8 +49,8 @@ import com.android.launcher3.LauncherPrefs;
|
||||
import com.android.launcher3.LauncherSettings.Favorites;
|
||||
import com.android.launcher3.Utilities;
|
||||
import com.android.launcher3.logging.FileLog;
|
||||
import com.android.launcher3.model.DatabaseHelper;
|
||||
import com.android.launcher3.model.DeviceGridState;
|
||||
import com.android.launcher3.model.ModelDbController;
|
||||
import com.android.launcher3.model.data.AppInfo;
|
||||
import com.android.launcher3.model.data.LauncherAppWidgetInfo;
|
||||
import com.android.launcher3.model.data.WorkspaceItemInfo;
|
||||
@@ -83,12 +85,12 @@ public class RestoreDbTask {
|
||||
/**
|
||||
* Tries to restore the backup DB if needed
|
||||
*/
|
||||
public static void restoreIfNeeded(Context context, DatabaseHelper helper) {
|
||||
public static void restoreIfNeeded(Context context, ModelDbController dbController) {
|
||||
if (!isPending(context)) {
|
||||
return;
|
||||
}
|
||||
if (!performRestore(context, helper)) {
|
||||
helper.createEmptyDB(helper.getWritableDatabase());
|
||||
if (!performRestore(context, dbController)) {
|
||||
dbController.createEmptyDB();
|
||||
}
|
||||
|
||||
// Obtain InvariantDeviceProfile first before setting pending to false, so
|
||||
@@ -102,12 +104,12 @@ public class RestoreDbTask {
|
||||
idp.reinitializeAfterRestore(context);
|
||||
}
|
||||
|
||||
private static boolean performRestore(Context context, DatabaseHelper helper) {
|
||||
SQLiteDatabase db = helper.getWritableDatabase();
|
||||
private static boolean performRestore(Context context, ModelDbController controller) {
|
||||
SQLiteDatabase db = controller.getDb();
|
||||
try (SQLiteTransaction t = new SQLiteTransaction(db)) {
|
||||
RestoreDbTask task = new RestoreDbTask();
|
||||
task.sanitizeDB(context, helper, db, new BackupManager(context));
|
||||
task.restoreAppWidgetIdsIfExists(context, helper);
|
||||
task.sanitizeDB(context, controller, db, new BackupManager(context));
|
||||
task.restoreAppWidgetIdsIfExists(context, controller);
|
||||
t.commit();
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
@@ -129,10 +131,10 @@ public class RestoreDbTask {
|
||||
* @return number of items deleted.
|
||||
*/
|
||||
@VisibleForTesting
|
||||
protected int sanitizeDB(Context context, DatabaseHelper helper, SQLiteDatabase db,
|
||||
protected int sanitizeDB(Context context, ModelDbController controller, SQLiteDatabase db,
|
||||
BackupManager backupManager) throws Exception {
|
||||
// Primary user ids
|
||||
long myProfileId = helper.getDefaultUserSerial();
|
||||
long myProfileId = controller.getSerialNumberForUser(myUserHandle());
|
||||
long oldProfileId = getDefaultProfileId(db);
|
||||
LongSparseArray<Long> oldManagedProfileIds = getManagedProfileIds(db, oldProfileId);
|
||||
LongSparseArray<Long> profileMapping = new LongSparseArray<>(oldManagedProfileIds.size()
|
||||
@@ -144,7 +146,7 @@ public class RestoreDbTask {
|
||||
long oldManagedProfileId = oldManagedProfileIds.keyAt(i);
|
||||
UserHandle user = getUserForAncestralSerialNumber(backupManager, oldManagedProfileId);
|
||||
if (user != null) {
|
||||
long newManagedProfileId = helper.getSerialNumberForUser(user);
|
||||
long newManagedProfileId = controller.getSerialNumberForUser(user);
|
||||
profileMapping.put(oldManagedProfileId, newManagedProfileId);
|
||||
}
|
||||
}
|
||||
@@ -213,7 +215,7 @@ public class RestoreDbTask {
|
||||
}
|
||||
|
||||
// Override shortcuts
|
||||
maybeOverrideShortcuts(context, helper, db, myProfileId);
|
||||
maybeOverrideShortcuts(context, controller, db, myProfileId);
|
||||
|
||||
return itemsDeleted;
|
||||
}
|
||||
@@ -321,11 +323,11 @@ public class RestoreDbTask {
|
||||
.putSync(RESTORE_DEVICE.to(new DeviceGridState(context).getDeviceType()));
|
||||
}
|
||||
|
||||
private void restoreAppWidgetIdsIfExists(Context context, DatabaseHelper helper) {
|
||||
private void restoreAppWidgetIdsIfExists(Context context, ModelDbController controller) {
|
||||
LauncherPrefs lp = LauncherPrefs.get(context);
|
||||
if (lp.has(APP_WIDGET_IDS, OLD_APP_WIDGET_IDS)) {
|
||||
AppWidgetHost host = new AppWidgetHost(context, APPWIDGET_HOST_ID);
|
||||
AppWidgetsRestoredReceiver.restoreAppWidgetIds(context, helper,
|
||||
AppWidgetsRestoredReceiver.restoreAppWidgetIds(context, controller,
|
||||
IntArray.fromConcatString(lp.get(OLD_APP_WIDGET_IDS)).toArray(),
|
||||
IntArray.fromConcatString(lp.get(APP_WIDGET_IDS)).toArray(),
|
||||
host);
|
||||
@@ -343,7 +345,7 @@ public class RestoreDbTask {
|
||||
APP_WIDGET_IDS.to(IntArray.wrap(newIds).toConcatString()));
|
||||
}
|
||||
|
||||
protected static void maybeOverrideShortcuts(Context context, DatabaseHelper helper,
|
||||
protected static void maybeOverrideShortcuts(Context context, ModelDbController controller,
|
||||
SQLiteDatabase db, long currentUser) {
|
||||
Map<String, LauncherActivityInfo> activityOverrides = ApiWrapper.getActivityOverrides(
|
||||
context);
|
||||
@@ -367,7 +369,7 @@ public class RestoreDbTask {
|
||||
if (override != null) {
|
||||
ContentValues values = new ContentValues();
|
||||
values.put(Favorites.PROFILE_ID,
|
||||
helper.getSerialNumberForUser(override.getUser()));
|
||||
controller.getSerialNumberForUser(override.getUser()));
|
||||
values.put(Favorites.INTENT, AppInfo.makeLaunchIntent(override).toUri(0));
|
||||
db.update(Favorites.TABLE_NAME, values, String.format("%s=?", Favorites._ID),
|
||||
new String[]{String.valueOf(c.getInt(idIndex))});
|
||||
|
||||
Reference in New Issue
Block a user