[Messaging] Hide favicon for non-tab messages
This CL hides the favicon view for messages that aren't tab related.
This ensures that there isn't any leftover from recycling a view.
Bug: 397505413
Change-Id: I4a41c065c3dff1efdd960e05fd8ed72de3616447
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6282448
Reviewed-by: Calder Kitagawa <ckitagawa@chromium.org>
Commit-Queue: Shakti Sahu <shaktisahu@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1422544}
diff --git a/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/ui/recent_activity/RecentActivityListMediator.java b/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/ui/recent_activity/RecentActivityListMediator.java
index 7b1eff6..989feab5 100644
--- a/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/ui/recent_activity/RecentActivityListMediator.java
+++ b/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/ui/recent_activity/RecentActivityListMediator.java
@@ -124,14 +124,15 @@
descriptionAndTimestamp);
// Set favicon provider if favicon should be shown.
+ Callback<ImageView> faviconCallback = null;
if (logItem.showFavicon) {
GURL tabUrl = new GURL(getTabLastKnownUrl(logItem));
- Callback<ImageView> faviconCallback =
+ faviconCallback =
faviconView -> {
mFaviconProvider.fetchFavicon(tabUrl, faviconView::setImageDrawable);
};
- propertyModel.set(RecentActivityListProperties.FAVICON_PROVIDER, faviconCallback);
}
+ propertyModel.set(RecentActivityListProperties.FAVICON_PROVIDER, faviconCallback);
// Set avatar provider.
Callback<ImageView> avatarCallback =
diff --git a/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/ui/recent_activity/RecentActivityListViewBinder.java b/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/ui/recent_activity/RecentActivityListViewBinder.java
index de5fd8a..9328224 100644
--- a/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/ui/recent_activity/RecentActivityListViewBinder.java
+++ b/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/ui/recent_activity/RecentActivityListViewBinder.java
@@ -16,6 +16,7 @@
import android.widget.ImageView;
import android.widget.TextView;
+import org.chromium.base.Callback;
import org.chromium.ui.modelutil.PropertyKey;
import org.chromium.ui.modelutil.PropertyModel;
@@ -38,9 +39,14 @@
} else if (ON_CLICK_LISTENER == propertyKey) {
view.setOnClickListener(model.get(ON_CLICK_LISTENER));
} else if (FAVICON_PROVIDER == propertyKey) {
+ Callback faviconProvider = model.get(FAVICON_PROVIDER);
ImageView faviconView = view.findViewById(R.id.favicon);
- faviconView.setImageDrawable(null);
- model.get(FAVICON_PROVIDER).onResult(faviconView);
+ if (faviconProvider == null) {
+ faviconView.setVisibility(View.GONE);
+ } else {
+ faviconView.setImageDrawable(null);
+ faviconProvider.onResult(faviconView);
+ }
} else if (AVATAR_PROVIDER == propertyKey) {
ImageView avatarView = view.findViewById(R.id.avatar);
avatarView.setImageDrawable(null);
diff --git a/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/ui/recent_activity/RecentActivityListViewBinderUnitTest.java b/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/ui/recent_activity/RecentActivityListViewBinderUnitTest.java
index a6e63b82a2e..83d6cbf 100644
--- a/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/ui/recent_activity/RecentActivityListViewBinderUnitTest.java
+++ b/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/ui/recent_activity/RecentActivityListViewBinderUnitTest.java
@@ -15,6 +15,7 @@
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.text.TextPaint;
+import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ImageView;
@@ -119,6 +120,13 @@
}
@Test
+ public void testFavicon_nullProvider() {
+ mPropertyModel.set(RecentActivityListProperties.FAVICON_PROVIDER, null);
+ InOrder inOrder = Mockito.inOrder(mFaviconView);
+ inOrder.verify(mFaviconView).setVisibility(eq(View.GONE));
+ }
+
+ @Test
public void testAvatar() {
mPropertyModel.set(
RecentActivityListProperties.AVATAR_PROVIDER,