Loading app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserInteractor.kt +4 −0 Original line number Diff line number Diff line Loading @@ -27,4 +27,8 @@ open class BrowserInteractor( override fun onBrowserToolbarMenuItemTapped(item: ToolbarMenu.Item) { browserToolbarController.handleToolbarItemInteraction(item) } override fun onBrowserMenuDismissed(lowPrioHighlightItems: List<ToolbarMenu.Item>) { browserToolbarController.handleBrowserMenuDismissed(lowPrioHighlightItems) } } app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarController.kt +12 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ interface BrowserToolbarController { fun handleToolbarItemInteraction(item: ToolbarMenu.Item) fun handleToolbarClick() fun handleTabCounterClick() fun handleBrowserMenuDismissed(lowPrioHighlightItems: List<ToolbarMenu.Item>) } @Suppress("LargeClass") Loading Loading @@ -121,6 +122,17 @@ class DefaultBrowserToolbarController( animateTabAndNavigateHome() } override fun handleBrowserMenuDismissed(lowPrioHighlightItems: List<ToolbarMenu.Item>) { lowPrioHighlightItems.forEach { when (it) { ToolbarMenu.Item.AddToHomeScreen -> activity.settings().installPwaOpened = true is ToolbarMenu.Item.ReaderMode -> activity.settings().readerModeOpened = true ToolbarMenu.Item.OpenInApp -> activity.settings().openInAppOpened = true else -> {} } } } @ExperimentalCoroutinesApi @SuppressWarnings("ComplexMethod", "LongMethod") override fun handleToolbarItemInteraction(item: ToolbarMenu.Item) { Loading app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarView.kt +13 −5 Original line number Diff line number Diff line Loading @@ -16,8 +16,10 @@ import androidx.core.view.isVisible import androidx.lifecycle.LifecycleOwner import com.google.android.material.snackbar.Snackbar import kotlinx.android.extensions.LayoutContainer import kotlinx.android.synthetic.main.browser_toolbar_popup_window.view.* import kotlinx.android.synthetic.main.component_browser_top_toolbar.view.* import kotlinx.android.synthetic.main.browser_toolbar_popup_window.view.copy import kotlinx.android.synthetic.main.browser_toolbar_popup_window.view.paste import kotlinx.android.synthetic.main.browser_toolbar_popup_window.view.paste_and_go import kotlinx.android.synthetic.main.component_browser_top_toolbar.view.app_bar import mozilla.components.browser.domains.autocomplete.ShippedDomainsProvider import mozilla.components.browser.session.Session import mozilla.components.browser.toolbar.BrowserToolbar Loading @@ -39,6 +41,7 @@ interface BrowserToolbarViewInteractor { fun onBrowserToolbarClicked() fun onBrowserToolbarMenuItemTapped(item: ToolbarMenu.Item) fun onTabCounterClicked() fun onBrowserMenuDismissed(lowPrioHighlightItems: List<ToolbarMenu.Item>) } class BrowserToolbarView( Loading Loading @@ -173,8 +176,9 @@ class BrowserToolbarView( display.hint = context.getString(R.string.search_hint) } val menuToolbar = if (isCustomTabSession) { CustomTabToolbarMenu( val menuToolbar: ToolbarMenu if (isCustomTabSession) { menuToolbar = CustomTabToolbarMenu( this, sessionManager, customTabSession?.id, Loading @@ -184,7 +188,7 @@ class BrowserToolbarView( } ) } else { DefaultToolbarMenu( menuToolbar = DefaultToolbarMenu( context = this, hasAccountProblem = components.backgroundServices.accountManager.accountNeedsReauth(), shouldReverseItems = !shouldUseBottomToolbar, Loading @@ -193,6 +197,10 @@ class BrowserToolbarView( sessionManager = sessionManager, bookmarksStorage = bookmarkStorage ) view.display.setMenuDismissAction { interactor.onBrowserMenuDismissed(menuToolbar.getLowPrioHighlightItems()) view.invalidateActions() } } toolbarIntegration = if (customTabSession != null) { Loading app/src/main/java/org/mozilla/fenix/components/toolbar/DefaultToolbarMenu.kt +28 −10 Original line number Diff line number Diff line Loading @@ -132,6 +132,34 @@ class DefaultToolbarMenu( BrowserMenuItemToolbar(listOf(bookmark, share, forward, refresh)) } internal fun getLowPrioHighlightItems(): List<ToolbarMenu.Item> { val lowPrioHighlightItems: MutableList<ToolbarMenu.Item> = mutableListOf() if (shouldShowAddToHomescreen() && addToHomescreen.isHighlighted()) { lowPrioHighlightItems.add(ToolbarMenu.Item.AddToHomeScreen) } if (shouldShowReaderMode() && readerMode.isHighlighted()) { lowPrioHighlightItems.add(ToolbarMenu.Item.ReaderMode(false)) } if (shouldShowOpenInApp() && openInApp.isHighlighted()) { lowPrioHighlightItems.add(ToolbarMenu.Item.OpenInApp) } return lowPrioHighlightItems } // Predicates that need to be repeatedly called as the session changes private fun shouldShowAddToHomescreen(): Boolean = session != null && context.components.useCases.webAppUseCases.isPinningSupported() private fun shouldShowReaderMode(): Boolean = session?.readerable ?: false private fun shouldShowOpenInApp(): Boolean = session?.let { session -> val appLink = context.components.useCases.appLinksUseCases.appLinkRedirect appLink(session.url).hasExternalApp() } ?: false private fun shouldShowReaderAppearance(): Boolean = session?.readerMode ?: false // End of predicates // private val menuItems by lazy { // Predicates that are called once, during screen init val shouldShowSaveToCollection = (context.asActivity() as? HomeActivity) Loading @@ -143,16 +171,6 @@ class DefaultToolbarMenu( ReleaseChannel.FennecProduction ) // Predicates that need to be repeatedly called as the session changes fun shouldShowAddToHomescreen(): Boolean = session != null && context.components.useCases.webAppUseCases.isPinningSupported() fun shouldShowReaderMode(): Boolean = session?.readerable ?: false fun shouldShowOpenInApp(): Boolean = session?.let { session -> val appLink = context.components.useCases.appLinksUseCases.appLinkRedirect appLink(session.url).hasExternalApp() } ?: false fun shouldShowReaderAppearance(): Boolean = session?.readerMode ?: false val menuItems = listOfNotNull( library, addons, Loading Loading
app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserInteractor.kt +4 −0 Original line number Diff line number Diff line Loading @@ -27,4 +27,8 @@ open class BrowserInteractor( override fun onBrowserToolbarMenuItemTapped(item: ToolbarMenu.Item) { browserToolbarController.handleToolbarItemInteraction(item) } override fun onBrowserMenuDismissed(lowPrioHighlightItems: List<ToolbarMenu.Item>) { browserToolbarController.handleBrowserMenuDismissed(lowPrioHighlightItems) } }
app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarController.kt +12 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ interface BrowserToolbarController { fun handleToolbarItemInteraction(item: ToolbarMenu.Item) fun handleToolbarClick() fun handleTabCounterClick() fun handleBrowserMenuDismissed(lowPrioHighlightItems: List<ToolbarMenu.Item>) } @Suppress("LargeClass") Loading Loading @@ -121,6 +122,17 @@ class DefaultBrowserToolbarController( animateTabAndNavigateHome() } override fun handleBrowserMenuDismissed(lowPrioHighlightItems: List<ToolbarMenu.Item>) { lowPrioHighlightItems.forEach { when (it) { ToolbarMenu.Item.AddToHomeScreen -> activity.settings().installPwaOpened = true is ToolbarMenu.Item.ReaderMode -> activity.settings().readerModeOpened = true ToolbarMenu.Item.OpenInApp -> activity.settings().openInAppOpened = true else -> {} } } } @ExperimentalCoroutinesApi @SuppressWarnings("ComplexMethod", "LongMethod") override fun handleToolbarItemInteraction(item: ToolbarMenu.Item) { Loading
app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarView.kt +13 −5 Original line number Diff line number Diff line Loading @@ -16,8 +16,10 @@ import androidx.core.view.isVisible import androidx.lifecycle.LifecycleOwner import com.google.android.material.snackbar.Snackbar import kotlinx.android.extensions.LayoutContainer import kotlinx.android.synthetic.main.browser_toolbar_popup_window.view.* import kotlinx.android.synthetic.main.component_browser_top_toolbar.view.* import kotlinx.android.synthetic.main.browser_toolbar_popup_window.view.copy import kotlinx.android.synthetic.main.browser_toolbar_popup_window.view.paste import kotlinx.android.synthetic.main.browser_toolbar_popup_window.view.paste_and_go import kotlinx.android.synthetic.main.component_browser_top_toolbar.view.app_bar import mozilla.components.browser.domains.autocomplete.ShippedDomainsProvider import mozilla.components.browser.session.Session import mozilla.components.browser.toolbar.BrowserToolbar Loading @@ -39,6 +41,7 @@ interface BrowserToolbarViewInteractor { fun onBrowserToolbarClicked() fun onBrowserToolbarMenuItemTapped(item: ToolbarMenu.Item) fun onTabCounterClicked() fun onBrowserMenuDismissed(lowPrioHighlightItems: List<ToolbarMenu.Item>) } class BrowserToolbarView( Loading Loading @@ -173,8 +176,9 @@ class BrowserToolbarView( display.hint = context.getString(R.string.search_hint) } val menuToolbar = if (isCustomTabSession) { CustomTabToolbarMenu( val menuToolbar: ToolbarMenu if (isCustomTabSession) { menuToolbar = CustomTabToolbarMenu( this, sessionManager, customTabSession?.id, Loading @@ -184,7 +188,7 @@ class BrowserToolbarView( } ) } else { DefaultToolbarMenu( menuToolbar = DefaultToolbarMenu( context = this, hasAccountProblem = components.backgroundServices.accountManager.accountNeedsReauth(), shouldReverseItems = !shouldUseBottomToolbar, Loading @@ -193,6 +197,10 @@ class BrowserToolbarView( sessionManager = sessionManager, bookmarksStorage = bookmarkStorage ) view.display.setMenuDismissAction { interactor.onBrowserMenuDismissed(menuToolbar.getLowPrioHighlightItems()) view.invalidateActions() } } toolbarIntegration = if (customTabSession != null) { Loading
app/src/main/java/org/mozilla/fenix/components/toolbar/DefaultToolbarMenu.kt +28 −10 Original line number Diff line number Diff line Loading @@ -132,6 +132,34 @@ class DefaultToolbarMenu( BrowserMenuItemToolbar(listOf(bookmark, share, forward, refresh)) } internal fun getLowPrioHighlightItems(): List<ToolbarMenu.Item> { val lowPrioHighlightItems: MutableList<ToolbarMenu.Item> = mutableListOf() if (shouldShowAddToHomescreen() && addToHomescreen.isHighlighted()) { lowPrioHighlightItems.add(ToolbarMenu.Item.AddToHomeScreen) } if (shouldShowReaderMode() && readerMode.isHighlighted()) { lowPrioHighlightItems.add(ToolbarMenu.Item.ReaderMode(false)) } if (shouldShowOpenInApp() && openInApp.isHighlighted()) { lowPrioHighlightItems.add(ToolbarMenu.Item.OpenInApp) } return lowPrioHighlightItems } // Predicates that need to be repeatedly called as the session changes private fun shouldShowAddToHomescreen(): Boolean = session != null && context.components.useCases.webAppUseCases.isPinningSupported() private fun shouldShowReaderMode(): Boolean = session?.readerable ?: false private fun shouldShowOpenInApp(): Boolean = session?.let { session -> val appLink = context.components.useCases.appLinksUseCases.appLinkRedirect appLink(session.url).hasExternalApp() } ?: false private fun shouldShowReaderAppearance(): Boolean = session?.readerMode ?: false // End of predicates // private val menuItems by lazy { // Predicates that are called once, during screen init val shouldShowSaveToCollection = (context.asActivity() as? HomeActivity) Loading @@ -143,16 +171,6 @@ class DefaultToolbarMenu( ReleaseChannel.FennecProduction ) // Predicates that need to be repeatedly called as the session changes fun shouldShowAddToHomescreen(): Boolean = session != null && context.components.useCases.webAppUseCases.isPinningSupported() fun shouldShowReaderMode(): Boolean = session?.readerable ?: false fun shouldShowOpenInApp(): Boolean = session?.let { session -> val appLink = context.components.useCases.appLinksUseCases.appLinkRedirect appLink(session.url).hasExternalApp() } ?: false fun shouldShowReaderAppearance(): Boolean = session?.readerMode ?: false val menuItems = listOfNotNull( library, addons, Loading