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"> - -