Respect restoreAnyVersion=true in full-data restore path
The scheduling mechanism was properly checking for it, but the raw data-handling engine wasn't. Now it is. Bug 32054889 Change-Id: Id57ea12be8e2674c4f678f058278b8c14865b6fa
This commit is contained in:
@@ -6057,7 +6057,11 @@ public class BackupManagerService {
|
|||||||
// the app developer's cert, so they're different on every
|
// the app developer's cert, so they're different on every
|
||||||
// device.
|
// device.
|
||||||
if (signaturesMatch(sigs, pkgInfo)) {
|
if (signaturesMatch(sigs, pkgInfo)) {
|
||||||
if (pkgInfo.versionCode >= version) {
|
if ((pkgInfo.applicationInfo.flags
|
||||||
|
& ApplicationInfo.FLAG_RESTORE_ANY_VERSION) != 0) {
|
||||||
|
Slog.i(TAG, "Package has restoreAnyVersion; taking data");
|
||||||
|
policy = RestorePolicy.ACCEPT;
|
||||||
|
} else if (pkgInfo.versionCode >= version) {
|
||||||
Slog.i(TAG, "Sig + version match; taking data");
|
Slog.i(TAG, "Sig + version match; taking data");
|
||||||
policy = RestorePolicy.ACCEPT;
|
policy = RestorePolicy.ACCEPT;
|
||||||
} else {
|
} else {
|
||||||
@@ -7479,7 +7483,11 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF
|
|||||||
// the app developer's cert, so they're different on every
|
// the app developer's cert, so they're different on every
|
||||||
// device.
|
// device.
|
||||||
if (signaturesMatch(sigs, pkgInfo)) {
|
if (signaturesMatch(sigs, pkgInfo)) {
|
||||||
if (pkgInfo.versionCode >= version) {
|
if ((pkgInfo.applicationInfo.flags
|
||||||
|
& ApplicationInfo.FLAG_RESTORE_ANY_VERSION) != 0) {
|
||||||
|
Slog.i(TAG, "Package has restoreAnyVersion; taking data");
|
||||||
|
policy = RestorePolicy.ACCEPT;
|
||||||
|
} else if (pkgInfo.versionCode >= version) {
|
||||||
Slog.i(TAG, "Sig + version match; taking data");
|
Slog.i(TAG, "Sig + version match; taking data");
|
||||||
policy = RestorePolicy.ACCEPT;
|
policy = RestorePolicy.ACCEPT;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user