From 414cf16658f9effc5a1b7cc5487345b40f3411e2 Mon Sep 17 00:00:00 2001 From: Emily Kager Date: Mon, 11 Feb 2019 14:12:18 -0800 Subject: [PATCH] Closes #436 - Make Toolbar Menu Item When Exhaustive --- .../mozilla/fenix/browser/BrowserFragment.kt | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) 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 3b2ce8b80..8be237aff 100644 --- a/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt @@ -29,9 +29,9 @@ import mozilla.components.feature.downloads.DownloadsFeature import mozilla.components.feature.prompts.PromptFeature import mozilla.components.feature.session.SessionFeature import mozilla.components.feature.session.SessionUseCases -import org.mozilla.fenix.DefaultThemeManager import mozilla.components.support.base.feature.BackHandler import mozilla.components.support.base.feature.ViewBoundFeatureWrapper +import org.mozilla.fenix.DefaultThemeManager import org.mozilla.fenix.R import org.mozilla.fenix.components.FindInPageIntegration import org.mozilla.fenix.ext.requireComponents @@ -208,7 +208,7 @@ class BrowserFragment : Fragment(), BackHandler { @SuppressWarnings("ComplexMethod") private fun handleToolbarItemInteraction(action: SearchAction.ToolbarMenuItemTapped) { val sessionUseCases = requireComponents.useCases.sessionUseCases - when (action.item) { + Do exhaustive when (action.item) { is ToolbarMenu.Item.Back -> sessionUseCases.goBack.invoke() is ToolbarMenu.Item.Forward -> sessionUseCases.goForward.invoke() is ToolbarMenu.Item.Reload -> sessionUseCases.reload.invoke() @@ -221,17 +221,33 @@ class BrowserFragment : Fragment(), BackHandler { .selectedSession?.url?.apply { requireContext().share(this) } is ToolbarMenu.Item.NewPrivateTab -> { PreferenceManager.getDefaultSharedPreferences(context) - .edit().putBoolean(context!!.getString(R.string.pref_key_private_mode), - !PreferenceManager.getDefaultSharedPreferences(context) - .getBoolean(context!!.getString(R.string.pref_key_private_mode), false)).apply() } + .edit().putBoolean( + context!!.getString(R.string.pref_key_private_mode), + !PreferenceManager.getDefaultSharedPreferences(context) + .getBoolean(context!!.getString(R.string.pref_key_private_mode), false) + ).apply() + } + is ToolbarMenu.Item.FindInPage -> FindInPageIntegration.launch?.invoke() is ToolbarMenu.Item.ReportIssue -> requireComponents.core.sessionManager .selectedSession?.url?.apply { val reportUrl = String.format(REPORT_SITE_ISSUE_URL, this) sessionUseCases.loadUrl.invoke(reportUrl) } + ToolbarMenu.Item.Help -> { + // TODO Help + } + ToolbarMenu.Item.NewTab -> { + val directions = + BrowserFragmentDirections.actionBrowserFragmentToSearchFragment(null) + Navigation.findNavController(view!!).navigate(directions) + } } } + object Do { + inline infix fun exhaustive(any: T?) = any + } + companion object { private const val REQUEST_CODE_DOWNLOAD_PERMISSIONS = 1 private const val REQUEST_CODE_PROMPT_PERMISSIONS = 2