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

Commit ebaafc14 authored by Nikita Ioffe's avatar Nikita Ioffe Committed by Automerger Merge Worker
Browse files

Merge changes from topics "cherrypick-non-staged-flag-ussa3zkzzhp",...

Merge changes from topics "cherrypick-non-staged-flag-ussa3zkzzhp", "forced-non-staged-apex-update-udc-dev-plus-aosp" into udc-dev-plus-aosp am: aff19460 am: 28e5a529

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/24224464



Change-Id: I467e1329bc214efdc42134983168a1b22156480d
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents a30cd94a 28e5a529
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -2369,6 +2369,8 @@ public class PackageInstaller {
        public int requireUserAction = USER_ACTION_UNSPECIFIED;
        /** {@hide} */
        public boolean applicationEnabledSettingPersistent = false;
        /** {@hide} */
        public int developmentInstallFlags = 0;

        private final ArrayMap<String, Integer> mPermissionStates;

@@ -2418,6 +2420,7 @@ public class PackageInstaller {
            requireUserAction = source.readInt();
            packageSource = source.readInt();
            applicationEnabledSettingPersistent = source.readBoolean();
            developmentInstallFlags = source.readInt();
        }

        /** {@hide} */
@@ -2449,6 +2452,7 @@ public class PackageInstaller {
            ret.requireUserAction = requireUserAction;
            ret.packageSource = packageSource;
            ret.applicationEnabledSettingPersistent = applicationEnabledSettingPersistent;
            ret.developmentInstallFlags = developmentInstallFlags;
            return ret;
        }

@@ -3113,6 +3117,7 @@ public class PackageInstaller {
            pw.printPair("rollbackDataPolicy", rollbackDataPolicy);
            pw.printPair("applicationEnabledSettingPersistent",
                    applicationEnabledSettingPersistent);
            pw.printHexPair("developmentInstallFlags", developmentInstallFlags);
            pw.println();
        }

@@ -3154,6 +3159,7 @@ public class PackageInstaller {
            dest.writeInt(requireUserAction);
            dest.writeInt(packageSource);
            dest.writeBoolean(applicationEnabledSettingPersistent);
            dest.writeInt(developmentInstallFlags);
        }

        public static final Parcelable.Creator<SessionParams>
+18 −0
Original line number Diff line number Diff line
@@ -1453,6 +1453,16 @@ public abstract class PackageManager {
    @Retention(RetentionPolicy.SOURCE)
    public @interface InstallFlags {}

    /**
     * Install flags that can only be used in development workflows (e.g. {@code adb install}).
     * @hide
     */
    @IntDef(flag = true, prefix = { "INSTALL_DEVELOPMENT_" }, value = {
            INSTALL_DEVELOPMENT_FORCE_NON_STAGED_APEX_UPDATE,
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface DevelopmentInstallFlags {}

    /**
     * Flag parameter for {@link #installPackage} to indicate that you want to
     * replace an already installed package, if one exists.
@@ -1663,6 +1673,14 @@ public abstract class PackageManager {
     */
    public static final int INSTALL_FROM_MANAGED_USER_OR_PROFILE = 1 << 26;

    /**
     * Flag parameter for {@link #installPackage} to force a non-staged update of an APEX. This is
     * a development-only feature and should not be used on end user devices.
     *
     * @hide
     */
    public static final int INSTALL_DEVELOPMENT_FORCE_NON_STAGED_APEX_UPDATE = 1;

    /** @hide */
    @IntDef(flag = true, value = {
            DONT_KILL_APP,
+9 −4
Original line number Diff line number Diff line
@@ -363,9 +363,13 @@ public abstract class ApexManager {
    /**
     * Performs a non-staged install of the given {@code apexFile}.
     *
     * If {@code force} is {@code true}, then  update is forced even for APEXes that do not support
     * non-staged update. This feature is only available on debuggable builds to improve development
     * velocity of the teams that have their code packaged in an APEX.
     *
     * @return {@code ApeInfo} about the newly installed APEX package.
     */
    abstract ApexInfo installPackage(File apexFile) throws PackageManagerException;
    abstract ApexInfo installPackage(File apexFile, boolean force) throws PackageManagerException;

    /**
     * Get a list of apex system services implemented in an apex.
@@ -910,10 +914,11 @@ public abstract class ApexManager {
        }

        @Override
        ApexInfo installPackage(File apexFile)
        ApexInfo installPackage(File apexFile, boolean force)
                throws PackageManagerException {
            try {
                return waitForApexService().installAndActivatePackage(apexFile.getAbsolutePath());
                return waitForApexService().installAndActivatePackage(apexFile.getAbsolutePath(),
                        force);
            } catch (RemoteException e) {
                throw new PackageManagerException(PackageManager.INSTALL_FAILED_INTERNAL_ERROR,
                        "apexservice not available");
@@ -1170,7 +1175,7 @@ public abstract class ApexManager {
        }

        @Override
        ApexInfo installPackage(File apexFile) {
        ApexInfo installPackage(File apexFile, boolean force) {
            throw new UnsupportedOperationException("APEX updates are not supported");
        }

+5 −3
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ final class InstallArgs {
    final IPackageInstallObserver2 mObserver;
    // Always refers to PackageManager flags only
    final int mInstallFlags;
    final int mDevelopmentInstallFlags;
    @NonNull
    final InstallSource mInstallSource;
    final String mVolumeUuid;
@@ -69,8 +70,8 @@ final class InstallArgs {
    @Nullable String[] mInstructionSets;

    InstallArgs(OriginInfo originInfo, MoveInfo moveInfo, IPackageInstallObserver2 observer,
            int installFlags, InstallSource installSource, String volumeUuid,
            UserHandle user, String[] instructionSets, String abiOverride,
            int installFlags, int developmentInstallFlags, InstallSource installSource,
            String volumeUuid,  UserHandle user, String[] instructionSets, String abiOverride,
            @NonNull ArrayMap<String, Integer> permissionStates,
            List<String> allowlistedRestrictedPermissions,
            int autoRevokePermissionsMode, String traceMethod, int traceCookie,
@@ -80,6 +81,7 @@ final class InstallArgs {
        mOriginInfo = originInfo;
        mMoveInfo = moveInfo;
        mInstallFlags = installFlags;
        mDevelopmentInstallFlags = developmentInstallFlags;
        mObserver = observer;
        mInstallSource = Preconditions.checkNotNull(installSource);
        mVolumeUuid = volumeUuid;
@@ -105,7 +107,7 @@ final class InstallArgs {
     * when cleaning up old installs, or used as a move source.
     */
    InstallArgs(String codePath, String[] instructionSets) {
        this(OriginInfo.fromNothing(), null, null, 0, InstallSource.EMPTY, null, null,
        this(OriginInfo.fromNothing(), null, null, 0, 0, InstallSource.EMPTY, null, null,
                instructionSets, null, new ArrayMap<>(), null, MODE_DEFAULT, null, 0,
                SigningDetails.UNKNOWN, PackageManager.INSTALL_REASON_UNKNOWN,
                PackageManager.INSTALL_SCENARIO_DEFAULT, false, DataLoaderType.NONE,
+11 −6
Original line number Diff line number Diff line
@@ -134,12 +134,13 @@ final class InstallRequest {
    InstallRequest(InstallingSession params) {
        mUserId = params.getUser().getIdentifier();
        mInstallArgs = new InstallArgs(params.mOriginInfo, params.mMoveInfo, params.mObserver,
                params.mInstallFlags, params.mInstallSource, params.mVolumeUuid,
                params.getUser(), null /*instructionSets*/, params.mPackageAbiOverride,
                params.mPermissionStates, params.mAllowlistedRestrictedPermissions,
                params.mAutoRevokePermissionsMode, params.mTraceMethod, params.mTraceCookie,
                params.mSigningDetails, params.mInstallReason, params.mInstallScenario,
                params.mForceQueryableOverride, params.mDataLoaderType, params.mPackageSource,
                params.mInstallFlags, params.mDevelopmentInstallFlags, params.mInstallSource,
                params.mVolumeUuid,  params.getUser(), null /*instructionSets*/,
                params.mPackageAbiOverride, params.mPermissionStates,
                params.mAllowlistedRestrictedPermissions, params.mAutoRevokePermissionsMode,
                params.mTraceMethod, params.mTraceCookie, params.mSigningDetails,
                params.mInstallReason, params.mInstallScenario, params.mForceQueryableOverride,
                params.mDataLoaderType, params.mPackageSource,
                params.mApplicationEnabledSettingPersistent);
        mPackageMetrics = new PackageMetrics(this);
        mIsInstallInherit = params.mIsInherit;
@@ -286,6 +287,10 @@ final class InstallRequest {
        return mInstallArgs == null ? 0 : mInstallArgs.mInstallFlags;
    }

    public int getDevelopmentInstallFlags() {
        return mInstallArgs == null ? 0 : mInstallArgs.mDevelopmentInstallFlags;
    }

    public int getInstallReason() {
        return mInstallArgs == null ? INSTALL_REASON_UNKNOWN : mInstallArgs.mInstallReason;
    }
Loading