From 1c9c5d26c517bcf9cb08cd8c314a8ed2d32d5db0 Mon Sep 17 00:00:00 2001 From: Richard Uhler Date: Wed, 5 Jun 2019 13:04:32 +0100 Subject: [PATCH] Don't send SessionCallbacks for DRY_RUN sessions. Because DRY_RUN sessions shouldn't have any side effect except to tell us if verification passed or failed. Bug: 123753157 Test: atest CtsStagedInstallHostTestCases, with new test added. Change-Id: Ide42759d80063da76955ef120b21b077197c15e3 --- .../server/pm/PackageInstallerService.java | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java index bd88594018566..0032e9a8ea519 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerService.java +++ b/services/core/java/com/android/server/pm/PackageInstallerService.java @@ -617,7 +617,9 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements mStagingManager.createSession(session); } - mCallbacks.notifySessionCreated(session.sessionId, session.userId); + if ((session.params.installFlags & PackageManager.INSTALL_DRY_RUN) == 0) { + mCallbacks.notifySessionCreated(session.sessionId, session.userId); + } writeSessionsAsync(); return sessionId; } @@ -1210,16 +1212,25 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements class InternalCallback { public void onSessionBadgingChanged(PackageInstallerSession session) { - mCallbacks.notifySessionBadgingChanged(session.sessionId, session.userId); + if ((session.params.installFlags & PackageManager.INSTALL_DRY_RUN) == 0) { + mCallbacks.notifySessionBadgingChanged(session.sessionId, session.userId); + } + writeSessionsAsync(); } public void onSessionActiveChanged(PackageInstallerSession session, boolean active) { - mCallbacks.notifySessionActiveChanged(session.sessionId, session.userId, active); + if ((session.params.installFlags & PackageManager.INSTALL_DRY_RUN) == 0) { + mCallbacks.notifySessionActiveChanged(session.sessionId, session.userId, + active); + } } public void onSessionProgressChanged(PackageInstallerSession session, float progress) { - mCallbacks.notifySessionProgressChanged(session.sessionId, session.userId, progress); + if ((session.params.installFlags & PackageManager.INSTALL_DRY_RUN) == 0) { + mCallbacks.notifySessionProgressChanged(session.sessionId, session.userId, + progress); + } } public void onStagedSessionChanged(PackageInstallerSession session) { @@ -1232,7 +1243,9 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements } public void onSessionFinished(final PackageInstallerSession session, boolean success) { - mCallbacks.notifySessionFinished(session.sessionId, session.userId, success); + if ((session.params.installFlags & PackageManager.INSTALL_DRY_RUN) == 0) { + mCallbacks.notifySessionFinished(session.sessionId, session.userId, success); + } mInstallHandler.post(new Runnable() { @Override