From f3b870d3561babfb5ac73d0c246ef0de15e0e9d0 Mon Sep 17 00:00:00 2001 From: Jonathan Almeida Date: Fri, 21 Aug 2020 18:11:16 -0400 Subject: [PATCH] For #11918: Take a screenshot when clicking the tab tray We looked into taking a screenshot right before leaving the BrowserFragment, however this call will always fail since it's non-blocking (we never want it to be blocking too), and we will never receive a screenshot when a session is detached from an EngineView before the callback is complete. In Fenix, we can nicely evade this by taking a screenshot when click the tabs tray icon, which is where you would want to see the most up-to-date thumbnail of the tab and also does not leave the BrowserFragment as well. --- .../main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt | 3 +++ app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt | 1 - 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt b/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt index 1acc0e059..42f4f4269 100644 --- a/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt @@ -42,6 +42,7 @@ import mozilla.components.browser.state.selector.findTabOrCustomTabOrSelectedTab import mozilla.components.browser.state.state.SessionState import mozilla.components.browser.state.state.content.DownloadState import mozilla.components.browser.state.store.BrowserStore +import mozilla.components.browser.thumbnails.BrowserThumbnails import mozilla.components.concept.engine.prompt.ShareData import mozilla.components.feature.accounts.FxaCapability import mozilla.components.feature.accounts.FxaWebChannelFeature @@ -132,6 +133,7 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session get() = _browserToolbarView!! protected val readerViewFeature = ViewBoundFeatureWrapper() + protected val thumbnailsFeature = ViewBoundFeatureWrapper() private val sessionFeature = ViewBoundFeatureWrapper() private val contextMenuFeature = ViewBoundFeatureWrapper() @@ -231,6 +233,7 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session tabCollectionStorage = requireComponents.core.tabCollectionStorage, topSiteStorage = requireComponents.core.topSiteStorage, onTabCounterClicked = { + thumbnailsFeature.get()?.requestScreenshot() findNavController().nav( R.id.browserFragment, BrowserFragmentDirections.actionGlobalTabTrayDialogFragment() diff --git a/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt b/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt index 797a5c34d..251cec203 100644 --- a/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt @@ -54,7 +54,6 @@ class BrowserFragment : BaseBrowserFragment(), UserInteractionHandler { private val windowFeature = ViewBoundFeatureWrapper() private val searchFeature = ViewBoundFeatureWrapper() - private val thumbnailsFeature = ViewBoundFeatureWrapper() private var readerModeAvailable = false