From 2c14f8e580af1a86448266bacd637b536600eaf6 Mon Sep 17 00:00:00 2001 From: merothh Date: Tue, 5 Oct 2021 16:49:01 +0530 Subject: [PATCH 1/2] LineageDatabaseHelper: Override onDowngrade() * We had previously bumped the DB_VERSION to: - 14 (which set STATUS_BAR_CLOCK to 1 and STATUS_BAR_BATTERY_STYLE to 2) - 15 (which set STATUS_BAR_CLOCK to 2 and STATUS_BAR_BATTERY_STYLE to 0) DB_VERSION 15 is essentially reverting to version 13, and undoing the changes that version 14 did. * Our R based builds follow upstream (which bumped the DB_VERSION to 14, from 13 on lineage-17.1) This breaks boot, for a user trying to transition with a Q userdata to R. * At this point in time, it makes sense for us to force downgrade the DB_VERSION to 13, so that our upgrade path is left intact and we can follow upstream from R as well. --- .../LineageDatabaseHelper.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/packages/LineageSettingsProvider/src/org/lineageos/lineagesettings/LineageDatabaseHelper.java b/packages/LineageSettingsProvider/src/org/lineageos/lineagesettings/LineageDatabaseHelper.java index 24ce1e1f..e4af6912 100644 --- a/packages/LineageSettingsProvider/src/org/lineageos/lineagesettings/LineageDatabaseHelper.java +++ b/packages/LineageSettingsProvider/src/org/lineageos/lineagesettings/LineageDatabaseHelper.java @@ -462,6 +462,44 @@ public class LineageDatabaseHelper extends SQLiteOpenHelper{ // *** Remember to update DATABASE_VERSION above! } + @Override + public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion){ + if (LOCAL_LOGV) Log.d(TAG, "Downgrading from version: " + oldVersion + " to " + newVersion); + + if(oldVersion == 14) { + if (mUserHandle == UserHandle.USER_OWNER) { + for (String key : new String[] { + LineageSettings.System.STATUS_BAR_CLOCK, + LineageSettings.System.STATUS_BAR_BATTERY_STYLE, + }) { + db.beginTransaction(); + SQLiteStatement stmt = null; + try { + stmt = db.compileStatement("UPDATE system SET value=? WHERE name=?"); + if(key == LineageSettings.System.STATUS_BAR_CLOCK){ + // Update STATUS_BAR_CLOCK because was centered by db 14 before (not in code anymore) + stmt.bindLong(1, 2); + stmt.bindString(2, key); + } else { + // Update STATUS_BAR_BATTERY_STYLE because was centered by db 14 before (not in code anymore) + stmt.bindLong(1, 0); + stmt.bindString(2, key); + } + stmt.execute(); + db.setTransactionSuccessful(); + } catch (SQLiteDoneException ex) { + // LineageSettings.System.STATUS_BAR_CLOCK is not set + // OR + // LineageSettings.System.STATUS_BAR_BATTERY_STYLE is not set + } finally { + if (stmt != null) stmt.close(); + db.endTransaction(); + } + } + } + } + } + private void moveSettingsToNewTable(SQLiteDatabase db, String sourceTable, String destTable, String[] settingsToMove, boolean doIgnore) { -- GitLab From 8bd1eee7ea04c9fbbaf70c9197611d202dadf82e Mon Sep 17 00:00:00 2001 From: TheScarastic Date: Mon, 2 Jan 2023 06:01:39 +0000 Subject: [PATCH 2/2] sdk: Account for lineage modification while downgrading as well --- .../LineageDatabaseHelper.java | 43 +++++++++++-------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/packages/LineageSettingsProvider/src/org/lineageos/lineagesettings/LineageDatabaseHelper.java b/packages/LineageSettingsProvider/src/org/lineageos/lineagesettings/LineageDatabaseHelper.java index e4af6912..57ab4e62 100644 --- a/packages/LineageSettingsProvider/src/org/lineageos/lineagesettings/LineageDatabaseHelper.java +++ b/packages/LineageSettingsProvider/src/org/lineageos/lineagesettings/LineageDatabaseHelper.java @@ -437,25 +437,7 @@ public class LineageDatabaseHelper extends SQLiteOpenHelper{ if (upgradeVersion < 14) { // Update button/keyboard brightness range if (mUserHandle == UserHandle.USER_OWNER) { - for (String key : new String[] { - LineageSettings.Secure.BUTTON_BRIGHTNESS, - LineageSettings.Secure.KEYBOARD_BRIGHTNESS, - }) { - db.beginTransaction(); - SQLiteStatement stmt = null; - try { - stmt = db.compileStatement( - "UPDATE secure SET value=round(value / 255.0, 2) WHERE name=?"); - stmt.bindString(1, key); - stmt.execute(); - db.setTransactionSuccessful(); - } catch (SQLiteDoneException ex) { - // key is not set - } finally { - if (stmt != null) stmt.close(); - db.endTransaction(); - } - } + migrateDbTo14(db); } upgradeVersion = 14; } @@ -468,6 +450,7 @@ public class LineageDatabaseHelper extends SQLiteOpenHelper{ if(oldVersion == 14) { if (mUserHandle == UserHandle.USER_OWNER) { + migrateDbTo14(db); for (String key : new String[] { LineageSettings.System.STATUS_BAR_CLOCK, LineageSettings.System.STATUS_BAR_BATTERY_STYLE, @@ -500,6 +483,28 @@ public class LineageDatabaseHelper extends SQLiteOpenHelper{ } } + private void migrateDbTo14(SQLiteDatabase db) { + for (String key : new String[] { + LineageSettings.Secure.BUTTON_BRIGHTNESS, + LineageSettings.Secure.KEYBOARD_BRIGHTNESS, + }) { + db.beginTransaction(); + SQLiteStatement stmt = null; + try { + stmt = db.compileStatement( + "UPDATE secure SET value=round(value / 255.0, 2) WHERE name=?"); + stmt.bindString(1, key); + stmt.execute(); + db.setTransactionSuccessful(); + } catch (SQLiteDoneException ex) { + // key is not set + } finally { + if (stmt != null) stmt.close(); + db.endTransaction(); + } + } + } + private void moveSettingsToNewTable(SQLiteDatabase db, String sourceTable, String destTable, String[] settingsToMove, boolean doIgnore) { -- GitLab