Fixes 1689 - Add sessionManager and sessionId to custom tabs menu and toolbar. (#2229)
parent
1c7f48be5b
commit
34bd6513b6
|
@ -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())
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -25,6 +25,8 @@ class CustomTabsIntegration(
|
|||
private val customTabToolbarMenu by lazy {
|
||||
CustomTabToolbarMenu(
|
||||
context,
|
||||
sessionManager,
|
||||
sessionId,
|
||||
onItemTapped = onItemTapped
|
||||
)
|
||||
}
|
||||
|
|
|
@ -104,7 +104,7 @@
|
|||
android:id="@+id/action_browserFragment_to_searchFragment"
|
||||
app:destination="@id/searchFragment" />
|
||||
<argument
|
||||
android:name="custom_tab_session_id"
|
||||
android:name="activeSessionId"
|
||||
app:argType="string"
|
||||
app:nullable="true" />
|
||||
<action
|
||||
|
|
Loading…
Reference in New Issue