diff --git a/app/build.gradle b/app/build.gradle
index f98bd3ce0..d87dabb6f 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -509,6 +509,7 @@ dependencies {
implementation Deps.mozilla_service_location
implementation Deps.mozilla_support_base
+ implementation Deps.mozilla_support_images
implementation Deps.mozilla_support_ktx
implementation Deps.mozilla_support_rustlog
implementation Deps.mozilla_support_utils
diff --git a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt
index 66db3ef23..1b331bd08 100644
--- a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt
+++ b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt
@@ -34,6 +34,7 @@ import mozilla.components.browser.session.SessionManager
import mozilla.components.browser.state.state.WebExtensionState
import mozilla.components.browser.state.store.BrowserStore
import mozilla.components.browser.tabstray.BrowserTabsTray
+import mozilla.components.browser.thumbnails.loader.ThumbnailLoader
import mozilla.components.concept.engine.EngineView
import mozilla.components.concept.tabstray.TabsTray
import mozilla.components.feature.contextmenu.DefaultSelectionActionDelegate
@@ -242,13 +243,10 @@ open class HomeActivity : LocaleAwareAppCompatActivity() {
stackFromEnd = true
}
- val adapter = FenixTabsAdapter(context)
- BrowserTabsTray(
- context,
- attrs,
- tabsAdapter = adapter,
- layout = layout
- )
+ val thumbnailLoader = ThumbnailLoader(components.core.thumbnailStorage)
+ val adapter = FenixTabsAdapter(context, thumbnailLoader)
+
+ BrowserTabsTray(context, attrs, 0, adapter, layout)
}
else -> super.onCreateView(parent, name, context, attrs)
}
diff --git a/app/src/main/java/org/mozilla/fenix/tabtray/FenixTabsAdapter.kt b/app/src/main/java/org/mozilla/fenix/tabtray/FenixTabsAdapter.kt
index f2f24d3a2..23a08374a 100644
--- a/app/src/main/java/org/mozilla/fenix/tabtray/FenixTabsAdapter.kt
+++ b/app/src/main/java/org/mozilla/fenix/tabtray/FenixTabsAdapter.kt
@@ -8,17 +8,20 @@ import android.content.Context
import android.view.LayoutInflater
import mozilla.components.browser.tabstray.TabsAdapter
import mozilla.components.concept.tabstray.Tabs
+import mozilla.components.support.images.loader.ImageLoader
import org.mozilla.fenix.R
class FenixTabsAdapter(
- context: Context
+ context: Context,
+ imageLoader: ImageLoader
) : TabsAdapter(
viewHolderProvider = { parentView, _ ->
TabTrayViewHolder(
LayoutInflater.from(context).inflate(
R.layout.tab_tray_item,
parentView,
- false)
+ false),
+ imageLoader
)
}
) {
diff --git a/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayViewHolder.kt b/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayViewHolder.kt
index 93456238f..2e4e5b770 100644
--- a/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayViewHolder.kt
+++ b/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayViewHolder.kt
@@ -6,7 +6,6 @@ package org.mozilla.fenix.tabtray
import android.view.View
import android.widget.ImageButton
-import android.widget.ImageView
import android.widget.TextView
import androidx.annotation.VisibleForTesting
import androidx.appcompat.widget.AppCompatImageButton
@@ -20,6 +19,7 @@ import mozilla.components.concept.tabstray.TabsTray
import mozilla.components.feature.media.ext.pauseIfPlaying
import mozilla.components.feature.media.ext.playIfPaused
import mozilla.components.support.base.observer.Observable
+import mozilla.components.support.images.loader.ImageLoader
import mozilla.components.support.ktx.kotlin.tryGetHostFromUrl
import org.mozilla.fenix.R
import org.mozilla.fenix.components.metrics.Event
@@ -35,9 +35,9 @@ import org.mozilla.fenix.ext.toTab
*/
class TabTrayViewHolder(
itemView: View,
+ private val imageLoader: ImageLoader,
val getSelectedTabId: () -> String? = { itemView.context.components.core.store.state.selectedTabId }
) : TabViewHolder(itemView) {
- private val iconView: ImageView? = itemView.findViewById(R.id.mozac_browser_tabstray_icon)
private val titleView: TextView = itemView.findViewById(R.id.mozac_browser_tabstray_title)
private val closeView: AppCompatImageButton =
itemView.findViewById(R.id.mozac_browser_tabstray_close)
@@ -69,13 +69,8 @@ class TabTrayViewHolder(
if (tab.thumbnail != null) {
thumbnailView.setImageBitmap(tab.thumbnail)
- thumbnailView.visibility = View.VISIBLE
- iconView?.visibility = View.INVISIBLE
} else {
- thumbnailView.setImageBitmap(null)
- iconView?.setImageBitmap(tab.icon)
- thumbnailView.visibility = View.INVISIBLE
- iconView?.visibility = View.VISIBLE
+ imageLoader.loadIntoView(thumbnailView, tab.id)
}
// Media state
diff --git a/app/src/main/res/layout/tab_tray_item.xml b/app/src/main/res/layout/tab_tray_item.xml
index 7654b8eb8..2090a82c0 100644
--- a/app/src/main/res/layout/tab_tray_item.xml
+++ b/app/src/main/res/layout/tab_tray_item.xml
@@ -35,15 +35,6 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
-
-