summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2017-02-23 18:30:22 -0800
committerSunny Goyal <sunnygoyal@google.com>2017-02-23 18:30:56 -0800
commite05b08f705e517be42da35a12508e54c05b1b5ff (patch)
tree746d456aa39919cc6936ab0c9189a43667e5bdc1 /src/com
parentea53ca3a17c77c6fe16ebea6821f5c25d70902e3 (diff)
downloadandroid_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.java2
-rw-r--r--src/com/android/launcher3/LauncherProvider.java30
-rw-r--r--src/com/android/launcher3/LauncherSettings.java1
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";