From 343d99781fc025ea75685bf84030102bd48b38cf Mon Sep 17 00:00:00 2001 From: Jakob Schneider Date: Thu, 22 Feb 2024 18:35:53 +0000 Subject: [PATCH] Improve "isActiveArchive" check by moving it a bit earlier into the method. Apply progress level doesn't need to be called unless the app is actively being unarchived. Previously this was fixed by adding a check directly in "setIsDisabled()" which is not quite the right place (we can exit earlier). Bug: 326218355 Test: manual Flag: ACONFIG com.android.launcher3.enable_support_for_archiving TRUNKFOOD Change-Id: Ia12013dbcec2d40413a6cf819f8d1787b815adc1 --- src/com/android/launcher3/BubbleTextView.java | 4 +++- .../android/launcher3/model/data/ItemInfoWithIcon.java | 9 +++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/com/android/launcher3/BubbleTextView.java b/src/com/android/launcher3/BubbleTextView.java index 259ddbdf5e..f80a904d03 100644 --- a/src/com/android/launcher3/BubbleTextView.java +++ b/src/com/android/launcher3/BubbleTextView.java @@ -916,7 +916,8 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver, /** Applies the given progress level to the this icon's progress bar. */ @Nullable public PreloadIconDrawable applyProgressLevel() { - if (!(getTag() instanceof ItemInfoWithIcon)) { + if (!(getTag() instanceof ItemInfoWithIcon) + || !((ItemInfoWithIcon) getTag()).isActiveArchive()) { return null; } @@ -973,6 +974,7 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver, return info.isDisabled() || info.isPendingDownload(); } + public void applyDotState(ItemInfo itemInfo, boolean animate) { if (mIcon instanceof FastBitmapDrawable) { boolean wasDotted = mDotInfo != null; diff --git a/src/com/android/launcher3/model/data/ItemInfoWithIcon.java b/src/com/android/launcher3/model/data/ItemInfoWithIcon.java index 352c3633ac..70cad968b4 100644 --- a/src/com/android/launcher3/model/data/ItemInfoWithIcon.java +++ b/src/com/android/launcher3/model/data/ItemInfoWithIcon.java @@ -160,10 +160,6 @@ public abstract class ItemInfoWithIcon extends ItemInfo { * and its install session is active */ public boolean isPendingDownload() { - if (isArchived()) { - return this.getProgressLevel() == 0 - && (this.runtimeStatusFlags & FLAG_INSTALL_SESSION_ACTIVE) != 0; - } return getProgressLevel() == 0; } @@ -177,6 +173,11 @@ public abstract class ItemInfoWithIcon extends ItemInfo { return (runtimeStatusFlags & FLAG_ARCHIVED) != 0; } + /** Returns true if the app is archived and has an active install session. */ + public boolean isActiveArchive() { + return isArchived() && (runtimeStatusFlags & FLAG_INSTALL_SESSION_ACTIVE) != 0; + } + /** * Indicates whether we're using a low res icon */