diff options
author | Sunny Goyal <sunnygoyal@google.com> | 2014-09-29 03:00:45 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-09-29 03:00:45 +0000 |
commit | 10d03955def60ffa28717cd113c74a18219e2e81 (patch) | |
tree | 51ae702f1b6d87a401eb0aa649d02652d1bdda01 | |
parent | f82c86c26c0ba9896b61270b48a8e4f82d7d7fde (diff) | |
parent | 6d467e27b7e16442d3fb56af2aa3d94e657dff25 (diff) | |
download | android_packages_apps_Trebuchet-10d03955def60ffa28717cd113c74a18219e2e81.tar.gz android_packages_apps_Trebuchet-10d03955def60ffa28717cd113c74a18219e2e81.tar.bz2 android_packages_apps_Trebuchet-10d03955def60ffa28717cd113c74a18219e2e81.zip |
am 6d467e27: Merge "Resetting launcherProvider data if restore set was empty" into ub-now-porkchop
* commit '6d467e27b7e16442d3fb56af2aa3d94e657dff25':
Resetting launcherProvider data if restore set was empty
-rw-r--r-- | src/com/android/launcher3/LauncherBackupAgentHelper.java | 26 | ||||
-rw-r--r-- | src/com/android/launcher3/LauncherBackupHelper.java | 6 | ||||
-rw-r--r-- | src/com/android/launcher3/LauncherProvider.java | 14 |
3 files changed, 39 insertions, 7 deletions
diff --git a/src/com/android/launcher3/LauncherBackupAgentHelper.java b/src/com/android/launcher3/LauncherBackupAgentHelper.java index 7dd8cdedd..c20c6939d 100644 --- a/src/com/android/launcher3/LauncherBackupAgentHelper.java +++ b/src/com/android/launcher3/LauncherBackupAgentHelper.java @@ -17,13 +17,16 @@ package com.android.launcher3; import android.app.backup.BackupAgentHelper; +import android.app.backup.BackupDataInput; import android.app.backup.BackupManager; -import android.app.backup.SharedPreferencesBackupHelper; import android.content.Context; -import android.content.SharedPreferences; +import android.database.Cursor; +import android.os.ParcelFileDescriptor; import android.provider.Settings; import android.util.Log; +import java.io.IOException; + public class LauncherBackupAgentHelper extends BackupAgentHelper { private static final String TAG = "LauncherBackupAgentHelper"; @@ -54,7 +57,7 @@ public class LauncherBackupAgentHelper extends BackupAgentHelper { // modifies the file outside the normal codepaths, so it looks like another // process. This forces a reload of the file, in case this process persists. String spKey = LauncherAppState.getSharedPreferencesKey(); - SharedPreferences sp = getSharedPreferences(spKey, Context.MODE_MULTI_PROCESS); + getSharedPreferences(spKey, Context.MODE_MULTI_PROCESS); super.onDestroy(); } @@ -71,4 +74,21 @@ public class LauncherBackupAgentHelper extends BackupAgentHelper { addHelper(LauncherBackupHelper.LAUNCHER_PREFIX, new LauncherBackupHelper(this, restoreEnabled)); } + + @Override + public void onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor newState) + throws IOException { + super.onRestore(data, appVersionCode, newState); + + // If no favorite was migrated, clear the data and start fresh. + final Cursor c = getContentResolver().query( + LauncherSettings.Favorites.CONTENT_URI_NO_NOTIFICATION, null, null, null, null); + boolean hasData = c.moveToNext(); + c.close(); + + if (!hasData) { + if (VERBOSE) Log.v(TAG, "Nothing was restored, clearing DB"); + LauncherAppState.getLauncherProvider().createEmptyDB(); + } + } } diff --git a/src/com/android/launcher3/LauncherBackupHelper.java b/src/com/android/launcher3/LauncherBackupHelper.java index 911a41dca..201f3e9bb 100644 --- a/src/com/android/launcher3/LauncherBackupHelper.java +++ b/src/com/android/launcher3/LauncherBackupHelper.java @@ -148,11 +148,12 @@ public class LauncherBackupHelper implements BackupHelper { private HashMap<ComponentName, AppWidgetProviderInfo> mWidgetMap; - private ArrayList<Key> mKeys; + private final ArrayList<Key> mKeys; public LauncherBackupHelper(Context context, boolean restoreEnabled) { mContext = context; mRestoreEnabled = restoreEnabled; + mKeys = new ArrayList<Key>(); } private void dataChanged() { @@ -218,9 +219,6 @@ public class LauncherBackupHelper implements BackupHelper { @Override public void restoreEntity(BackupDataInputStream data) { if (VERBOSE) Log.v(TAG, "restoreEntity"); - if (mKeys == null) { - mKeys = new ArrayList<Key>(); - } byte[] buffer = new byte[512]; String backupKey = data.getKey(); int dataSize = data.size(); diff --git a/src/com/android/launcher3/LauncherProvider.java b/src/com/android/launcher3/LauncherProvider.java index 30086ad4c..c0e648758 100644 --- a/src/com/android/launcher3/LauncherProvider.java +++ b/src/com/android/launcher3/LauncherProvider.java @@ -308,6 +308,13 @@ public class LauncherProvider extends ContentProvider { } /** + * Clears all the data for a fresh start. + */ + synchronized public void createEmptyDB() { + mOpenHelper.createEmptyDB(mOpenHelper.getWritableDatabase()); + } + + /** * Loads the default workspace based on the following priority scheme: * 1) From a package provided by play store * 2) From a partner configuration APK, already in the system image @@ -908,7 +915,14 @@ public class LauncherProvider extends ContentProvider { // This shouldn't happen -- throw our hands up in the air and start over. Log.w(TAG, "Database version downgrade from: " + oldVersion + " to " + newVersion + ". Wiping databse."); + createEmptyDB(db); + } + + /** + * Clears all the data for a fresh start. + */ + public void createEmptyDB(SQLiteDatabase db) { db.execSQL("DROP TABLE IF EXISTS " + TABLE_FAVORITES); db.execSQL("DROP TABLE IF EXISTS " + TABLE_WORKSPACE_SCREENS); onCreate(db); |