From f8302c388f202ac48f262d1bc36ecd929591f0fe Mon Sep 17 00:00:00 2001 From: Rohit Goyal Date: Mon, 18 Mar 2024 16:15:45 +0000 Subject: [PATCH] Bugfix: In case of unarchival, do not add an installer task to add workspace item. * In case install queue is cleared (which happens when launcher comes back to foregorund from background) when app has successfully unarchived, since app is not archived anymore, `AddWorkspaceItemTask` successfully manages to add item to the workspace. * We should avoid adding pending task for adding workspace item in the queue at all for unarchival to prevent this. Test: verified bugfixes locally. Bug: 326495267 Flag: ACONFIG com.android.launcher3.enable_support_for_archiving DEVELOPMENT Change-Id: Iae6d6390d8e2d9b270f7aef0dce1fa32d9899f28 --- .../android/launcher3/pm/InstallSessionHelper.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/com/android/launcher3/pm/InstallSessionHelper.java b/src/com/android/launcher3/pm/InstallSessionHelper.java index 2ec994ed9a..f3769d535f 100644 --- a/src/com/android/launcher3/pm/InstallSessionHelper.java +++ b/src/com/android/launcher3/pm/InstallSessionHelper.java @@ -215,11 +215,15 @@ public class InstallSessionHelper { && SessionCommitReceiver.isEnabled(mAppContext, getUserHandle(sessionInfo)) && verifySessionInfo(sessionInfo) && !promiseIconAddedForId(sessionInfo.getSessionId())) { - FileLog.d(LOG, "Adding package name to install queue: " - + sessionInfo.getAppPackageName()); + // In case of unarchival, we do not want to add a workspace promise icon if one is + // not already present. For general app installations however, we do support it. + if (!Utilities.enableSupportForArchiving() || !sessionInfo.isUnarchival()) { + FileLog.d(LOG, "Adding package name to install queue: " + + sessionInfo.getAppPackageName()); - ItemInstallQueue.INSTANCE.get(mAppContext) - .queueItem(sessionInfo.getAppPackageName(), getUserHandle(sessionInfo)); + ItemInstallQueue.INSTANCE.get(mAppContext) + .queueItem(sessionInfo.getAppPackageName(), getUserHandle(sessionInfo)); + } getPromiseIconIds().add(sessionInfo.getSessionId()); updatePromiseIconPrefs();