From f686e75992e04fd807336c48b9652bcf350bb6a4 Mon Sep 17 00:00:00 2001 From: Harrison Oglesby Date: Thu, 11 Jan 2024 16:08:40 -0800 Subject: [PATCH] Bug 1874298 - Add Reload Page action to PageActions in Toolbar --- .../mozilla/fenix/browser/BrowserFragment.kt | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) 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 303d4de44..98ec14668 100644 --- a/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt @@ -166,6 +166,7 @@ class BrowserFragment : BaseBrowserFragment(), UserInteractionHandler { initTranslationsAction(context, view) initSharePageAction(context) initReviewQualityCheck(context, view) + initReloadAction(context) thumbnailsFeature.set( feature = BrowserThumbnails(context, binding.engineView, components.core.store), @@ -349,6 +350,49 @@ class BrowserFragment : BaseBrowserFragment(), UserInteractionHandler { } } + private fun initReloadAction(context: Context) { + if (!IncompleteRedesignToolbarFeature(context.settings()).isEnabled || refreshAction != null) { + return + } + + refreshAction = + BrowserToolbar.TwoStateButton( + primaryImage = AppCompatResources.getDrawable( + context, + R.drawable.mozac_ic_arrow_clockwise_24, + )!!, + primaryContentDescription = context.getString(R.string.browser_menu_refresh), + primaryImageTintResource = ThemeManager.resolveAttribute(R.attr.textPrimary, context), + isInPrimaryState = { + getCurrentTab()?.content?.loading == false + }, + secondaryImage = AppCompatResources.getDrawable( + context, + R.drawable.mozac_ic_stop, + )!!, + secondaryContentDescription = context.getString(R.string.browser_menu_stop), + disableInSecondaryState = false, + longClickListener = { + browserToolbarInteractor.onBrowserToolbarMenuItemTapped( + ToolbarMenu.Item.Reload(bypassCache = true), + ) + }, + listener = { + if (getCurrentTab()?.content?.loading == true) { + browserToolbarInteractor.onBrowserToolbarMenuItemTapped(ToolbarMenu.Item.Stop) + } else { + browserToolbarInteractor.onBrowserToolbarMenuItemTapped( + ToolbarMenu.Item.Reload(bypassCache = false), + ) + } + }, + ) + + refreshAction?.let { + browserToolbarView.view.addPageAction(it) + } + } + private fun initReviewQualityCheck(context: Context, view: View) { val reviewQualityCheck = BrowserToolbar.ToggleButton(