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

Commit 44dbdbc3 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add an api to get active staged session"

parents c046eb72 00a08f12
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -11384,6 +11384,7 @@ package android.content.pm {
  public class PackageInstaller {
    method public void abandonSession(int);
    method public int createSession(@NonNull android.content.pm.PackageInstaller.SessionParams) throws java.io.IOException;
    method @Nullable public android.content.pm.PackageInstaller.SessionInfo getActiveStagedSession();
    method @NonNull public java.util.List<android.content.pm.PackageInstaller.SessionInfo> getAllSessions();
    method @NonNull public java.util.List<android.content.pm.PackageInstaller.SessionInfo> getMySessions();
    method @Nullable public android.content.pm.PackageInstaller.SessionInfo getSessionInfo(int);
@@ -11468,6 +11469,7 @@ package android.content.pm {
    method @NonNull public String getStagedSessionErrorMessage();
    method @NonNull public android.os.UserHandle getUser();
    method public boolean isActive();
    method public boolean isCommitted();
    method public boolean isMultiPackage();
    method public boolean isSealed();
    method public boolean isStaged();
+42 −0
Original line number Diff line number Diff line
@@ -496,6 +496,36 @@ public class PackageInstaller {
        }
    }

    /**
     * Returns an active staged session, or {@code null} if there is none.
     *
     * <p>Staged session is active iff:
     * <ul>
     *     <li>It is committed.
     *     <li>It is not applied.
     *     <li>It is not failed.
     * </ul>
     *
     * <p>In case of a multi-apk session, parent session will be returned.
     */
    public @Nullable SessionInfo getActiveStagedSession() {
        final List<SessionInfo> stagedSessions = getStagedSessions();
        for (SessionInfo s : stagedSessions) {
            if (s.isStagedSessionApplied() || s.isStagedSessionFailed()) {
                // Finalized session.
                continue;
            }
            if (s.getParentSessionId() != SessionInfo.INVALID_ID) {
                // Child session.
                continue;
            }
            if (s.isCommitted()) {
                return s;
            }
        }
        return null;
    }

    /**
     * Uninstall the given package, removing it completely from the device. This
     * method is available to:
@@ -1769,6 +1799,9 @@ public class PackageInstaller {
        private int mStagedSessionErrorCode;
        private String mStagedSessionErrorMessage;

        /** {@hide} */
        public boolean isCommitted;

        /** {@hide} */
        @UnsupportedAppUsage
        public SessionInfo() {
@@ -1809,6 +1842,7 @@ public class PackageInstaller {
            isStagedSessionFailed = source.readBoolean();
            mStagedSessionErrorCode = source.readInt();
            mStagedSessionErrorMessage = source.readString();
            isCommitted = source.readBoolean();
        }

        /**
@@ -2181,6 +2215,13 @@ public class PackageInstaller {
            mStagedSessionErrorMessage = errorMessage;
        }

        /**
         * Whenever this session was committed.
         */
        public boolean isCommitted() {
            return isCommitted;
        }

        @Override
        public int describeContents() {
            return 0;
@@ -2218,6 +2259,7 @@ public class PackageInstaller {
            dest.writeBoolean(isStagedSessionFailed);
            dest.writeInt(mStagedSessionErrorCode);
            dest.writeString(mStagedSessionErrorMessage);
            dest.writeBoolean(isCommitted);
        }

        public static final Parcelable.Creator<SessionInfo>
+1 −0
Original line number Diff line number Diff line
@@ -476,6 +476,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
                    mResolvedBaseFile.getAbsolutePath() : null;
            info.progress = mProgress;
            info.sealed = mSealed;
            info.isCommitted = mCommitted;
            info.active = mActiveCount.get() > 0;

            info.mode = params.mode;