diff --git a/api/system-current.txt b/api/system-current.txt index 0f1ab294c67a3..2ba82abf5a39d 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -1576,6 +1576,7 @@ package android.content.pm { method public boolean getAllocateAggressive(); method @Deprecated public boolean getAllowDowngrade(); method public boolean getDontKillApp(); + method public boolean getEnableRollback(); method @Nullable public String[] getGrantedRuntimePermissions(); method public boolean getInstallAsFullApp(boolean); method public boolean getInstallAsInstantApp(boolean); @@ -1587,7 +1588,7 @@ package android.content.pm { method @RequiresPermission(android.Manifest.permission.ALLOCATE_AGGRESSIVE) public void setAllocateAggressive(boolean); method @Deprecated public void setAllowDowngrade(boolean); method public void setDontKillApp(boolean); - method public void setEnableRollback(); + method public void setEnableRollback(boolean); method @RequiresPermission(android.Manifest.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS) public void setGrantedRuntimePermissions(String[]); method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void setInstallAsApex(); method public void setInstallAsInstantApp(boolean); diff --git a/api/system-removed.txt b/api/system-removed.txt index 7e044698c72c5..18d0ec02f077a 100644 --- a/api/system-removed.txt +++ b/api/system-removed.txt @@ -60,6 +60,14 @@ package android.content { } +package android.content.pm { + + public static class PackageInstaller.SessionParams implements android.os.Parcelable { + method @Deprecated public void setEnableRollback(); + } + +} + package android.location { public class LocationManager { diff --git a/core/java/android/content/pm/PackageInstaller.java b/core/java/android/content/pm/PackageInstaller.java index d758c4d1c982a..7b4dd195ded93 100644 --- a/core/java/android/content/pm/PackageInstaller.java +++ b/core/java/android/content/pm/PackageInstaller.java @@ -1448,13 +1448,32 @@ public class PackageInstaller { /** * Request that rollbacks be enabled for the given upgrade. + * + * @removed + * @deprecated use {@link #setEnableRollback(boolean)} instead. * @hide */ + @Deprecated @SystemApi public void setEnableRollback() { installFlags |= PackageManager.INSTALL_ENABLE_ROLLBACK; } + /** + * Request that rollbacks be enabled or disabled for the given upgrade. + * + * @param enable set to {@code true} to enable, {@code false} to disable + * @hide + */ + @SystemApi + public void setEnableRollback(boolean enable) { + if (enable) { + installFlags |= PackageManager.INSTALL_ENABLE_ROLLBACK; + } else { + installFlags &= ~PackageManager.INSTALL_ENABLE_ROLLBACK; + } + } + /** * @deprecated use {@link #setRequestDowngrade(boolean)}. * {@hide} @@ -2057,6 +2076,16 @@ public class PackageInstaller { return (installFlags & PackageManager.INSTALL_VIRTUAL_PRELOAD) != 0; } + /** + * Return whether rollback is enabled or disabled for the given upgrade. + * + * @hide + */ + @SystemApi + public boolean getEnableRollback() { + return (installFlags & PackageManager.INSTALL_ENABLE_ROLLBACK) != 0; + } + /** * Get the value set in {@link SessionParams#setAllocateAggressive(boolean)}. * diff --git a/tests/RollbackTest/RollbackTest/src/com/android/tests/rollback/RollbackTestUtils.java b/tests/RollbackTest/RollbackTest/src/com/android/tests/rollback/RollbackTestUtils.java index ed8a53364ec6d..a03fae0aa6069 100644 --- a/tests/RollbackTest/RollbackTest/src/com/android/tests/rollback/RollbackTestUtils.java +++ b/tests/RollbackTest/RollbackTest/src/com/android/tests/rollback/RollbackTestUtils.java @@ -165,9 +165,7 @@ class RollbackTestUtils { PackageInstaller packageInstaller = context.getPackageManager().getPackageInstaller(); PackageInstaller.SessionParams params = new PackageInstaller.SessionParams( PackageInstaller.SessionParams.MODE_FULL_INSTALL); - if (enableRollback) { - params.setEnableRollback(); - } + params.setEnableRollback(enableRollback); int sessionId = packageInstaller.createSession(params); session = packageInstaller.openSession(sessionId); @@ -224,11 +222,9 @@ class RollbackTestUtils { if (staged) { multiPackageParams.setStaged(); } - if (enableRollback) { - // TODO: Do we set this on the parent params, the child params, or - // both? - multiPackageParams.setEnableRollback(); - } + // TODO: Do we set this on the parent params, the child params, or + // both? + multiPackageParams.setEnableRollback(enableRollback); int multiPackageId = packageInstaller.createSession(multiPackageParams); PackageInstaller.Session multiPackage = packageInstaller.openSession(multiPackageId); @@ -242,9 +238,7 @@ class RollbackTestUtils { if (resourceName.endsWith(".apex")) { params.setInstallAsApex(); } - if (enableRollback) { - params.setEnableRollback(); - } + params.setEnableRollback(enableRollback); int sessionId = packageInstaller.createSession(params); session = packageInstaller.openSession(sessionId);