summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/app/backup/BackupAgent.java18
1 files changed, 13 insertions, 5 deletions
diff --git a/core/java/android/app/backup/BackupAgent.java b/core/java/android/app/backup/BackupAgent.java
index 6fca0de98104..689283c8e550 100644
--- a/core/java/android/app/backup/BackupAgent.java
+++ b/core/java/android/app/backup/BackupAgent.java
@@ -605,6 +605,13 @@ public abstract class BackupAgent extends ContextWrapper {
public void onRestoreFile(ParcelFileDescriptor data, long size,
File destination, int type, long mode, long mtime)
throws IOException {
+
+ final boolean accept = isFileEligibleForRestore(destination);
+ // If we don't accept the file, consume the bytes from the pipe anyway.
+ FullBackup.restoreFile(data, size, type, mode, mtime, accept ? destination : null);
+ }
+
+ private boolean isFileEligibleForRestore(File destination) throws IOException {
FullBackup.BackupScheme bs = FullBackup.getBackupScheme(this);
if (!bs.isFullBackupContentEnabled()) {
if (Log.isLoggable(FullBackup.TAG_XML_PARSER, Log.VERBOSE)) {
@@ -612,8 +619,9 @@ public abstract class BackupAgent extends ContextWrapper {
"onRestoreFile \"" + destination.getCanonicalPath()
+ "\" : fullBackupContent not enabled for " + getPackageName());
}
- return;
+ return false;
}
+
Map<String, Set<String>> includes = null;
ArraySet<String> excludes = null;
final String destinationCanonicalPath = destination.getCanonicalPath();
@@ -627,7 +635,7 @@ public abstract class BackupAgent extends ContextWrapper {
+ "\" : Exception trying to parse fullBackupContent xml file!"
+ " Aborting onRestoreFile.", e);
}
- return;
+ return false;
}
if (excludes != null &&
@@ -637,7 +645,7 @@ public abstract class BackupAgent extends ContextWrapper {
"onRestoreFile: \"" + destinationCanonicalPath + "\": listed in"
+ " excludes; skipping.");
}
- return;
+ return false;
}
if (includes != null && !includes.isEmpty()) {
@@ -657,10 +665,10 @@ public abstract class BackupAgent extends ContextWrapper {
+ destinationCanonicalPath + "\" but it isn't specified"
+ " in the included files; skipping.");
}
- return;
+ return false;
}
}
- FullBackup.restoreFile(data, size, type, mode, mtime, destination);
+ return true;
}
/**