Merge "Expose ROLLBACK_DATA_POLICY_* as system api"

This commit is contained in:
JW Wang
2021-08-09 08:30:30 +00:00
committed by Android (Google) Code Review
9 changed files with 46 additions and 32 deletions

View File

@@ -2831,6 +2831,9 @@ package android.content.pm {
field public static final int RESTRICTION_HIDE_FROM_SUGGESTIONS = 1; // 0x1
field public static final int RESTRICTION_HIDE_NOTIFICATIONS = 2; // 0x2
field public static final int RESTRICTION_NONE = 0; // 0x0
field public static final int ROLLBACK_DATA_POLICY_RESTORE = 0; // 0x0
field public static final int ROLLBACK_DATA_POLICY_RETAIN = 2; // 0x2
field public static final int ROLLBACK_DATA_POLICY_WIPE = 1; // 0x1
field public static final int SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_HIDDEN = 0; // 0x0
field public static final int SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_VISIBLE = 1; // 0x1
field public static final int SYSTEM_APP_STATE_INSTALLED = 2; // 0x2

View File

@@ -1616,7 +1616,7 @@ public class PackageInstaller {
/** {@hide} */
public DataLoaderParams dataLoaderParams;
/** {@hide} */
public int rollbackDataPolicy = PackageManager.RollbackDataPolicy.RESTORE;
public int rollbackDataPolicy = PackageManager.ROLLBACK_DATA_POLICY_RESTORE;
/** {@hide} */
public boolean forceQueryableOverride;
/** {@hide} */
@@ -1887,7 +1887,7 @@ public class PackageInstaller {
} else {
installFlags &= ~PackageManager.INSTALL_ENABLE_ROLLBACK;
}
rollbackDataPolicy = PackageManager.RollbackDataPolicy.RESTORE;
rollbackDataPolicy = PackageManager.ROLLBACK_DATA_POLICY_RESTORE;
}
/**

View File

@@ -1053,26 +1053,37 @@ public abstract class PackageManager {
/** @hide */
@Retention(RetentionPolicy.SOURCE)
@IntDef(value = {
RollbackDataPolicy.RESTORE,
RollbackDataPolicy.WIPE,
RollbackDataPolicy.RETAIN
@IntDef(prefix = { "ROLLBACK_DATA_POLICY_" }, value = {
ROLLBACK_DATA_POLICY_RESTORE,
ROLLBACK_DATA_POLICY_WIPE,
ROLLBACK_DATA_POLICY_RETAIN
})
public @interface RollbackDataPolicy {
/**
* User data will be backed up during install and restored during rollback.
*/
int RESTORE = 0;
/**
* User data won't be backed up during install but will be wiped out during rollback.
*/
int WIPE = 1;
/**
* User data won't be backed up during install and won't be restored during rollback.
* TODO: Not implemented yet.
*/
int RETAIN = 2;
}
public @interface RollbackDataPolicy {}
/**
* User data will be backed up during install and restored during rollback.
*
* @hide
*/
@SystemApi
public static final int ROLLBACK_DATA_POLICY_RESTORE = 0;
/**
* User data won't be backed up during install but will be wiped out during rollback.
*
* @hide
*/
@SystemApi
public static final int ROLLBACK_DATA_POLICY_WIPE = 1;
/**
* User data won't be backed up during install and won't be restored during rollback.
* TODO: Not implemented yet.
*
* @hide
*/
@SystemApi
public static final int ROLLBACK_DATA_POLICY_RETAIN = 2;
/** @hide */
@IntDef(flag = true, prefix = { "INSTALL_" }, value = {

View File

@@ -180,7 +180,7 @@ public final class PackageRollbackInfo implements Parcelable {
@NonNull List<Integer> pendingBackups, @NonNull ArrayList<RestoreInfo> pendingRestores,
boolean isApex, boolean isApkInApex, @NonNull List<Integer> snapshottedUsers) {
this(packageRolledBackFrom, packageRolledBackTo, pendingBackups, pendingRestores, isApex,
isApkInApex, snapshottedUsers, PackageManager.RollbackDataPolicy.RESTORE);
isApkInApex, snapshottedUsers, PackageManager.ROLLBACK_DATA_POLICY_RESTORE);
}
/** @hide */
@@ -207,7 +207,7 @@ public final class PackageRollbackInfo implements Parcelable {
this.mPendingRestores = null;
this.mPendingBackups = null;
this.mSnapshottedUsers = null;
this.mRollbackDataPolicy = PackageManager.RollbackDataPolicy.RESTORE;
this.mRollbackDataPolicy = PackageManager.ROLLBACK_DATA_POLICY_RESTORE;
}
@Override

View File

@@ -143,10 +143,10 @@ public class AppDataRollbackHelper {
int rollbackId, int appId, String seInfo, int flags) {
if (packageRollbackInfo.isApex()) {
switch (packageRollbackInfo.getRollbackDataPolicy()) {
case PackageManager.RollbackDataPolicy.WIPE:
case PackageManager.ROLLBACK_DATA_POLICY_WIPE:
// TODO: Implement WIPE for apex CE data
break;
case PackageManager.RollbackDataPolicy.RESTORE:
case PackageManager.ROLLBACK_DATA_POLICY_RESTORE:
// For APEX, only restore of CE may be done here.
if ((flags & Installer.FLAG_STORAGE_CE) != 0) {
mApexManager.restoreCeData(
@@ -160,11 +160,11 @@ public class AppDataRollbackHelper {
// APK
try {
switch (packageRollbackInfo.getRollbackDataPolicy()) {
case PackageManager.RollbackDataPolicy.WIPE:
case PackageManager.ROLLBACK_DATA_POLICY_WIPE:
mInstaller.clearAppData(null, packageRollbackInfo.getPackageName(),
userId, flags, 0);
break;
case PackageManager.RollbackDataPolicy.RESTORE:
case PackageManager.ROLLBACK_DATA_POLICY_RESTORE:
mInstaller.restoreAppDataSnapshot(packageRollbackInfo.getPackageName(),
appId, seInfo, userId, rollbackId, flags);

View File

@@ -438,7 +438,7 @@ class Rollback {
for (PackageRollbackInfo pkgRollbackInfo : info.getPackages()) {
if (pkgRollbackInfo.getPackageName().equals(packageName)) {
if (pkgRollbackInfo.getRollbackDataPolicy()
== PackageManager.RollbackDataPolicy.RESTORE) {
== PackageManager.ROLLBACK_DATA_POLICY_RESTORE) {
dataHelper.snapshotAppData(info.getRollbackId(), pkgRollbackInfo, userIds);
addAll(pkgRollbackInfo.getSnapshottedUsers(), userIds);
RollbackStore.saveRollback(this);

View File

@@ -800,7 +800,7 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub implements Rollba
// precedence only when it is not the default (i.e. RESTORE). We will remove
// SessionParams#setEnableRollback(boolean, int) and related code when Play has migrated to
// using the manifest to specify the policy.
if (manifestPolicy != PackageManager.RollbackDataPolicy.RESTORE) {
if (manifestPolicy != PackageManager.ROLLBACK_DATA_POLICY_RESTORE) {
return manifestPolicy;
}
return sessionPolicy;

View File

@@ -447,7 +447,7 @@ class RollbackStore {
// Backward compatibility: no such field for old versions.
final int rollbackDataPolicy = json.optInt("rollbackDataPolicy",
PackageManager.RollbackDataPolicy.RESTORE);
PackageManager.ROLLBACK_DATA_POLICY_RESTORE);
return new PackageRollbackInfo(versionRolledBackFrom, versionRolledBackTo,
pendingBackups, pendingRestores, isApex, isApkInApex, snapshottedUsers,

View File

@@ -301,9 +301,9 @@ public class StagedRollbackTest {
InstallUtils.processUserData(TestApp.C);
Install a2 = Install.single(TestApp.A2).setStaged()
.setEnableRollback(PackageManager.RollbackDataPolicy.WIPE);
.setEnableRollback(PackageManager.ROLLBACK_DATA_POLICY_WIPE);
Install b2 = Install.single(TestApp.B2).setStaged()
.setEnableRollback(PackageManager.RollbackDataPolicy.RESTORE);
.setEnableRollback(PackageManager.ROLLBACK_DATA_POLICY_RESTORE);
// The rollback data policy of C2 is specified in the manifest
Install c2 = Install.single(TestApp.C2).setStaged().setEnableRollback();
Install.multi(a2, b2, c2).setEnableRollback().setStaged().commit();