1
0
Fork 0

For #355 - re-adds the request desktop functionality

master
Jeff Boek 2019-02-07 15:26:18 -08:00
parent 98a1ae578e
commit b8ab51318e
3 changed files with 19 additions and 8 deletions

View File

@ -32,6 +32,7 @@ import org.mozilla.fenix.ext.requireComponents
import mozilla.components.feature.prompts.PromptFeature
import org.mozilla.fenix.BackHandler
import org.mozilla.fenix.components.FindInPageIntegration
import org.mozilla.fenix.ext.share
import org.mozilla.fenix.mvi.ActionBusFactory
import org.mozilla.fenix.mvi.getSafeManagedObservable
import org.mozilla.fenix.search.toolbar.SearchAction
@ -184,6 +185,8 @@ class BrowserFragment : Fragment(), BackHandler {
promptsFeature.onActivityResult(requestCode, resultCode, data)
}
// This method triggers the complexity warning. However it's actually not that hard to understand.
@SuppressWarnings("ComplexMethod")
private fun handleToolbarItemInteraction(action: SearchAction.ToolbarMenuItemTapped) {
val sessionUseCases = requireComponents.useCases.sessionUseCases
when (action.item) {
@ -194,7 +197,9 @@ class BrowserFragment : Fragment(), BackHandler {
.navigate(R.id.action_browserFragment_to_settingsActivity, null, null)
is ToolbarMenu.Item.Library -> Navigation.findNavController(toolbar)
.navigate(R.id.action_browserFragment_to_libraryFragment, null, null)
else -> return
is ToolbarMenu.Item.RequestDesktop -> sessionUseCases.requestDesktopSite.invoke(action.item.isChecked)
is ToolbarMenu.Item.Share -> requireComponents.core.sessionManager
.selectedSession?.url?.apply { requireContext().share(this) }
}
}

View File

@ -12,7 +12,11 @@ import mozilla.components.browser.menu.item.BrowserMenuItemToolbar
import mozilla.components.browser.menu.item.BrowserMenuSwitch
import org.mozilla.fenix.R
class ToolbarMenu(private val context: Context, private val onItemTapped: (Item) -> Unit = {}) {
class ToolbarMenu(
private val context: Context,
private val requestDesktopStateProvider: () -> Boolean = { false },
private val onItemTapped: (Item) -> Unit = {}
) {
sealed class Item {
object Help : Item()
object Settings : Item()
@ -88,11 +92,10 @@ class ToolbarMenu(private val context: Context, private val onItemTapped: (Item)
BrowserMenuDivider(),
BrowserMenuSwitch(context.getString(R.string.browser_menu_desktop_site), {
false
}) { checked ->
onItemTapped.invoke(Item.RequestDesktop(checked))
},
BrowserMenuSwitch(context.getString(R.string.browser_menu_desktop_site),
requestDesktopStateProvider, { checked ->
onItemTapped.invoke(Item.RequestDesktop(checked))
}),
BrowserMenuImageText(
context.getString(R.string.browser_menu_find_in_page),

View File

@ -64,7 +64,10 @@ class ToolbarUIView(
toolbarIntegration = ToolbarIntegration(
this,
view,
ToolbarMenu(this) { actionEmitter.onNext(SearchAction.ToolbarMenuItemTapped(it)) },
ToolbarMenu(this,
requestDesktopStateProvider = { components.core.sessionManager.selectedSessionOrThrow.desktopMode },
onItemTapped = { actionEmitter.onNext(SearchAction.ToolbarMenuItemTapped(it)) }
),
ShippedDomainsProvider().also { it.initialize(this) },
components.core.historyStorage,
components.core.sessionManager,