Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 423c4f67 authored by Shrinidhi Hegde's avatar Shrinidhi Hegde Committed by Android (Google) Code Review
Browse files

Merge "Rollback info API change. Added impact level to RollbackInfo." into main

parents 6d93e4f3 c88f5b1f
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -3959,6 +3959,7 @@ package android.content.pm {
    method public void setInstallAsInstantApp(boolean);
    method public void setInstallAsVirtualPreload();
    method public void setRequestDowngrade(boolean);
    method @FlaggedApi("android.content.pm.recoverability_detection") @RequiresPermission(android.Manifest.permission.MANAGE_ROLLBACKS) public void setRollbackImpactLevel(int);
    method @FlaggedApi("android.content.pm.rollback_lifetime") @RequiresPermission(android.Manifest.permission.MANAGE_ROLLBACKS) public void setRollbackLifetimeMillis(long);
    method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void setStaged();
  }
@@ -4127,6 +4128,9 @@ package android.content.pm {
    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 @FlaggedApi("android.content.pm.recoverability_detection") public static final int ROLLBACK_USER_IMPACT_HIGH = 1; // 0x1
    field @FlaggedApi("android.content.pm.recoverability_detection") public static final int ROLLBACK_USER_IMPACT_LOW = 0; // 0x0
    field @FlaggedApi("android.content.pm.recoverability_detection") public static final int ROLLBACK_USER_IMPACT_ONLY_MANUAL = 2; // 0x2
    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
+4 −0
Original line number Diff line number Diff line
@@ -1210,6 +1210,10 @@ package android.content.res {

package android.content.rollback {

  public final class RollbackInfo implements android.os.Parcelable {
    method @FlaggedApi("android.content.pm.recoverability_detection") public int getRollbackImpactLevel();
  }

  public final class RollbackManager {
    method @RequiresPermission(android.Manifest.permission.TEST_MANAGE_ROLLBACKS) public void blockRollbackManager(long);
    method @RequiresPermission(android.Manifest.permission.TEST_MANAGE_ROLLBACKS) public void expireRollbackForPackage(@NonNull String);
+33 −0
Original line number Diff line number Diff line
@@ -2693,6 +2693,8 @@ public class PackageInstaller {
        /** @hide */
        public long rollbackLifetimeMillis = 0;
        /** {@hide} */
        public int rollbackImpactLevel = PackageManager.ROLLBACK_USER_IMPACT_LOW;
        /** {@hide} */
        public boolean forceQueryableOverride;
        /** {@hide} */
        public int requireUserAction = USER_ACTION_UNSPECIFIED;
@@ -2749,6 +2751,7 @@ public class PackageInstaller {
            }
            rollbackDataPolicy = source.readInt();
            rollbackLifetimeMillis = source.readLong();
            rollbackImpactLevel = source.readInt();
            requireUserAction = source.readInt();
            packageSource = source.readInt();
            applicationEnabledSettingPersistent = source.readBoolean();
@@ -2783,6 +2786,7 @@ public class PackageInstaller {
            ret.dataLoaderParams = dataLoaderParams;
            ret.rollbackDataPolicy = rollbackDataPolicy;
            ret.rollbackLifetimeMillis = rollbackLifetimeMillis;
            ret.rollbackImpactLevel = rollbackImpactLevel;
            ret.requireUserAction = requireUserAction;
            ret.packageSource = packageSource;
            ret.applicationEnabledSettingPersistent = applicationEnabledSettingPersistent;
@@ -3120,6 +3124,28 @@ public class PackageInstaller {
            rollbackLifetimeMillis = lifetimeMillis;
        }

        /**
         * rollbackImpactLevel is a measure of impact a rollback has on the user. This can take one
         * of 3 values:
         * <ul>
         *     <li>{@link PackageManager#ROLLBACK_USER_IMPACT_LOW} (default)</li>
         *     <li>{@link PackageManager#ROLLBACK_USER_IMPACT_HIGH} (1)</li>
         *     <li>{@link PackageManager#ROLLBACK_USER_IMPACT_ONLY_MANUAL} (2)</li>
         * </ul>
         *
         * @hide
         */
        @SystemApi
        @RequiresPermission(android.Manifest.permission.MANAGE_ROLLBACKS)
        @FlaggedApi(Flags.FLAG_RECOVERABILITY_DETECTION)
        public void setRollbackImpactLevel(@PackageManager.RollbackImpactLevel int impactLevel) {
            if ((installFlags & PackageManager.INSTALL_ENABLE_ROLLBACK) == 0) {
                throw new IllegalArgumentException(
                        "Can't set rollbackImpactLevel when rollback is not enabled");
            }
            rollbackImpactLevel = impactLevel;
        }

        /**
         * @deprecated use {@link #setRequestDowngrade(boolean)}.
         * {@hide}
@@ -3493,6 +3519,7 @@ public class PackageInstaller {
            pw.printPair("dataLoaderParams", dataLoaderParams);
            pw.printPair("rollbackDataPolicy", rollbackDataPolicy);
            pw.printPair("rollbackLifetimeMillis", rollbackLifetimeMillis);
            pw.printPair("rollbackImpactLevel", rollbackImpactLevel);
            pw.printPair("applicationEnabledSettingPersistent",
                    applicationEnabledSettingPersistent);
            pw.printHexPair("developmentInstallFlags", developmentInstallFlags);
@@ -3536,6 +3563,7 @@ public class PackageInstaller {
            }
            dest.writeInt(rollbackDataPolicy);
            dest.writeLong(rollbackLifetimeMillis);
            dest.writeInt(rollbackImpactLevel);
            dest.writeInt(requireUserAction);
            dest.writeInt(packageSource);
            dest.writeBoolean(applicationEnabledSettingPersistent);
@@ -3733,6 +3761,9 @@ public class PackageInstaller {
        /** @hide */
        public long rollbackLifetimeMillis;

        /** {@hide} */
        public int rollbackImpactLevel;

        /** {@hide} */
        public int requireUserAction;

@@ -3801,6 +3832,7 @@ public class PackageInstaller {
            isPreapprovalRequested = source.readBoolean();
            rollbackDataPolicy = source.readInt();
            rollbackLifetimeMillis = source.readLong();
            rollbackImpactLevel = source.readInt();
            createdMillis = source.readLong();
            requireUserAction = source.readInt();
            installerUid = source.readInt();
@@ -4438,6 +4470,7 @@ public class PackageInstaller {
            dest.writeBoolean(isPreapprovalRequested);
            dest.writeInt(rollbackDataPolicy);
            dest.writeLong(rollbackLifetimeMillis);
            dest.writeInt(rollbackImpactLevel);
            dest.writeLong(createdMillis);
            dest.writeInt(requireUserAction);
            dest.writeInt(installerUid);
+38 −0
Original line number Diff line number Diff line
@@ -1500,6 +1500,44 @@ public abstract class PackageManager {
    @SystemApi
    public static final int ROLLBACK_DATA_POLICY_RETAIN = 2;

    /** @hide */
    @IntDef(prefix = {"ROLLBACK_USER_IMPACT_"}, value = {
            ROLLBACK_USER_IMPACT_LOW,
            ROLLBACK_USER_IMPACT_HIGH,
            ROLLBACK_USER_IMPACT_ONLY_MANUAL,
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface RollbackImpactLevel {}

    /**
     * Rollback will be performed automatically in response to native crashes on startup or
     * persistent service crashes. More suitable for apps that do not store any user data.
     *
     * @hide
     */
    @SystemApi
    @FlaggedApi(android.content.pm.Flags.FLAG_RECOVERABILITY_DETECTION)
    public static final int ROLLBACK_USER_IMPACT_LOW = 0;

    /**
     * Rollback will be performed automatically only when the device is found to be unrecoverable.
     * More suitable for apps that store user data and have higher impact on user.
     *
     * @hide
     */
    @SystemApi
    @FlaggedApi(android.content.pm.Flags.FLAG_RECOVERABILITY_DETECTION)
    public static final int ROLLBACK_USER_IMPACT_HIGH = 1;

    /**
     * Rollback will not be performed automatically. It can be triggered externally.
     *
     * @hide
     */
    @SystemApi
    @FlaggedApi(android.content.pm.Flags.FLAG_RECOVERABILITY_DETECTION)
    public static final int ROLLBACK_USER_IMPACT_ONLY_MANUAL = 2;

    /** @hide */
    @IntDef(flag = true, prefix = { "INSTALL_" }, value = {
            INSTALL_REPLACE_EXISTING,
+7 −0
Original line number Diff line number Diff line
@@ -146,3 +146,10 @@ flag {
    bug: "281848623"
}

flag {
    name: "recoverability_detection"
    namespace: "package_manager_service"
    description: "Feature flag to enable recoverability detection feature. It includes GMS core rollback and improvements to rescue party."
    bug: "291135724"
    is_fixed_read_only: true
}
Loading