feat: close tab when back button is pressed and history is empty and bring up the home page
This commit is contained in:
parent
fc89b30a6b
commit
1031f1cf6b
|
@ -344,7 +344,8 @@ abstract class BaseBrowserFragment :
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
onCloseTab = { closedSession ->
|
onCloseTab = { closedSession ->
|
||||||
val closedTab = store.state.findTab(closedSession.id) ?: return@DefaultBrowserToolbarController
|
val closedTab =
|
||||||
|
store.state.findTab(closedSession.id) ?: return@DefaultBrowserToolbarController
|
||||||
|
|
||||||
val snackbarMessage = if (closedTab.content.private) {
|
val snackbarMessage = if (closedTab.content.private) {
|
||||||
requireContext().getString(R.string.snackbar_private_tab_closed)
|
requireContext().getString(R.string.snackbar_private_tab_closed)
|
||||||
|
@ -981,8 +982,8 @@ abstract class BaseBrowserFragment :
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
internal fun shouldPullToRefreshBeEnabled(inFullScreen: Boolean): Boolean {
|
internal fun shouldPullToRefreshBeEnabled(inFullScreen: Boolean): Boolean {
|
||||||
return FeatureFlags.pullToRefreshEnabled &&
|
return FeatureFlags.pullToRefreshEnabled &&
|
||||||
requireContext().settings().isPullToRefreshEnabledInBrowser &&
|
requireContext().settings().isPullToRefreshEnabledInBrowser &&
|
||||||
!inFullScreen
|
!inFullScreen
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
|
@ -1095,7 +1096,12 @@ abstract class BaseBrowserFragment :
|
||||||
|
|
||||||
val toolbarHeight = resources.getDimensionPixelSize(R.dimen.browser_toolbar_height)
|
val toolbarHeight = resources.getDimensionPixelSize(R.dimen.browser_toolbar_height)
|
||||||
val context = requireContext()
|
val context = requireContext()
|
||||||
resumeDownloadDialogState(selectedTab.id, context.components.core.store, context, toolbarHeight)
|
resumeDownloadDialogState(
|
||||||
|
selectedTab.id,
|
||||||
|
context.components.core.store,
|
||||||
|
context,
|
||||||
|
toolbarHeight
|
||||||
|
)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
view?.let { view -> initializeUI(view) }
|
view?.let { view -> initializeUI(view) }
|
||||||
|
@ -1140,10 +1146,10 @@ abstract class BaseBrowserFragment :
|
||||||
@CallSuper
|
@CallSuper
|
||||||
override fun onBackPressed(): Boolean {
|
override fun onBackPressed(): Boolean {
|
||||||
return findInPageIntegration.onBackPressed() ||
|
return findInPageIntegration.onBackPressed() ||
|
||||||
fullScreenFeature.onBackPressed() ||
|
fullScreenFeature.onBackPressed() ||
|
||||||
promptsFeature.onBackPressed() ||
|
promptsFeature.onBackPressed() ||
|
||||||
sessionFeature.onBackPressed() ||
|
sessionFeature.onBackPressed() ||
|
||||||
removeSessionIfNeeded()
|
removeSessionIfNeeded()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onBackLongPressed(): Boolean {
|
override fun onBackLongPressed(): Boolean {
|
||||||
|
@ -1214,9 +1220,10 @@ abstract class BaseBrowserFragment :
|
||||||
true
|
true
|
||||||
} else {
|
} else {
|
||||||
val hasParentSession = session is TabSessionState && session.parentId != null
|
val hasParentSession = session is TabSessionState && session.parentId != null
|
||||||
if (hasParentSession) {
|
requireComponents.useCases.tabsUseCases.removeTab(
|
||||||
requireComponents.useCases.tabsUseCases.removeTab(session.id, selectParentIfExists = true)
|
session.id,
|
||||||
}
|
selectParentIfExists = hasParentSession
|
||||||
|
)
|
||||||
// We want to return to home if this session didn't have a parent session to select.
|
// We want to return to home if this session didn't have a parent session to select.
|
||||||
val goToOverview = !hasParentSession
|
val goToOverview = !hasParentSession
|
||||||
!goToOverview
|
!goToOverview
|
||||||
|
@ -1479,8 +1486,8 @@ abstract class BaseBrowserFragment :
|
||||||
}
|
}
|
||||||
|
|
||||||
// This method is called in response to native web extension messages from
|
// This method is called in response to native web extension messages from
|
||||||
// content scripts (e.g the reader view extension). By the time these
|
// content scripts (e.g the reader view extension). By the time these
|
||||||
// messages are processed the fragment/view may no longer be attached.
|
// messages are processed the fragment/view may no longer be attached.
|
||||||
internal fun safeInvalidateBrowserToolbarView() {
|
internal fun safeInvalidateBrowserToolbarView() {
|
||||||
runIfFragmentIsAttached {
|
runIfFragmentIsAttached {
|
||||||
val toolbarView = _browserToolbarView
|
val toolbarView = _browserToolbarView
|
||||||
|
|
|
@ -180,7 +180,6 @@ class DefaultBrowserToolbarController(
|
||||||
}
|
}
|
||||||
onCloseTab.invoke(tab)
|
onCloseTab.invoke(tab)
|
||||||
tabsUseCases.removeTab(tab.id)
|
tabsUseCases.removeTab(tab.id)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
Loading…
Reference in New Issue