From fe648a0b9925a19ffa2222ab0cd28270c7948034 Mon Sep 17 00:00:00 2001 From: Prat T Date: Sat, 5 Oct 2019 15:12:19 -0700 Subject: [PATCH] Fixes #5351 - use session icon in tab view on home --- .../home/sessioncontrol/SessionControlAdapter.kt | 2 +- .../sessioncontrol/viewholders/TabViewHolder.kt | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt index 6cf9999c2..b35541fd6 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/SessionControlAdapter.kt @@ -220,7 +220,7 @@ class SessionControlAdapter( if (it.shouldUpdateHostname) { holder.updateHostname(it.tab.hostname) } if (it.shouldUpdateTitle) { holder.updateTitle(it.tab.title) } - if (it.shouldUpdateUrl) { holder.updateFavIcon(it.tab.url) } + if (it.shouldUpdateUrl) { holder.updateFavIcon(it.tab.url, it.tab.sessionId) } if (it.shouldUpdateSelected) { holder.updateSelected(it.tab.selected ?: false) } if (it.shouldUpdateMediaState) { holder.updatePlayPauseButton(it.tab.mediaState ?: MediaState.None) diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/TabViewHolder.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/TabViewHolder.kt index 20fad20a9..ab99a27e8 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/TabViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/TabViewHolder.kt @@ -16,6 +16,7 @@ import mozilla.components.browser.menu.BrowserMenuBuilder import mozilla.components.browser.menu.item.SimpleBrowserMenuItem import mozilla.components.feature.media.state.MediaState import mozilla.components.support.ktx.android.util.dpToFloat +import org.jetbrains.anko.imageBitmap import org.mozilla.fenix.R import org.mozilla.fenix.components.metrics.Event import org.mozilla.fenix.ext.components @@ -92,7 +93,7 @@ class TabViewHolder( updateTab(tab) updateTitle(tab.title) updateHostname(tab.hostname) - updateFavIcon(tab.url) + updateFavIcon(tab.url, tab.sessionId) updateSelected(tab.selected ?: false) updatePlayPauseButton(tab.mediaState ?: MediaState.None) item_tab.transitionName = "$TAB_ITEM_TRANSITION_NAME${tab.sessionId}" @@ -129,8 +130,16 @@ class TabViewHolder( hostname.text = text } - internal fun updateFavIcon(url: String) { - favicon_image.context.components.core.icons.loadIntoView(favicon_image, url) + internal fun updateFavIcon(url: String, sessionId: String) { + val icon = favicon_image.context.components.core + .sessionManager + .findSessionById(sessionId)?.icon + + if (icon == null) { + favicon_image.context.components.core.icons.loadIntoView(favicon_image, url) + } else { + favicon_image.imageBitmap = icon + } } internal fun updateSelected(selected: Boolean) {