Merge "Correctly skip files that are excluded from restore" into mnc-dev

This commit is contained in:
Matthew Williams
2015-08-07 21:25:31 +00:00
committed by Android (Google) Code Review

View File

@ -605,6 +605,13 @@ public abstract class BackupAgent extends ContextWrapper {
public void onRestoreFile(ParcelFileDescriptor data, long size, public void onRestoreFile(ParcelFileDescriptor data, long size,
File destination, int type, long mode, long mtime) File destination, int type, long mode, long mtime)
throws IOException { 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); FullBackup.BackupScheme bs = FullBackup.getBackupScheme(this);
if (!bs.isFullBackupContentEnabled()) { if (!bs.isFullBackupContentEnabled()) {
if (Log.isLoggable(FullBackup.TAG_XML_PARSER, Log.VERBOSE)) { if (Log.isLoggable(FullBackup.TAG_XML_PARSER, Log.VERBOSE)) {
@ -612,8 +619,9 @@ public abstract class BackupAgent extends ContextWrapper {
"onRestoreFile \"" + destination.getCanonicalPath() "onRestoreFile \"" + destination.getCanonicalPath()
+ "\" : fullBackupContent not enabled for " + getPackageName()); + "\" : fullBackupContent not enabled for " + getPackageName());
} }
return; return false;
} }
Map<String, Set<String>> includes = null; Map<String, Set<String>> includes = null;
ArraySet<String> excludes = null; ArraySet<String> excludes = null;
final String destinationCanonicalPath = destination.getCanonicalPath(); final String destinationCanonicalPath = destination.getCanonicalPath();
@ -627,7 +635,7 @@ public abstract class BackupAgent extends ContextWrapper {
+ "\" : Exception trying to parse fullBackupContent xml file!" + "\" : Exception trying to parse fullBackupContent xml file!"
+ " Aborting onRestoreFile.", e); + " Aborting onRestoreFile.", e);
} }
return; return false;
} }
if (excludes != null && if (excludes != null &&
@ -637,7 +645,7 @@ public abstract class BackupAgent extends ContextWrapper {
"onRestoreFile: \"" + destinationCanonicalPath + "\": listed in" "onRestoreFile: \"" + destinationCanonicalPath + "\": listed in"
+ " excludes; skipping."); + " excludes; skipping.");
} }
return; return false;
} }
if (includes != null && !includes.isEmpty()) { if (includes != null && !includes.isEmpty()) {
@ -657,10 +665,10 @@ public abstract class BackupAgent extends ContextWrapper {
+ destinationCanonicalPath + "\" but it isn't specified" + destinationCanonicalPath + "\" but it isn't specified"
+ " in the included files; skipping."); + " in the included files; skipping.");
} }
return; return false;
} }
} }
FullBackup.restoreFile(data, size, type, mode, mtime, destination); return true;
} }
/** /**