From 3af307b47f33909fb855e71c9ce0418f0304f533 Mon Sep 17 00:00:00 2001 From: mawen7 Date: Wed, 23 Oct 2019 12:54:28 +0200 Subject: [PATCH] Close tab with no history on back press and return to parent if available --- .../org/mozilla/fenix/browser/BaseBrowserFragment.kt | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) 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 daefc841b..bca917ac8 100644 --- a/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt @@ -76,6 +76,7 @@ import org.mozilla.fenix.ext.enterToImmersiveMode import org.mozilla.fenix.ext.metrics import org.mozilla.fenix.ext.nav import org.mozilla.fenix.ext.requireComponents +import org.mozilla.fenix.ext.sessionsOfType import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.getRootView import org.mozilla.fenix.isInExperiment @@ -511,12 +512,18 @@ abstract class BaseBrowserFragment : Fragment(), BackHandler, SessionManager.Obs } /** - * Removes the session if it was opened by an ACTION_VIEW intent. + * Removes the session if it was opened by an ACTION_VIEW intent + * or if it has no more history */ protected open fun removeSessionIfNeeded(): Boolean { getSessionById()?.let { session -> + val sessionManager = requireComponents.core.sessionManager if (session.source == Session.Source.ACTION_VIEW) { - requireComponents.core.sessionManager.remove(session) + sessionManager.remove(session) + } else { + val isLastSession = sessionManager.sessionsOfType(private = session.private).count() == 1 + sessionManager.remove(session, true) + return !isLastSession // Jump to tab overview if last session was removed } } return false