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

Commit 2aa98258 authored by JW Wang's avatar JW Wang
Browse files

Populate fields for committed staged sessions

Those fields are needed for pre-reboot verification and
installation after reboot.

Bug: 181731810
Test: atest StagedInstallTest StagedInstallInternalTest
Test: 1. `adb install --staged SOMEAPP`
      2. reboot the device before the session reaches READY
      3. `adb shell pm list staged-sessions` after boot completed
      4. check the session is READY instead of FAILED
Change-Id: I3de3336cdfac9b925ba6ebb981db773e3a566047
parent d38c0368
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -2086,15 +2086,16 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
            try {
                sealLocked();

                // Session that are staged, ready and not multi package will be installed during
                // this boot. As such, we need populate all the fields for successful installation.
                if (isMultiPackage()) {
                // Session that are staged, committed and not multi package will be installed or
                // restart verification during this boot. As such, we need populate all the fields
                // for successful installation.
                if (isMultiPackage() || !isStaged() || !isCommitted()) {
                    return;
                }
                final PackageInstallerSession root = hasParentSessionId()
                        ? allSessions.get(getParentSessionId())
                        : this;
                if (root != null && root.isStagedSessionReady()) {
                if (root != null) {
                    if (isApexSession()) {
                        validateApexInstallLocked();
                    } else {