From 34f74ff0d5dcb0d62dcf30c4011a1d650710ca8c Mon Sep 17 00:00:00 2001 From: JW Wang Date: Wed, 29 Jul 2020 15:37:14 +0800 Subject: [PATCH] Some code cleanup (3/n) Now sealLocked(), verifyNonStaged() and installNonStaged() can retrieve child sessions on their own without being given by the caller. This improves cohesion of the methods. Bug: 162386287 Test: atest StagedInstallTest Change-Id: I33c6e9b68383b5348e839cfcfc72afd325452705 --- .../server/pm/PackageInstallerSession.java | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java index 4e64ab90fede7..2dde24a383365 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerSession.java +++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java @@ -1437,7 +1437,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { } try { - sealLocked(getChildSessionsLocked()); + sealLocked(); } catch (PackageManagerException e) { return false; } @@ -1547,14 +1547,14 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { * session was sealed this is the only possible exception. */ @GuardedBy("mLock") - private void sealLocked(List childSessions) + private void sealLocked() throws PackageManagerException { try { assertNoWriteFileTransfersOpenLocked(); assertPreparedAndNotDestroyedLocked("sealing of session"); mSealed = true; - + List childSessions = getChildSessionsLocked(); if (childSessions != null) { assertMultiPackageConsistencyLocked(childSessions); } @@ -1666,7 +1666,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { } synchronized (mLock) { try { - sealLocked(getChildSessionsLocked()); + sealLocked(); if (isApexInstallation()) { // APEX installations rely on certain fields to be populated after reboot. @@ -1712,7 +1712,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { assertPreparedAndNotSealedLocked("transfer"); try { - sealLocked(getChildSessionsLocked()); + sealLocked(); } catch (PackageManagerException e) { throw new IllegalArgumentException("Package is not valid", e); } @@ -1743,13 +1743,8 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { return; } - final List childSessions; - synchronized (mLock) { - childSessions = getChildSessionsLocked(); - } - try { - verifyNonStaged(childSessions); + verifyNonStaged(); } catch (PackageManagerException e) { final String completeMsg = ExceptionUtils.getCompleteMessage(e); Slog.e(TAG, "Commit of session " + sessionId + " failed: " + completeMsg); @@ -1758,7 +1753,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { } } - private void verifyNonStaged(List childSessions) + private void verifyNonStaged() throws PackageManagerException { final PackageManagerService.VerificationParams verifyingSession = makeVerificationParams(); @@ -1766,6 +1761,10 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { return; } if (isMultiPackage()) { + final List childSessions; + synchronized (mLock) { + childSessions = getChildSessionsLocked(); + } List verifyingChildSessions = new ArrayList<>(childSessions.size()); boolean success = true; @@ -1799,7 +1798,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { } } - private void installNonStaged(List childSessions) + private void installNonStaged() throws PackageManagerException { final PackageManagerService.InstallParams installingSession = makeInstallParams(); @@ -1807,6 +1806,10 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { return; } if (isMultiPackage()) { + final List childSessions; + synchronized (mLock) { + childSessions = getChildSessionsLocked(); + } List installingChildSessions = new ArrayList<>(childSessions.size()); boolean success = true; @@ -2000,9 +2003,8 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { return; } - List childSessions = getChildSessionsNotLocked(); try { - installNonStaged(childSessions); + installNonStaged(); } catch (PackageManagerException e) { final String completeMsg = ExceptionUtils.getCompleteMessage(e); Slog.e(TAG, "Commit of session " + sessionId + " failed: " + completeMsg);