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 93852d84b3..db99ea866d 100644
--- a/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt
+++ b/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt
@@ -37,6 +37,7 @@ import mozilla.components.browser.session.SessionManager
import mozilla.components.feature.contextmenu.ContextMenuCandidate
import mozilla.components.feature.contextmenu.ContextMenuFeature
import mozilla.components.feature.downloads.DownloadsFeature
+import mozilla.components.feature.intent.IntentProcessor
import mozilla.components.feature.prompts.PromptFeature
import mozilla.components.feature.session.FullScreenFeature
import mozilla.components.feature.session.SessionFeature
@@ -121,7 +122,7 @@ class BrowserFragment : Fragment(), BackHandler, CoroutineScope,
savedInstanceState: Bundle?
): View? {
require(arguments != null)
- customTabSessionId = BrowserFragmentArgs.fromBundle(arguments!!).customTabSessionId
+ customTabSessionId = arguments?.getString(IntentProcessor.ACTIVE_SESSION_ID)
val view = inflater.inflate(R.layout.fragment_browser, container, false)
@@ -515,10 +516,10 @@ class BrowserFragment : Fragment(), BackHandler, CoroutineScope,
private fun handleToolbarItemInteraction(action: SearchAction.ToolbarMenuItemTapped) {
val sessionUseCases = requireComponents.useCases.sessionUseCases
Do exhaustive when (action.item) {
- ToolbarMenu.Item.Back -> sessionUseCases.goBack.invoke()
- ToolbarMenu.Item.Forward -> sessionUseCases.goForward.invoke()
- ToolbarMenu.Item.Reload -> sessionUseCases.reload.invoke()
- ToolbarMenu.Item.Stop -> sessionUseCases.stopLoading.invoke()
+ ToolbarMenu.Item.Back -> sessionUseCases.goBack.invoke(getSessionById())
+ ToolbarMenu.Item.Forward -> sessionUseCases.goForward.invoke(getSessionById())
+ ToolbarMenu.Item.Reload -> sessionUseCases.reload.invoke(getSessionById())
+ ToolbarMenu.Item.Stop -> sessionUseCases.stopLoading.invoke(getSessionById())
ToolbarMenu.Item.Settings -> Navigation.findNavController(toolbarComponent.getView())
.navigate(BrowserFragmentDirections.actionBrowserFragmentToSettingsFragment())
ToolbarMenu.Item.Library -> Navigation.findNavController(toolbarComponent.getView())
diff --git a/app/src/main/java/org/mozilla/fenix/components/toolbar/ToolbarUIView.kt b/app/src/main/java/org/mozilla/fenix/components/toolbar/ToolbarUIView.kt
index 6f5fc5f787..447f98ab98 100644
--- a/app/src/main/java/org/mozilla/fenix/components/toolbar/ToolbarUIView.kt
+++ b/app/src/main/java/org/mozilla/fenix/components/toolbar/ToolbarUIView.kt
@@ -43,8 +43,9 @@ class ToolbarUIView(
.inflate(R.layout.layout_url_background, container, false)
init {
- val session = sessionId?.let { view.context.components.core.sessionManager.findSessionById(sessionId) }
- ?: view.context.components.core.sessionManager.selectedSession
+ val sessionManager = view.context.components.core.sessionManager
+ val session = sessionId?.let { sessionManager.findSessionById(it) }
+ ?: sessionManager.selectedSession
view.apply {
setOnUrlCommitListener {
@@ -88,7 +89,10 @@ class ToolbarUIView(
val isCustom = session?.isCustomTabSession() ?: false
val menuToolbar = if (isCustom) {
- CustomTabToolbarMenu(this,
+ CustomTabToolbarMenu(
+ this,
+ sessionManager,
+ sessionId,
onItemTapped = { actionEmitter.onNext(SearchAction.ToolbarMenuItemTapped(it)) }
)
} else {
diff --git a/app/src/main/java/org/mozilla/fenix/customtabs/CustomTabToolbarMenu.kt b/app/src/main/java/org/mozilla/fenix/customtabs/CustomTabToolbarMenu.kt
index a8a5b587bc..1bc7ce7a1e 100644
--- a/app/src/main/java/org/mozilla/fenix/customtabs/CustomTabToolbarMenu.kt
+++ b/app/src/main/java/org/mozilla/fenix/customtabs/CustomTabToolbarMenu.kt
@@ -10,6 +10,8 @@ import mozilla.components.browser.menu.item.BrowserMenuDivider
import mozilla.components.browser.menu.item.BrowserMenuImageText
import mozilla.components.browser.menu.item.BrowserMenuItemToolbar
import mozilla.components.browser.menu.item.SimpleBrowserMenuItem
+import mozilla.components.browser.session.Session
+import mozilla.components.browser.session.SessionManager
import org.mozilla.fenix.DefaultThemeManager
import org.mozilla.fenix.R
import org.mozilla.fenix.components.toolbar.ToolbarMenu
@@ -17,10 +19,15 @@ import org.mozilla.fenix.ext.components
class CustomTabToolbarMenu(
private val context: Context,
+ private val sessionManager: SessionManager,
+ private val sessionId: String?,
private val onItemTapped: (ToolbarMenu.Item) -> Unit = {}
) : ToolbarMenu {
override val menuBuilder by lazy { BrowserMenuBuilder(menuItems) }
+ private val session: Session?
+ get() = sessionId?.let { sessionManager.findSessionById(it) }
+
override val menuToolbar by lazy {
val back = BrowserMenuItemToolbar.TwoStateButton(
primaryImageResource = mozilla.components.ui.icons.R.drawable.mozac_ic_back,
@@ -30,7 +37,7 @@ class CustomTabToolbarMenu(
context
),
isInPrimaryState = {
- context.components.core.sessionManager.selectedSession?.canGoBack ?: true
+ session?.canGoBack ?: true
},
secondaryImageTintResource = DefaultThemeManager.resolveAttribute(
R.attr.neutral,
@@ -49,7 +56,7 @@ class CustomTabToolbarMenu(
context
),
isInPrimaryState = {
- context.components.core.sessionManager.selectedSession?.canGoForward ?: true
+ session?.canGoForward ?: true
},
secondaryImageTintResource = DefaultThemeManager.resolveAttribute(
R.attr.neutral,
@@ -68,7 +75,7 @@ class CustomTabToolbarMenu(
context
),
isInPrimaryState = {
- val loading = context.components.core.sessionManager.selectedSession?.loading
+ val loading = session?.loading
loading == false
},
secondaryImageResource = mozilla.components.ui.icons.R.drawable.mozac_ic_stop,
@@ -79,7 +86,7 @@ class CustomTabToolbarMenu(
),
disableInSecondaryState = false
) {
- if (context.components.core.sessionManager.selectedSession?.loading == true) {
+ if (session?.loading == true) {
onItemTapped.invoke(ToolbarMenu.Item.Stop)
} else {
onItemTapped.invoke(ToolbarMenu.Item.Reload)
diff --git a/app/src/main/java/org/mozilla/fenix/customtabs/CustomTabsIntegration.kt b/app/src/main/java/org/mozilla/fenix/customtabs/CustomTabsIntegration.kt
index dce5df37a0..403bd33861 100644
--- a/app/src/main/java/org/mozilla/fenix/customtabs/CustomTabsIntegration.kt
+++ b/app/src/main/java/org/mozilla/fenix/customtabs/CustomTabsIntegration.kt
@@ -25,6 +25,8 @@ class CustomTabsIntegration(
private val customTabToolbarMenu by lazy {
CustomTabToolbarMenu(
context,
+ sessionManager,
+ sessionId,
onItemTapped = onItemTapped
)
}
diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml
index eae61a3e22..47d136e45d 100644
--- a/app/src/main/res/navigation/nav_graph.xml
+++ b/app/src/main/res/navigation/nav_graph.xml
@@ -104,7 +104,7 @@
android:id="@+id/action_browserFragment_to_searchFragment"
app:destination="@id/searchFragment" />