From 12e9345f4f38be1274283f768fe0422b90cf5801 Mon Sep 17 00:00:00 2001 From: Schneider Victor-tulias Date: Tue, 1 Jun 2021 14:43:14 -0700 Subject: [PATCH] Skip item infos that fail session info verification. trichromelibrary.canary is failing session info verification, but is still being added as blank icon on the workspace in some cases. Added logic to skip apps that fail this verification until the root cause can be found. Bug: 168788486 Test: none Change-Id: I8a7fe76f321de493b2c6c67ba6922eae23067ff3 --- .../model/AddWorkspaceItemsTask.java | 5 +-- .../launcher3/pm/InstallSessionHelper.java | 32 +++++++++++-------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/src/com/android/launcher3/model/AddWorkspaceItemsTask.java b/src/com/android/launcher3/model/AddWorkspaceItemsTask.java index 3be2c3af40..365cab1a4e 100644 --- a/src/com/android/launcher3/model/AddWorkspaceItemsTask.java +++ b/src/com/android/launcher3/model/AddWorkspaceItemsTask.java @@ -130,8 +130,9 @@ public class AddWorkspaceItemsTask extends BaseModelUpdateTask { packageName); if (!packageInstaller.verifySessionInfo(sessionInfo)) { - FileLog.d(LOG, "Item info failed session info verification: " - + workspaceInfo); + FileLog.d(LOG, "Item info failed session info verification. " + + "Skipping : " + workspaceInfo); + continue; } List activities = launcherApps diff --git a/src/com/android/launcher3/pm/InstallSessionHelper.java b/src/com/android/launcher3/pm/InstallSessionHelper.java index 52554900ea..2bd9ba0037 100644 --- a/src/com/android/launcher3/pm/InstallSessionHelper.java +++ b/src/com/android/launcher3/pm/InstallSessionHelper.java @@ -217,7 +217,8 @@ public class InstallSessionHelper { void tryQueuePromiseAppIcon(PackageInstaller.SessionInfo sessionInfo) { if (FeatureFlags.PROMISE_APPS_NEW_INSTALLS.get() && SessionCommitReceiver.isEnabled(mAppContext) - && verifySessionInfo(sessionInfo)) { + && verifySessionInfo(sessionInfo) + && !promiseIconAddedForId(sessionInfo.getSessionId())) { FileLog.d(LOG, "Adding package name to install queue: " + sessionInfo.getAppPackageName()); @@ -234,25 +235,28 @@ public class InstallSessionHelper { && sessionInfo.getInstallReason() == PackageManager.INSTALL_REASON_USER && sessionInfo.getAppIcon() != null && !TextUtils.isEmpty(sessionInfo.getAppLabel()) - && !promiseIconAddedForId(sessionInfo.getSessionId()) && !new PackageManagerHelper(mAppContext).isAppInstalled( sessionInfo.getAppPackageName(), getUserHandle(sessionInfo)); if (sessionInfo != null) { Bitmap appIcon = sessionInfo.getAppIcon(); - FileLog.d(LOG, String.format( - "Verifying session info. Valid: %b, Session verified: %b, Install reason valid:" - + " %b, App icon: %s, App label: %s, Promise icon added: %b, " - + "App installed: %b.", - validSessionInfo, - verify(sessionInfo) != null, - sessionInfo.getInstallReason() == PackageManager.INSTALL_REASON_USER, - appIcon == null ? "null" : IOUtils.toBase64String(appIcon), - sessionInfo.getAppLabel(), - promiseIconAddedForId(sessionInfo.getSessionId()), - new PackageManagerHelper(mAppContext).isAppInstalled( - sessionInfo.getAppPackageName(), getUserHandle(sessionInfo)))); + if (Utilities.IS_DEBUG_DEVICE) { + FileLog.d(LOG, String.format( + "Verifying session info. Valid: %b," + + " Session verified: %b," + + " Install reason valid: %b," + + " App icon: %s," + + " App label: %s," + + " App installed: %b.", + validSessionInfo, + verify(sessionInfo) != null, + sessionInfo.getInstallReason() == PackageManager.INSTALL_REASON_USER, + appIcon == null ? "null" : IOUtils.toBase64String(appIcon), + sessionInfo.getAppLabel(), + new PackageManagerHelper(mAppContext).isAppInstalled( + sessionInfo.getAppPackageName(), getUserHandle(sessionInfo)))); + } } else { FileLog.d(LOG, "Verifying session info failed: session info null."); }