Loading services/core/java/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbHelper.java +40 −29 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.server.locksettings.recoverablekeystore.storage; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; Loading Loading @@ -122,14 +123,14 @@ class RecoverableKeyStoreDbHelper extends SQLiteOpenHelper { } private static int getDbVersion(Context context) { // TODO(b/254335492): Check flag // TODO(b/254335492): Update to version 7 and clean up code. return DATABASE_VERSION; } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(SQL_CREATE_KEYS_ENTRY); if (db.getVersion() == 6) { if (db.getVersion() == 6) { // always false db.execSQL(SQL_CREATE_USER_METADATA_ENTRY); } else { db.execSQL(SQL_CREATE_USER_METADATA_ENTRY_FOR_V7); Loading @@ -147,6 +148,7 @@ class RecoverableKeyStoreDbHelper extends SQLiteOpenHelper { @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { try { if (oldVersion < 2) { dropAllKnownTables(db); // Wipe database. onCreate(db); Loading Loading @@ -174,10 +176,19 @@ class RecoverableKeyStoreDbHelper extends SQLiteOpenHelper { } if (oldVersion < 7 && newVersion >= 7) { try { upgradeDbForVersion7(db); } catch (SQLiteException e) { Log.w(TAG, "Column was added without version update - ignore error", e); } oldVersion = 7; } } catch (SQLiteException e) { Log.e(TAG, "Recreating recoverablekeystore after unexpected upgrade error.", e); dropAllKnownTables(db); // Wipe database. onCreate(db); return; } if (oldVersion != newVersion) { Log.e(TAG, "Failed to update recoverablekeystore database to the most recent version"); } Loading services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbHelperTest.java +14 −0 Original line number Diff line number Diff line Loading @@ -157,6 +157,20 @@ public class RecoverableKeyStoreDbHelperTest { checkAllColumns_latest(); } @Test public void onUpgradeToV7_ignoresDuplicateColumnError() throws Exception { mDatabaseHelper.onCreate(mDatabase); mDatabaseHelper.onUpgrade(mDatabase, 6, 7); checkAllColumns_latest(); } @Test public void onUpgradeToV7_recreatesDatabaseAfterFailure() throws Exception { mDatabaseHelper.onCreate(mDatabase); mDatabaseHelper.onUpgrade(mDatabase, 1, 7); checkAllColumns_latest(); } private boolean isRootOfTrustTableAvailable() { ContentValues values = new ContentValues(); values.put(RootOfTrustEntry.COLUMN_NAME_USER_ID, TEST_USER_ID); Loading Loading
services/core/java/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbHelper.java +40 −29 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.server.locksettings.recoverablekeystore.storage; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; Loading Loading @@ -122,14 +123,14 @@ class RecoverableKeyStoreDbHelper extends SQLiteOpenHelper { } private static int getDbVersion(Context context) { // TODO(b/254335492): Check flag // TODO(b/254335492): Update to version 7 and clean up code. return DATABASE_VERSION; } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(SQL_CREATE_KEYS_ENTRY); if (db.getVersion() == 6) { if (db.getVersion() == 6) { // always false db.execSQL(SQL_CREATE_USER_METADATA_ENTRY); } else { db.execSQL(SQL_CREATE_USER_METADATA_ENTRY_FOR_V7); Loading @@ -147,6 +148,7 @@ class RecoverableKeyStoreDbHelper extends SQLiteOpenHelper { @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { try { if (oldVersion < 2) { dropAllKnownTables(db); // Wipe database. onCreate(db); Loading Loading @@ -174,10 +176,19 @@ class RecoverableKeyStoreDbHelper extends SQLiteOpenHelper { } if (oldVersion < 7 && newVersion >= 7) { try { upgradeDbForVersion7(db); } catch (SQLiteException e) { Log.w(TAG, "Column was added without version update - ignore error", e); } oldVersion = 7; } } catch (SQLiteException e) { Log.e(TAG, "Recreating recoverablekeystore after unexpected upgrade error.", e); dropAllKnownTables(db); // Wipe database. onCreate(db); return; } if (oldVersion != newVersion) { Log.e(TAG, "Failed to update recoverablekeystore database to the most recent version"); } Loading
services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbHelperTest.java +14 −0 Original line number Diff line number Diff line Loading @@ -157,6 +157,20 @@ public class RecoverableKeyStoreDbHelperTest { checkAllColumns_latest(); } @Test public void onUpgradeToV7_ignoresDuplicateColumnError() throws Exception { mDatabaseHelper.onCreate(mDatabase); mDatabaseHelper.onUpgrade(mDatabase, 6, 7); checkAllColumns_latest(); } @Test public void onUpgradeToV7_recreatesDatabaseAfterFailure() throws Exception { mDatabaseHelper.onCreate(mDatabase); mDatabaseHelper.onUpgrade(mDatabase, 1, 7); checkAllColumns_latest(); } private boolean isRootOfTrustTableAvailable() { ContentValues values = new ContentValues(); values.put(RootOfTrustEntry.COLUMN_NAME_USER_ID, TEST_USER_ID); Loading