From d7bdd97ac62b0719e083a9eff2c785860f5c9842 Mon Sep 17 00:00:00 2001 From: "sfufa@google.com" Date: Tue, 19 Oct 2021 12:41:56 -0700 Subject: [PATCH] [Search] [Race condition] Fix wrong titles showing on BubbleTextHolder No need to remove the listener on BubbleTextView#reset as BubbleTextView's parent should never change and always listen for ItemInfo updates. Bug: 203506475 Test: Manual Change-Id: Ie00b293495c79d36c9eb08408754389ab4b80839 --- src/com/android/launcher3/BubbleTextView.java | 14 +++++++------- .../android/launcher3/views/BubbleTextHolder.java | 7 +++---- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/com/android/launcher3/BubbleTextView.java b/src/com/android/launcher3/BubbleTextView.java index 521d8f4562..0d01343a6d 100644 --- a/src/com/android/launcher3/BubbleTextView.java +++ b/src/com/android/launcher3/BubbleTextView.java @@ -66,6 +66,7 @@ import com.android.launcher3.model.data.SearchActionItemInfo; import com.android.launcher3.model.data.WorkspaceItemInfo; import com.android.launcher3.util.SafeCloseable; import com.android.launcher3.views.ActivityContext; +import com.android.launcher3.views.BubbleTextHolder; import com.android.launcher3.views.IconLabelDotView; import java.text.NumberFormat; @@ -162,7 +163,7 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver, private HandlerRunnable mIconLoadRequest; private boolean mEnableIconUpdateAnimation = false; - private ItemInfoUpdateReceiver mItemInfoUpdateReceiver; + private BubbleTextHolder mBubbleTextHolder; public BubbleTextView(Context context) { this(context, null, 0); @@ -240,7 +241,6 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver, mDotParams.scale = 0f; mForceHideDot = false; setBackground(null); - mItemInfoUpdateReceiver = null; } private void cancelDotScaleAnim() { @@ -340,14 +340,14 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver, private void setItemInfo(ItemInfoWithIcon itemInfo) { setTag(itemInfo); - if (mItemInfoUpdateReceiver != null) { - mItemInfoUpdateReceiver.reapplyItemInfo(itemInfo); + if (mBubbleTextHolder != null) { + mBubbleTextHolder.onItemInfoUpdated(itemInfo); } } - public void setItemInfoUpdateReceiver( - ItemInfoUpdateReceiver itemInfoUpdateReceiver) { - mItemInfoUpdateReceiver = itemInfoUpdateReceiver; + public void setBubbleTextHolder( + BubbleTextHolder bubbleTextHolder) { + mBubbleTextHolder = bubbleTextHolder; } @UiThread diff --git a/src/com/android/launcher3/views/BubbleTextHolder.java b/src/com/android/launcher3/views/BubbleTextHolder.java index 42701c6c3d..1cb27e1649 100644 --- a/src/com/android/launcher3/views/BubbleTextHolder.java +++ b/src/com/android/launcher3/views/BubbleTextHolder.java @@ -16,14 +16,13 @@ package com.android.launcher3.views; import com.android.launcher3.BubbleTextView; -import com.android.launcher3.icons.IconCache; import com.android.launcher3.model.data.ItemInfo; import com.android.launcher3.model.data.ItemInfoWithIcon; /** * Views that contain {@link BubbleTextView} should implement this interface. */ -public interface BubbleTextHolder extends IconCache.ItemInfoUpdateReceiver { +public interface BubbleTextHolder { BubbleTextView getBubbleText(); /** @@ -31,6 +30,6 @@ public interface BubbleTextHolder extends IconCache.ItemInfoUpdateReceiver { * * @param itemInfo the new itemInfo */ - @Override - default void reapplyItemInfo(ItemInfoWithIcon itemInfo){}; + default void onItemInfoUpdated(ItemInfoWithIcon itemInfo) { + } }