diff options
| -rw-r--r-- | api/system-current.txt | 2 | ||||
| -rw-r--r-- | api/test-current.txt | 59 | ||||
| -rw-r--r-- | core/java/android/content/Context.java | 2 | ||||
| -rw-r--r-- | core/java/android/content/Intent.java | 2 | ||||
| -rw-r--r-- | core/java/android/content/pm/PackageInstaller.java | 7 | ||||
| -rw-r--r-- | core/java/android/content/rollback/PackageRollbackInfo.java | 3 | ||||
| -rw-r--r-- | core/java/android/content/rollback/RollbackInfo.java | 3 | ||||
| -rw-r--r-- | core/java/android/content/rollback/RollbackManager.java | 26 | ||||
| -rw-r--r-- | core/java/android/provider/DeviceConfig.java | 2 | ||||
| -rw-r--r-- | core/res/AndroidManifest.xml | 4 | ||||
| -rw-r--r-- | services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java | 3 | ||||
| -rw-r--r-- | tests/RollbackTest/Android.bp | 2 |
12 files changed, 98 insertions, 17 deletions
diff --git a/api/system-current.txt b/api/system-current.txt index 28104d56f85a..96c9c7526fd2 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -1836,10 +1836,8 @@ package android.content.rollback { public final class RollbackManager { method @RequiresPermission(android.Manifest.permission.MANAGE_ROLLBACKS) public void commitRollback(int, @NonNull java.util.List<android.content.pm.VersionedPackage>, @NonNull android.content.IntentSender); - method @RequiresPermission(android.Manifest.permission.MANAGE_ROLLBACKS) public void expireRollbackForPackage(@NonNull String); method @RequiresPermission(android.Manifest.permission.MANAGE_ROLLBACKS) @NonNull public java.util.List<android.content.rollback.RollbackInfo> getAvailableRollbacks(); method @RequiresPermission(android.Manifest.permission.MANAGE_ROLLBACKS) @NonNull public java.util.List<android.content.rollback.RollbackInfo> getRecentlyCommittedRollbacks(); - method @RequiresPermission(android.Manifest.permission.MANAGE_ROLLBACKS) public void reloadPersistedData(); field public static final String EXTRA_STATUS = "android.content.rollback.extra.STATUS"; field public static final String EXTRA_STATUS_MESSAGE = "android.content.rollback.extra.STATUS_MESSAGE"; field public static final int STATUS_FAILURE = 1; // 0x1 diff --git a/api/test-current.txt b/api/test-current.txt index 46e061b740e6..29137438384e 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -11,8 +11,10 @@ package android { field public static final String CONFIGURE_DISPLAY_BRIGHTNESS = "android.permission.CONFIGURE_DISPLAY_BRIGHTNESS"; field public static final String FORCE_STOP_PACKAGES = "android.permission.FORCE_STOP_PACKAGES"; field public static final String MANAGE_ACTIVITY_STACKS = "android.permission.MANAGE_ACTIVITY_STACKS"; + field public static final String MANAGE_ROLLBACKS = "android.permission.MANAGE_ROLLBACKS"; field public static final String READ_CELL_BROADCASTS = "android.permission.READ_CELL_BROADCASTS"; field public static final String REMOVE_TASKS = "android.permission.REMOVE_TASKS"; + field public static final String WRITE_DEVICE_CONFIG = "android.permission.WRITE_DEVICE_CONFIG"; field public static final String WRITE_MEDIA_STORAGE = "android.permission.WRITE_MEDIA_STORAGE"; field public static final String WRITE_OBB = "android.permission.WRITE_OBB"; } @@ -596,6 +598,7 @@ package android.content { method public int getUserId(); method public void setAutofillOptions(@Nullable android.content.AutofillOptions); method public void setContentCaptureOptions(@Nullable android.content.ContentCaptureOptions); + field public static final String ROLLBACK_SERVICE = "rollback"; } public class ContextWrapper extends android.content.Context { @@ -603,6 +606,7 @@ package android.content { } public class Intent implements java.lang.Cloneable android.os.Parcelable { + field public static final String ACTION_ROLLBACK_COMMITTED = "android.intent.action.ROLLBACK_COMMITTED"; field public static final String EXTRA_ROLE_NAME = "android.intent.extra.ROLE_NAME"; } @@ -626,6 +630,12 @@ package android.content.pm { ctor public LauncherApps(android.content.Context); } + public static class PackageInstaller.SessionParams implements android.os.Parcelable { + method public void setEnableRollback(boolean); + method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void setInstallAsApex(); + method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void setStaged(); + } + public abstract class PackageManager { method public abstract boolean arePermissionsIndividuallyControlled(); method @RequiresPermission("android.permission.INTERACT_ACROSS_USERS_FULL") public abstract String getDefaultBrowserPackageNameAsUser(int); @@ -686,6 +696,44 @@ package android.content.res { } +package android.content.rollback { + + public final class PackageRollbackInfo implements android.os.Parcelable { + method public int describeContents(); + method @NonNull public String getPackageName(); + method @NonNull public android.content.pm.VersionedPackage getVersionRolledBackFrom(); + method @NonNull public android.content.pm.VersionedPackage getVersionRolledBackTo(); + method public void writeToParcel(android.os.Parcel, int); + field @NonNull public static final android.os.Parcelable.Creator<android.content.rollback.PackageRollbackInfo> CREATOR; + } + + public final class RollbackInfo implements android.os.Parcelable { + method public int describeContents(); + method @NonNull public java.util.List<android.content.pm.VersionedPackage> getCausePackages(); + method public int getCommittedSessionId(); + method @NonNull public java.util.List<android.content.rollback.PackageRollbackInfo> getPackages(); + method public int getRollbackId(); + method public boolean isStaged(); + method public void writeToParcel(android.os.Parcel, int); + field @NonNull public static final android.os.Parcelable.Creator<android.content.rollback.RollbackInfo> CREATOR; + } + + public final class RollbackManager { + method @RequiresPermission(android.Manifest.permission.MANAGE_ROLLBACKS) public void commitRollback(int, @NonNull java.util.List<android.content.pm.VersionedPackage>, @NonNull android.content.IntentSender); + method @RequiresPermission(android.Manifest.permission.MANAGE_ROLLBACKS) public void expireRollbackForPackage(@NonNull String); + method @RequiresPermission(android.Manifest.permission.MANAGE_ROLLBACKS) @NonNull public java.util.List<android.content.rollback.RollbackInfo> getAvailableRollbacks(); + method @RequiresPermission(android.Manifest.permission.MANAGE_ROLLBACKS) @NonNull public java.util.List<android.content.rollback.RollbackInfo> getRecentlyCommittedRollbacks(); + method @RequiresPermission(android.Manifest.permission.MANAGE_ROLLBACKS) public void reloadPersistedData(); + field public static final String EXTRA_STATUS = "android.content.rollback.extra.STATUS"; + field public static final String EXTRA_STATUS_MESSAGE = "android.content.rollback.extra.STATUS_MESSAGE"; + field public static final int STATUS_FAILURE = 1; // 0x1 + field public static final int STATUS_FAILURE_INSTALL = 3; // 0x3 + field public static final int STATUS_FAILURE_ROLLBACK_UNAVAILABLE = 2; // 0x2 + field public static final int STATUS_SUCCESS = 0; // 0x0 + } + +} + package android.database.sqlite { public class SQLiteCompatibilityWalFlags { @@ -2015,8 +2063,8 @@ package android.provider { method @RequiresPermission("android.permission.READ_DEVICE_CONFIG") public static String getString(String, String, String); method public static void removeOnPropertiesChangedListener(@NonNull android.provider.DeviceConfig.OnPropertiesChangedListener); method public static void removeOnPropertyChangedListener(@NonNull android.provider.DeviceConfig.OnPropertyChangedListener); - method @RequiresPermission("android.permission.WRITE_DEVICE_CONFIG") public static void resetToDefaults(int, @Nullable String); - method @RequiresPermission("android.permission.WRITE_DEVICE_CONFIG") public static boolean setProperty(String, String, String, boolean); + method @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static void resetToDefaults(int, @Nullable String); + method @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static boolean setProperty(String, String, String, boolean); field public static final String NAMESPACE_AUTOFILL = "autofill"; field public static final String NAMESPACE_CONTENT_CAPTURE = "content_capture"; } @@ -2044,6 +2092,13 @@ package android.provider { method @Nullable public String getString(@NonNull String, @Nullable String); } + public static interface DeviceConfig.Rollback { + field public static final String BOOT_NAMESPACE = "rollback_boot"; + field public static final String ENABLE_ROLLBACK_TIMEOUT = "enable_rollback_timeout"; + field public static final String NAMESPACE = "rollback"; + field public static final String ROLLBACK_LIFETIME_IN_MILLIS = "rollback_lifetime_in_millis"; + } + public final class MediaStore { method @RequiresPermission(android.Manifest.permission.CLEAR_APP_USER_DATA) public static void deleteContributedMedia(android.content.Context, String, android.os.UserHandle) throws java.io.IOException; method @RequiresPermission(android.Manifest.permission.CLEAR_APP_USER_DATA) public static long getContributedMediaSize(android.content.Context, String, android.os.UserHandle) throws java.io.IOException; diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java index f896274ed8b3..0c76f3f049a8 100644 --- a/core/java/android/content/Context.java +++ b/core/java/android/content/Context.java @@ -4089,7 +4089,7 @@ public abstract class Context { * @see #getSystemService(String) * @hide */ - @SystemApi + @SystemApi @TestApi public static final String ROLLBACK_SERVICE = "rollback"; /** diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java index 0715572c03c0..a2d3f6af2564 100644 --- a/core/java/android/content/Intent.java +++ b/core/java/android/content/Intent.java @@ -2441,7 +2441,7 @@ public class Intent implements Parcelable, Cloneable { * * @hide */ - @SystemApi + @SystemApi @TestApi @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String ACTION_ROLLBACK_COMMITTED = "android.intent.action.ROLLBACK_COMMITTED"; diff --git a/core/java/android/content/pm/PackageInstaller.java b/core/java/android/content/pm/PackageInstaller.java index f14b22861006..33b9c724de21 100644 --- a/core/java/android/content/pm/PackageInstaller.java +++ b/core/java/android/content/pm/PackageInstaller.java @@ -24,6 +24,7 @@ import android.annotation.RequiresPermission; import android.annotation.SdkConstant; import android.annotation.SdkConstant.SdkConstantType; import android.annotation.SystemApi; +import android.annotation.TestApi; import android.annotation.UnsupportedAppUsage; import android.app.ActivityManager; import android.app.AppGlobals; @@ -1465,7 +1466,7 @@ public class PackageInstaller { * @param enable set to {@code true} to enable, {@code false} to disable * @hide */ - @SystemApi + @SystemApi @TestApi public void setEnableRollback(boolean enable) { if (enable) { installFlags |= PackageManager.INSTALL_ENABLE_ROLLBACK; @@ -1591,7 +1592,7 @@ public class PackageInstaller { * * {@hide} */ - @SystemApi + @SystemApi @TestApi @RequiresPermission(Manifest.permission.INSTALL_PACKAGES) public void setStaged() { this.isStaged = true; @@ -1602,7 +1603,7 @@ public class PackageInstaller { * * {@hide} */ - @SystemApi + @SystemApi @TestApi @RequiresPermission(Manifest.permission.INSTALL_PACKAGES) public void setInstallAsApex() { installFlags |= PackageManager.INSTALL_APEX; diff --git a/core/java/android/content/rollback/PackageRollbackInfo.java b/core/java/android/content/rollback/PackageRollbackInfo.java index b0785b1fbc11..201475130753 100644 --- a/core/java/android/content/rollback/PackageRollbackInfo.java +++ b/core/java/android/content/rollback/PackageRollbackInfo.java @@ -18,6 +18,7 @@ package android.content.rollback; import android.annotation.NonNull; import android.annotation.SystemApi; +import android.annotation.TestApi; import android.content.pm.VersionedPackage; import android.os.Parcel; import android.os.Parcelable; @@ -31,7 +32,7 @@ import java.util.ArrayList; * * @hide */ -@SystemApi +@SystemApi @TestApi public final class PackageRollbackInfo implements Parcelable { private final VersionedPackage mVersionRolledBackFrom; diff --git a/core/java/android/content/rollback/RollbackInfo.java b/core/java/android/content/rollback/RollbackInfo.java index a363718a8b1d..c09cfd54866c 100644 --- a/core/java/android/content/rollback/RollbackInfo.java +++ b/core/java/android/content/rollback/RollbackInfo.java @@ -18,6 +18,7 @@ package android.content.rollback; import android.annotation.NonNull; import android.annotation.SystemApi; +import android.annotation.TestApi; import android.content.pm.VersionedPackage; import android.os.Parcel; import android.os.Parcelable; @@ -30,7 +31,7 @@ import java.util.List; * * @hide */ -@SystemApi +@SystemApi @TestApi public final class RollbackInfo implements Parcelable { /** diff --git a/core/java/android/content/rollback/RollbackManager.java b/core/java/android/content/rollback/RollbackManager.java index 4e8c254138de..9038b033c3c0 100644 --- a/core/java/android/content/rollback/RollbackManager.java +++ b/core/java/android/content/rollback/RollbackManager.java @@ -16,16 +16,20 @@ package android.content.rollback; +import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.RequiresPermission; import android.annotation.SystemApi; import android.annotation.SystemService; +import android.annotation.TestApi; import android.content.Context; import android.content.IntentSender; import android.content.pm.ParceledListSlice; import android.content.pm.VersionedPackage; import android.os.RemoteException; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; import java.util.List; /** @@ -38,7 +42,7 @@ import java.util.List; * @see PackageInstaller.SessionParams#setEnableRollback() * @hide */ -@SystemApi +@SystemApi @TestApi @SystemService(Context.ROLLBACK_SERVICE) public final class RollbackManager { private final String mCallerPackageName; @@ -112,6 +116,20 @@ public final class RollbackManager { "android.content.rollback.extra.STATUS_MESSAGE"; /** + * Status result of committing a rollback. + * + * @hide + */ + @IntDef(prefix = "STATUS_", value = { + STATUS_SUCCESS, + STATUS_FAILURE, + STATUS_FAILURE_ROLLBACK_UNAVAILABLE, + STATUS_FAILURE_INSTALL, + }) + @Retention(RetentionPolicy.SOURCE) + public @interface Status {}; + + /** * The rollback was successfully committed. */ public static final int STATUS_SUCCESS = 0; @@ -175,8 +193,11 @@ public final class RollbackManager { * * @throws SecurityException if the caller does not have the * MANAGE_ROLLBACKS permission. + * + * @hide */ @RequiresPermission(android.Manifest.permission.MANAGE_ROLLBACKS) + @TestApi public void reloadPersistedData() { try { mBinder.reloadPersistedData(); @@ -194,8 +215,11 @@ public final class RollbackManager { * @param packageName the name of the package to expire data for. * @throws SecurityException if the caller does not have the * MANAGE_ROLLBACKS permission. + * + * @hide */ @RequiresPermission(android.Manifest.permission.MANAGE_ROLLBACKS) + @TestApi public void expireRollbackForPackage(@NonNull String packageName) { try { mBinder.expireRollbackForPackage(packageName); diff --git a/core/java/android/provider/DeviceConfig.java b/core/java/android/provider/DeviceConfig.java index e4593e55a2c6..261e5db49306 100644 --- a/core/java/android/provider/DeviceConfig.java +++ b/core/java/android/provider/DeviceConfig.java @@ -322,7 +322,7 @@ public final class DeviceConfig { * * @hide */ - @SystemApi + @SystemApi @TestApi public interface Rollback { /** diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 67bff6bb67f6..ea300aa170ee 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -2524,7 +2524,7 @@ <permission android:name="android.permission.WRITE_GSERVICES" android:protectionLevel="signature|privileged" /> - <!-- @SystemApi @hide Allows an application to modify config settings. + <!-- @SystemApi @TestApi @hide Allows an application to modify config settings. <p>Not for use by third-party applications. --> <permission android:name="android.permission.WRITE_DEVICE_CONFIG" android:protectionLevel="signature|configurator"/> @@ -3917,7 +3917,7 @@ <permission android:name="android.permission.PACKAGE_ROLLBACK_AGENT" android:protectionLevel="signature" /> - <!-- @SystemApi @hide Allows managing apk level rollbacks. --> + <!-- @SystemApi @TestApi @hide Allows managing apk level rollbacks. --> <permission android:name="android.permission.MANAGE_ROLLBACKS" android:protectionLevel="signature|verifier" /> diff --git a/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java b/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java index 871f9f862945..952399bf3a7d 100644 --- a/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java +++ b/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java @@ -684,7 +684,8 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub { * @param status the RollbackManager.STATUS_* code with the failure. * @param message the failure message. */ - private void sendFailure(IntentSender statusReceiver, int status, String message) { + private void sendFailure(IntentSender statusReceiver, @RollbackManager.Status int status, + String message) { Log.e(TAG, message); try { final Intent fillIn = new Intent(); diff --git a/tests/RollbackTest/Android.bp b/tests/RollbackTest/Android.bp index 8be721a04305..dfc3b6e15b3e 100644 --- a/tests/RollbackTest/Android.bp +++ b/tests/RollbackTest/Android.bp @@ -118,7 +118,7 @@ android_test { ":com.android.tests.rollback.testapex.RollbackTestApexV2", ], test_config: "RollbackTest.xml", - sdk_version: "system_current", + sdk_version: "test_current", } java_test_host { |