diff options
author | Sunny Goyal <sunnygoyal@google.com> | 2017-02-23 18:30:22 -0800 |
---|---|---|
committer | Sunny Goyal <sunnygoyal@google.com> | 2017-02-23 18:30:56 -0800 |
commit | e05b08f705e517be42da35a12508e54c05b1b5ff (patch) | |
tree | 746d456aa39919cc6936ab0c9189a43667e5bdc1 /src/com | |
parent | ea53ca3a17c77c6fe16ebea6821f5c25d70902e3 (diff) | |
download | android_packages_apps_Trebuchet-e05b08f705e517be42da35a12508e54c05b1b5ff.tar.gz android_packages_apps_Trebuchet-e05b08f705e517be42da35a12508e54c05b1b5ff.tar.bz2 android_packages_apps_Trebuchet-e05b08f705e517be42da35a12508e54c05b1b5ff.zip |
Using transaction when dropping tables, so that the DB never enters
an inconsistant state
Bug: 34720697
Change-Id: I55a26d63be6c06622da6ee3395bf1990f1a58a11
Diffstat (limited to 'src/com')
-rw-r--r-- | src/com/android/launcher3/LauncherModel.java | 2 | ||||
-rw-r--r-- | src/com/android/launcher3/LauncherProvider.java | 30 | ||||
-rw-r--r-- | src/com/android/launcher3/LauncherSettings.java | 1 |
3 files changed, 13 insertions, 20 deletions
diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java index 590c24263..8c90c2cb1 100644 --- a/src/com/android/launcher3/LauncherModel.java +++ b/src/com/android/launcher3/LauncherModel.java @@ -815,7 +815,7 @@ public class LauncherModel extends BroadcastReceiver if (clearDb) { Log.d(TAG, "loadWorkspace: resetting launcher database"); LauncherSettings.Settings.call(contentResolver, - LauncherSettings.Settings.METHOD_DELETE_DB); + LauncherSettings.Settings.METHOD_CREATE_EMPTY_DB); } Log.d(TAG, "loadWorkspace: loading default favorites"); diff --git a/src/com/android/launcher3/LauncherProvider.java b/src/com/android/launcher3/LauncherProvider.java index ad9a13eea..e250b3f29 100644 --- a/src/com/android/launcher3/LauncherProvider.java +++ b/src/com/android/launcher3/LauncherProvider.java @@ -406,18 +406,13 @@ public class LauncherProvider extends ContentProvider { return result; } case LauncherSettings.Settings.METHOD_CREATE_EMPTY_DB: { - createEmptyDB(); + mOpenHelper.createEmptyDB(mOpenHelper.getWritableDatabase()); return null; } case LauncherSettings.Settings.METHOD_LOAD_DEFAULT_FAVORITES: { loadDefaultFavoritesIfNecessary(); return null; } - case LauncherSettings.Settings.METHOD_DELETE_DB: { - // Are you sure? (y/n) - mOpenHelper.createEmptyDB(mOpenHelper.getWritableDatabase()); - return null; - } } return null; } @@ -469,13 +464,6 @@ public class LauncherProvider extends ContentProvider { values.put(LauncherSettings.ChangeLogColumns.MODIFIED, System.currentTimeMillis()); } - /** - * Clears all the data for a fresh start. - */ - synchronized private void createEmptyDB() { - mOpenHelper.createEmptyDB(mOpenHelper.getWritableDatabase()); - } - private void clearFlagEmptyDbCreated() { Utilities.getPrefs(getContext()).edit().remove(EMPTY_DATABASE_CREATED).commit(); } @@ -518,12 +506,12 @@ public class LauncherProvider extends ContentProvider { // There might be some partially restored DB items, due to buggy restore logic in // previous versions of launcher. - createEmptyDB(); + mOpenHelper.createEmptyDB(mOpenHelper.getWritableDatabase()); // Populate favorites table with initial favorites if ((mOpenHelper.loadFavorites(mOpenHelper.getWritableDatabase(), loader) <= 0) && usingExternallyProvidedLayout) { // Unable to load external layout. Cleanup and load the internal layout. - createEmptyDB(); + mOpenHelper.createEmptyDB(mOpenHelper.getWritableDatabase()); mOpenHelper.loadFavorites(mOpenHelper.getWritableDatabase(), getDefaultLayoutParser(widgetHost)); } @@ -825,9 +813,15 @@ public class LauncherProvider extends ContentProvider { * Clears all the data for a fresh start. */ public void createEmptyDB(SQLiteDatabase db) { - db.execSQL("DROP TABLE IF EXISTS " + Favorites.TABLE_NAME); - db.execSQL("DROP TABLE IF EXISTS " + WorkspaceScreens.TABLE_NAME); - onCreate(db); + db.beginTransaction(); + try { + db.execSQL("DROP TABLE IF EXISTS " + Favorites.TABLE_NAME); + db.execSQL("DROP TABLE IF EXISTS " + WorkspaceScreens.TABLE_NAME); + onCreate(db); + db.setTransactionSuccessful(); + } finally { + db.endTransaction(); + } } /** diff --git a/src/com/android/launcher3/LauncherSettings.java b/src/com/android/launcher3/LauncherSettings.java index e450785c7..af2c10275 100644 --- a/src/com/android/launcher3/LauncherSettings.java +++ b/src/com/android/launcher3/LauncherSettings.java @@ -291,7 +291,6 @@ public class LauncherSettings { public static final String METHOD_NEW_SCREEN_ID = "generate_new_screen_id"; public static final String METHOD_CREATE_EMPTY_DB = "create_empty_db"; - public static final String METHOD_DELETE_DB = "delete_db"; public static final String METHOD_LOAD_DEFAULT_FAVORITES = "load_default_favorites"; |