Early detection of mis-configuration (1/n)
Move the check to addChildSessionId() to reject the error as early as possible. Bug: 203026561 Test: will be added to CtsAtomicInstallTestCases Change-Id: I30a6161d8ae5a15c270793c80280247b5ae55fa5
This commit is contained in:
@@ -2406,13 +2406,6 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
|
||||
final VerificationParams verifyingSession = prepareForVerification();
|
||||
if (isMultiPackage()) {
|
||||
final List<PackageInstallerSession> childSessions = getChildSessions();
|
||||
// Spot check to reject a non-staged multi package install of APEXes and APKs.
|
||||
if (!params.isStaged && containsApkSession()
|
||||
&& sessionContains(s -> s.isApexSession())) {
|
||||
throw new PackageManagerException(
|
||||
PackageManager.INSTALL_FAILED_SESSION_INVALID,
|
||||
"Non-staged multi package install of APEX and APK packages is not supported");
|
||||
}
|
||||
List<VerificationParams> verifyingChildSessions =
|
||||
new ArrayList<>(childSessions.size());
|
||||
boolean success = true;
|
||||
@@ -4172,6 +4165,12 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
|
||||
+ childSession.sessionId + " and session " + sessionId
|
||||
+ " have inconsistent rollback settings");
|
||||
}
|
||||
boolean hasAPK = containsApkSession() || !childSession.isApexSession();
|
||||
boolean hasAPEX = sessionContains(s -> s.isApexSession()) || childSession.isApexSession();
|
||||
if (!params.isStaged && hasAPK && hasAPEX) {
|
||||
throw new IllegalStateException("Mix of APK and APEX is not supported for "
|
||||
+ "non-staged multi-package session");
|
||||
}
|
||||
|
||||
try {
|
||||
acquireTransactionLock();
|
||||
|
||||
Reference in New Issue
Block a user