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
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user