diff --git a/src/com/android/launcher3/model/PackageInstallStateChangedTask.java b/src/com/android/launcher3/model/PackageInstallStateChangedTask.java index 9889a8065d..b74d0fc482 100644 --- a/src/com/android/launcher3/model/PackageInstallStateChangedTask.java +++ b/src/com/android/launcher3/model/PackageInstallStateChangedTask.java @@ -21,7 +21,6 @@ import android.content.pm.PackageManager; import com.android.launcher3.LauncherAppState; import com.android.launcher3.model.data.AppInfo; import com.android.launcher3.model.data.ItemInfo; -import com.android.launcher3.model.data.ItemInfoWithIcon; import com.android.launcher3.model.data.LauncherAppWidgetInfo; import com.android.launcher3.pm.PackageInstallInfo; import com.android.launcher3.util.InstantAppResolver; @@ -73,13 +72,7 @@ public class PackageInstallStateChangedTask extends BaseModelUpdateTask { dataModel.forAllWorkspaceItemInfos(mInstallInfo.user, si -> { if (si.hasPromiseIconUi() && mInstallInfo.packageName.equals(si.getTargetPackage())) { - int installProgress = mInstallInfo.progress; - - si.setProgressLevel(installProgress, PackageInstallInfo.STATUS_INSTALLING); - if (mInstallInfo.state == PackageInstallInfo.STATUS_FAILED) { - // Mark this info as broken. - si.runtimeStatusFlags &= ~ItemInfoWithIcon.FLAG_INSTALL_SESSION_ACTIVE; - } + si.setProgressLevel(mInstallInfo); updates.add(si); } }); diff --git a/src/com/android/launcher3/model/data/ItemInfoWithIcon.java b/src/com/android/launcher3/model/data/ItemInfoWithIcon.java index 6813b972ab..a74c02fb01 100644 --- a/src/com/android/launcher3/model/data/ItemInfoWithIcon.java +++ b/src/com/android/launcher3/model/data/ItemInfoWithIcon.java @@ -24,6 +24,7 @@ import androidx.annotation.Nullable; import com.android.launcher3.icons.BitmapInfo; import com.android.launcher3.icons.FastBitmapDrawable; +import com.android.launcher3.logging.FileLog; import com.android.launcher3.pm.PackageInstallInfo; import com.android.launcher3.util.PackageManagerHelper; @@ -179,6 +180,12 @@ public abstract class ItemInfoWithIcon extends ItemInfo { */ public void setProgressLevel(PackageInstallInfo installInfo) { setProgressLevel(installInfo.progress, installInfo.state); + + if (installInfo.state == PackageInstallInfo.STATUS_FAILED) { + FileLog.d(TAG, + "Icon info: " + this + " marked broken with install info: " + installInfo, + new Exception()); + } } /** diff --git a/src/com/android/launcher3/pm/PackageInstallInfo.java b/src/com/android/launcher3/pm/PackageInstallInfo.java index fad904f968..1797c1fc81 100644 --- a/src/com/android/launcher3/pm/PackageInstallInfo.java +++ b/src/com/android/launcher3/pm/PackageInstallInfo.java @@ -57,4 +57,28 @@ public final class PackageInstallInfo { public static PackageInstallInfo fromState(int state, String packageName, UserHandle user) { return new PackageInstallInfo(packageName, state, 0 /* progress */, user); } + + + @Override + public String toString() { + return getClass().getSimpleName() + "(" + dumpProperties() + ")"; + } + + private String dumpProperties() { + return "componentName=" + componentName + + "packageName=" + packageName + + " state=" + stateToString() + + " progress=" + progress + + " user=" + user; + } + + private String stateToString() { + switch (state) { + case STATUS_INSTALLED : return "STATUS_INSTALLED"; + case STATUS_INSTALLING : return "STATUS_INSTALLING"; + case STATUS_INSTALLED_DOWNLOADING : return "STATUS_INSTALLED_DOWNLOADING"; + case STATUS_FAILED : return "STATUS_FAILED"; + default : return "INVALID STATE"; + } + } }