|
|
|
@ -5,7 +5,6 @@
|
|
|
|
|
package org.mozilla.fenix.components.toolbar
|
|
|
|
|
|
|
|
|
|
import android.app.Activity
|
|
|
|
|
import android.content.Context
|
|
|
|
|
import android.content.Intent
|
|
|
|
|
import androidx.core.widget.NestedScrollView
|
|
|
|
|
import androidx.lifecycle.LifecycleCoroutineScope
|
|
|
|
@ -43,7 +42,7 @@ interface BrowserToolbarController {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class DefaultBrowserToolbarController(
|
|
|
|
|
private val context: Context,
|
|
|
|
|
private val activity: Activity,
|
|
|
|
|
private val navController: NavController,
|
|
|
|
|
private val browsingModeManager: BrowsingModeManager,
|
|
|
|
|
private val findInPageLauncher: () -> Unit,
|
|
|
|
@ -56,30 +55,31 @@ class DefaultBrowserToolbarController(
|
|
|
|
|
private val scope: LifecycleCoroutineScope
|
|
|
|
|
) : BrowserToolbarController {
|
|
|
|
|
|
|
|
|
|
private val currentSession
|
|
|
|
|
get() = customTabSession ?: activity.components.core.sessionManager.selectedSession
|
|
|
|
|
|
|
|
|
|
override fun handleToolbarPaste(text: String) {
|
|
|
|
|
navController.nav(
|
|
|
|
|
R.id.browserFragment,
|
|
|
|
|
BrowserFragmentDirections.actionBrowserFragmentToSearchFragment(
|
|
|
|
|
sessionId = customTabSession?.id ?: context.components.core.sessionManager.selectedSession?.id,
|
|
|
|
|
sessionId = currentSession?.id,
|
|
|
|
|
pastedText = text
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override fun handleToolbarPasteAndGo(text: String) {
|
|
|
|
|
context.components.core.sessionManager.selectedSession?.searchTerms = ""
|
|
|
|
|
context.components.useCases.sessionUseCases.loadUrl(text)
|
|
|
|
|
activity.components.core.sessionManager.selectedSession?.searchTerms = ""
|
|
|
|
|
activity.components.useCases.sessionUseCases.loadUrl(text)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override fun handleToolbarClick() {
|
|
|
|
|
context.components.analytics.metrics.track(
|
|
|
|
|
activity.components.analytics.metrics.track(
|
|
|
|
|
Event.SearchBarTapped(Event.SearchBarTapped.Source.BROWSER)
|
|
|
|
|
)
|
|
|
|
|
navController.nav(
|
|
|
|
|
R.id.browserFragment,
|
|
|
|
|
BrowserFragmentDirections.actionBrowserFragmentToSearchFragment(
|
|
|
|
|
customTabSession?.id ?: context.components.core.sessionManager.selectedSession?.id
|
|
|
|
|
)
|
|
|
|
|
BrowserFragmentDirections.actionBrowserFragmentToSearchFragment(currentSession?.id)
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -87,9 +87,8 @@ class DefaultBrowserToolbarController(
|
|
|
|
|
@ObsoleteCoroutinesApi
|
|
|
|
|
@SuppressWarnings("ComplexMethod", "LongMethod")
|
|
|
|
|
override fun handleToolbarItemInteraction(item: ToolbarMenu.Item) {
|
|
|
|
|
val sessionUseCases = context.components.useCases.sessionUseCases
|
|
|
|
|
val sessionUseCases = activity.components.useCases.sessionUseCases
|
|
|
|
|
trackToolbarItemInteraction(item)
|
|
|
|
|
val currentSession = customTabSession ?: context.components.core.sessionManager.selectedSession
|
|
|
|
|
|
|
|
|
|
Do exhaustive when (item) {
|
|
|
|
|
ToolbarMenu.Item.Back -> sessionUseCases.goBack.invoke(currentSession)
|
|
|
|
@ -110,7 +109,7 @@ class DefaultBrowserToolbarController(
|
|
|
|
|
)
|
|
|
|
|
ToolbarMenu.Item.AddToHomeScreen -> {
|
|
|
|
|
MainScope().launch {
|
|
|
|
|
with(context.components.useCases.webAppUseCases) {
|
|
|
|
|
with(activity.components.useCases.webAppUseCases) {
|
|
|
|
|
if (isInstallable()) {
|
|
|
|
|
addToHomescreen()
|
|
|
|
|
} else {
|
|
|
|
@ -144,27 +143,27 @@ class DefaultBrowserToolbarController(
|
|
|
|
|
ToolbarMenu.Item.FindInPage -> {
|
|
|
|
|
bottomSheetBehavior.state = BottomSheetBehavior.STATE_COLLAPSED
|
|
|
|
|
findInPageLauncher()
|
|
|
|
|
context.components.analytics.metrics.track(Event.FindInPageOpened)
|
|
|
|
|
activity.components.analytics.metrics.track(Event.FindInPageOpened)
|
|
|
|
|
}
|
|
|
|
|
ToolbarMenu.Item.ReportIssue -> {
|
|
|
|
|
val currentUrl = currentSession?.url
|
|
|
|
|
currentUrl?.apply {
|
|
|
|
|
val reportUrl = String.format(BrowserFragment.REPORT_SITE_ISSUE_URL, this)
|
|
|
|
|
context.components.useCases.tabsUseCases.addTab.invoke(reportUrl)
|
|
|
|
|
activity.components.useCases.tabsUseCases.addTab.invoke(reportUrl)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
ToolbarMenu.Item.Help -> {
|
|
|
|
|
context.components.useCases.tabsUseCases.addTab.invoke(getSupportUrl())
|
|
|
|
|
activity.components.useCases.tabsUseCases.addTab.invoke(getSupportUrl())
|
|
|
|
|
}
|
|
|
|
|
ToolbarMenu.Item.SaveToCollection -> {
|
|
|
|
|
context.components.analytics.metrics
|
|
|
|
|
activity.components.analytics.metrics
|
|
|
|
|
.track(Event.CollectionSaveButtonPressed(TELEMETRY_BROWSER_IDENTIFIER))
|
|
|
|
|
|
|
|
|
|
currentSession?.toTab(context)?.let { currentSessionAsTab ->
|
|
|
|
|
currentSession?.toTab(activity)?.let { currentSessionAsTab ->
|
|
|
|
|
viewModel.saveTabToCollection(
|
|
|
|
|
tabs = listOf(currentSessionAsTab),
|
|
|
|
|
selectedTab = currentSessionAsTab,
|
|
|
|
|
cachedTabCollections = context.components.core.tabCollectionStorage.cachedTabCollections
|
|
|
|
|
cachedTabCollections = activity.components.core.tabCollectionStorage.cachedTabCollections
|
|
|
|
|
)
|
|
|
|
|
viewModel.previousFragmentId = R.id.browserFragment
|
|
|
|
|
|
|
|
|
@ -178,15 +177,15 @@ class DefaultBrowserToolbarController(
|
|
|
|
|
|
|
|
|
|
// Strip the CustomTabConfig to turn this Session into a regular tab and then select it
|
|
|
|
|
customTabSession!!.customTabConfig = null
|
|
|
|
|
context.components.core.sessionManager.select(customTabSession)
|
|
|
|
|
activity.components.core.sessionManager.select(customTabSession)
|
|
|
|
|
|
|
|
|
|
// Switch to the actual browser which should now display our new selected session
|
|
|
|
|
context.startActivity(openInFenixIntent)
|
|
|
|
|
activity.startActivity(openInFenixIntent)
|
|
|
|
|
|
|
|
|
|
// Close this activity since it is no longer displaying any session
|
|
|
|
|
(context as Activity).finish()
|
|
|
|
|
activity.finish()
|
|
|
|
|
}
|
|
|
|
|
ToolbarMenu.Item.Quit -> context.deleteAndQuit(scope)
|
|
|
|
|
ToolbarMenu.Item.Quit -> deleteAndQuit(activity, scope)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -218,7 +217,7 @@ class DefaultBrowserToolbarController(
|
|
|
|
|
ToolbarMenu.Item.Quit -> Event.BrowserMenuItemTapped.Item.QUIT
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
context.components.analytics.metrics.track(Event.BrowserMenuItemTapped(eventItem))
|
|
|
|
|
activity.components.analytics.metrics.track(Event.BrowserMenuItemTapped(eventItem))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
companion object {
|
|
|
|
|