From 921340c284e08f3f855ba397b888dcf32f889206 Mon Sep 17 00:00:00 2001 From: JW Wang Date: Tue, 8 Sep 2020 14:21:06 +0800 Subject: [PATCH] Store pending sessions as objects instead of ids (4/n) So we don't need getStagedSession() to remap an id to the session object. Bug: 167996901 Test: atest StagedInstallTest StagedInstallInternalTest Change-Id: Ibcba41001b1a8853992bceb427179a9a9296cbce --- .../com/android/server/pm/StagingManager.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/services/core/java/com/android/server/pm/StagingManager.java b/services/core/java/com/android/server/pm/StagingManager.java index 7cb4c46831339..527655129d28e 100644 --- a/services/core/java/com/android/server/pm/StagingManager.java +++ b/services/core/java/com/android/server/pm/StagingManager.java @@ -1191,8 +1191,8 @@ public class StagingManager { } private final class PreRebootVerificationHandler extends Handler { - // Hold session ids before handler gets ready to do the verification. - private IntArray mPendingSessionIds; + // Hold sessions before handler gets ready to do the verification. + private List mPendingSessions; private boolean mIsReady; PreRebootVerificationHandler(Looper looper) { @@ -1252,27 +1252,27 @@ public class StagingManager { // Notify the handler that system is ready, and reschedule the pre-reboot verifications. private synchronized void readyToStart() { mIsReady = true; - if (mPendingSessionIds != null) { - for (int i = 0; i < mPendingSessionIds.size(); i++) { - PackageInstallerSession session = getStagedSession(mPendingSessionIds.get(i)); + if (mPendingSessions != null) { + for (int i = 0; i < mPendingSessions.size(); i++) { + PackageInstallerSession session = mPendingSessions.get(i); startPreRebootVerification(session); } - mPendingSessionIds = null; + mPendingSessions = null; } } // Method for starting the pre-reboot verification private synchronized void startPreRebootVerification(PackageInstallerSession session) { - int sessionId = session.sessionId; if (!mIsReady) { - if (mPendingSessionIds == null) { - mPendingSessionIds = new IntArray(); + if (mPendingSessions == null) { + mPendingSessions = new ArrayList<>(); } - mPendingSessionIds.add(sessionId); + mPendingSessions.add(session); return; } if (session != null && session.notifyStagedStartPreRebootVerification()) { + int sessionId = session.sessionId; Slog.d(TAG, "Starting preRebootVerification for session " + sessionId); obtainMessage(MSG_PRE_REBOOT_VERIFICATION_START, sessionId, -1, session) .sendToTarget();