[fenix] For https://github.com/mozilla-mobile/fenix/issues/19876 - Part 3: Add a FeatureFlag to keep the Home screen button in Nightly

pull/600/head
Gabriel Luong 3 years ago
parent 155c119513
commit 5c4a9f964c

@ -28,4 +28,9 @@ object FeatureFlags {
* Enables WebAuthn support. * Enables WebAuthn support.
*/ */
val webAuthFeature = Config.channel.isNightlyOrDebug val webAuthFeature = Config.channel.isNightlyOrDebug
/**
* Enables the Home button in the browser toolbar to navigate back to the home screen.
*/
val showHomeButtonFeature = Config.channel.isNightlyOrDebug
} }

@ -17,8 +17,8 @@ import kotlinx.android.synthetic.main.fragment_browser.*
import kotlinx.android.synthetic.main.fragment_browser.view.* import kotlinx.android.synthetic.main.fragment_browser.view.*
import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ExperimentalCoroutinesApi
import mozilla.components.browser.state.selector.findTab import mozilla.components.browser.state.selector.findTab
import mozilla.components.browser.state.state.TabSessionState
import mozilla.components.browser.state.state.SessionState import mozilla.components.browser.state.state.SessionState
import mozilla.components.browser.state.state.TabSessionState
import mozilla.components.browser.thumbnails.BrowserThumbnails import mozilla.components.browser.thumbnails.BrowserThumbnails
import mozilla.components.browser.toolbar.BrowserToolbar import mozilla.components.browser.toolbar.BrowserToolbar
import mozilla.components.feature.app.links.AppLinksUseCases import mozilla.components.feature.app.links.AppLinksUseCases
@ -29,13 +29,14 @@ import mozilla.components.feature.tab.collections.TabCollection
import mozilla.components.feature.tabs.WindowFeature import mozilla.components.feature.tabs.WindowFeature
import mozilla.components.support.base.feature.UserInteractionHandler import mozilla.components.support.base.feature.UserInteractionHandler
import mozilla.components.support.base.feature.ViewBoundFeatureWrapper import mozilla.components.support.base.feature.ViewBoundFeatureWrapper
import org.mozilla.fenix.FeatureFlags
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.components.FenixSnackbar import org.mozilla.fenix.components.FenixSnackbar
import org.mozilla.fenix.components.TabCollectionStorage import org.mozilla.fenix.components.TabCollectionStorage
import org.mozilla.fenix.components.metrics.Event import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.navigateBlockingForAsyncNavGraph
import org.mozilla.fenix.ext.nav import org.mozilla.fenix.ext.nav
import org.mozilla.fenix.ext.navigateBlockingForAsyncNavGraph
import org.mozilla.fenix.ext.navigateSafe import org.mozilla.fenix.ext.navigateSafe
import org.mozilla.fenix.ext.requireComponents import org.mozilla.fenix.ext.requireComponents
import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.settings
@ -51,7 +52,8 @@ class BrowserFragment : BaseBrowserFragment(), UserInteractionHandler {
private val windowFeature = ViewBoundFeatureWrapper<WindowFeature>() private val windowFeature = ViewBoundFeatureWrapper<WindowFeature>()
private val openInAppOnboardingObserver = ViewBoundFeatureWrapper<OpenInAppOnboardingObserver>() private val openInAppOnboardingObserver = ViewBoundFeatureWrapper<OpenInAppOnboardingObserver>()
private val trackingProtectionOverlayObserver = ViewBoundFeatureWrapper<TrackingProtectionOverlay>() private val trackingProtectionOverlayObserver =
ViewBoundFeatureWrapper<TrackingProtectionOverlay>()
private var readerModeAvailable = false private var readerModeAvailable = false
private var pwaOnboardingObserver: PwaOnboardingObserver? = null private var pwaOnboardingObserver: PwaOnboardingObserver? = null
@ -76,27 +78,38 @@ class BrowserFragment : BaseBrowserFragment(), UserInteractionHandler {
) )
} }
val homeAction = BrowserToolbar.Button( if (FeatureFlags.showHomeButtonFeature) {
imageDrawable = AppCompatResources.getDrawable(requireContext(), R.drawable.ic_home)!!, val homeAction = BrowserToolbar.Button(
contentDescription = requireContext().getString(R.string.browser_toolbar_home), imageDrawable = AppCompatResources.getDrawable(
listener = browserToolbarInteractor::onHomeButtonClicked requireContext(),
) R.drawable.ic_home
)!!,
contentDescription = requireContext().getString(R.string.browser_toolbar_home),
listener = browserToolbarInteractor::onHomeButtonClicked
)
browserToolbarView.view.addNavigationAction(homeAction) browserToolbarView.view.addNavigationAction(homeAction)
}
val readerModeAction = val readerModeAction =
BrowserToolbar.ToggleButton( BrowserToolbar.ToggleButton(
image = AppCompatResources.getDrawable(requireContext(), R.drawable.ic_readermode)!!, image = AppCompatResources.getDrawable(
requireContext(),
R.drawable.ic_readermode
)!!,
imageSelected = imageSelected =
AppCompatResources.getDrawable(requireContext(), R.drawable.ic_readermode_selected)!!, AppCompatResources.getDrawable(
requireContext(),
R.drawable.ic_readermode_selected
)!!,
contentDescription = requireContext().getString(R.string.browser_menu_read), contentDescription = requireContext().getString(R.string.browser_menu_read),
contentDescriptionSelected = requireContext().getString(R.string.browser_menu_read_close), contentDescriptionSelected = requireContext().getString(R.string.browser_menu_read_close),
visible = { visible = {
readerModeAvailable readerModeAvailable
}, },
selected = getCurrentTab()?.let { selected = getCurrentTab()?.let {
activity?.components?.core?.store?.state?.findTab(it.id)?.readerState?.active activity?.components?.core?.store?.state?.findTab(it.id)?.readerState?.active
} ?: false, } ?: false,
listener = browserToolbarInteractor::onReaderModePressed listener = browserToolbarInteractor::onReaderModePressed
) )
@ -246,7 +259,11 @@ class BrowserFragment : BaseBrowserFragment(), UserInteractionHandler {
} }
private val collectionStorageObserver = object : TabCollectionStorage.Observer { private val collectionStorageObserver = object : TabCollectionStorage.Observer {
override fun onCollectionCreated(title: String, sessions: List<TabSessionState>, id: Long?) { override fun onCollectionCreated(
title: String,
sessions: List<TabSessionState>,
id: Long?
) {
showTabSavedToCollectionSnackbar(sessions.size, true) showTabSavedToCollectionSnackbar(sessions.size, true)
} }
@ -254,7 +271,10 @@ class BrowserFragment : BaseBrowserFragment(), UserInteractionHandler {
showTabSavedToCollectionSnackbar(sessions.size) showTabSavedToCollectionSnackbar(sessions.size)
} }
private fun showTabSavedToCollectionSnackbar(tabSize: Int, isNewCollection: Boolean = false) { private fun showTabSavedToCollectionSnackbar(
tabSize: Int,
isNewCollection: Boolean = false
) {
view?.let { view -> view?.let { view ->
val messageStringRes = when { val messageStringRes = when {
isNewCollection -> { isNewCollection -> {
@ -298,8 +318,10 @@ class BrowserFragment : BaseBrowserFragment(), UserInteractionHandler {
context.components.useCases.contextMenuUseCases, context.components.useCases.contextMenuUseCases,
view, view,
FenixSnackbarDelegate(view) FenixSnackbarDelegate(view)
) + ContextMenuCandidate.createOpenInExternalAppCandidate(requireContext(), ) + ContextMenuCandidate.createOpenInExternalAppCandidate(
contextMenuCandidateAppLinksUseCases) requireContext(),
contextMenuCandidateAppLinksUseCases
)
} }
/** /**

Loading…
Cancel
Save