summaryrefslogtreecommitdiffstats
path: root/src/com/android
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2015-01-20 19:39:40 +0000
committerandroid-build-merger <android-build-merger@google.com>2015-01-20 19:39:40 +0000
commit295a17aabb3287c8b1f240e4444c0061f427c0b9 (patch)
treeb114a17fbe14792189b65fc3ce0814558b183994 /src/com/android
parent6d33ad7afb35887fcccfb275f0d602b6e4829fdc (diff)
parent2d264802754e78a98ab1a52c39aa4ceef75b32ae (diff)
downloadandroid_packages_apps_Trebuchet-295a17aabb3287c8b1f240e4444c0061f427c0b9.tar.gz
android_packages_apps_Trebuchet-295a17aabb3287c8b1f240e4444c0061f427c0b9.tar.bz2
android_packages_apps_Trebuchet-295a17aabb3287c8b1f240e4444c0061f427c0b9.zip
Merge "Avoiding writing the Metadata in the backup if nothing was changed in the backup" into ub-launcher3-almonte
automerge: 2d26480 * commit '2d264802754e78a98ab1a52c39aa4ceef75b32ae': Avoiding writing the Metadata in the backup if nothing was changed in the backup
Diffstat (limited to 'src/com/android')
-rw-r--r--src/com/android/launcher3/LauncherBackupAgentHelper.java2
-rw-r--r--src/com/android/launcher3/LauncherBackupHelper.java32
2 files changed, 25 insertions, 9 deletions
diff --git a/src/com/android/launcher3/LauncherBackupAgentHelper.java b/src/com/android/launcher3/LauncherBackupAgentHelper.java
index 3d7d3f271..ddfd70d6b 100644
--- a/src/com/android/launcher3/LauncherBackupAgentHelper.java
+++ b/src/com/android/launcher3/LauncherBackupAgentHelper.java
@@ -32,7 +32,7 @@ public class LauncherBackupAgentHelper extends BackupAgentHelper {
private static final String LAUNCHER_DATA_PREFIX = "L";
- static final boolean VERBOSE = true;
+ static final boolean VERBOSE = false;
static final boolean DEBUG = false;
private static BackupManager sBackupManager;
diff --git a/src/com/android/launcher3/LauncherBackupHelper.java b/src/com/android/launcher3/LauncherBackupHelper.java
index 4faa8ace8..32bea5baa 100644
--- a/src/com/android/launcher3/LauncherBackupHelper.java
+++ b/src/com/android/launcher3/LauncherBackupHelper.java
@@ -57,6 +57,7 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URISyntaxException;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.zip.CRC32;
@@ -140,9 +141,9 @@ public class LauncherBackupHelper implements BackupHelper {
private IconCache mIconCache;
private BackupManager mBackupManager;
- private HashMap<ComponentName, AppWidgetProviderInfo> mWidgetMap;
private byte[] mBuffer = new byte[512];
private long mLastBackupRestoreTime;
+ private boolean mBackupDataWasUpdated;
private DeviceProfieData mCurrentProfile;
boolean restoreSuccessful;
@@ -201,7 +202,7 @@ public class LauncherBackupHelper implements BackupHelper {
// Record the time before performing backup so that entries edited while the backup
// was going on, do not get missed in next backup.
long newBackupTime = System.currentTimeMillis();
-
+ mBackupDataWasUpdated = false;
try {
backupFavorites(data);
backupScreens(data);
@@ -219,16 +220,30 @@ public class LauncherBackupHelper implements BackupHelper {
for (String deleted: mExistingKeys) {
if (VERBOSE) Log.v(TAG, "dropping deleted item " + deleted);
data.writeEntityHeader(deleted, -1);
+ mBackupDataWasUpdated = true;
}
mExistingKeys.clear();
- mLastBackupRestoreTime = newBackupTime;
+ if (!mBackupDataWasUpdated) {
+ // Check if any metadata has changed
+ mBackupDataWasUpdated = (in.profile == null)
+ || !Arrays.equals(DeviceProfieData.toByteArray(in.profile),
+ DeviceProfieData.toByteArray(getDeviceProfieData()))
+ || (in.backupVersion != BACKUP_VERSION)
+ || (in.appVersion != getAppVersion());
+ }
+
+ if (mBackupDataWasUpdated) {
+ mLastBackupRestoreTime = newBackupTime;
- // We store the journal at two places.
- // 1) Storing it in newState allows us to do partial backups by comparing old state
- // 2) Storing it in backup data allows us to validate keys during restore
- Journal state = getCurrentStateJournal();
- writeRowToBackup(JOURNAL_KEY, state, data);
+ // We store the journal at two places.
+ // 1) Storing it in newState allows us to do partial backups by comparing old state
+ // 2) Storing it in backup data allows us to validate keys during restore
+ Journal state = getCurrentStateJournal();
+ writeRowToBackup(JOURNAL_KEY, state, data);
+ } else {
+ if (DEBUG) Log.d(TAG, "Nothing was written during backup");
+ }
} catch (IOException e) {
Log.e(TAG, "launcher backup has failed", e);
}
@@ -1020,6 +1035,7 @@ public class LauncherBackupHelper implements BackupHelper {
byte[] blob = writeCheckedBytes(proto);
data.writeEntityHeader(backupKey, blob.length);
data.writeEntityData(blob, blob.length);
+ mBackupDataWasUpdated = true;
if (VERBOSE) Log.v(TAG, "Writing New entry " + backupKey);
}