diff --git a/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayController.kt b/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayController.kt
index 201ef8573..d5f2c4816 100644
--- a/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayController.kt
+++ b/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayController.kt
@@ -52,7 +52,7 @@ interface TabTrayController {
fun handleOpenTab(tab: Tab)
fun handleEnterMultiselect()
fun handleRecentlyClosedClicked()
- fun handleSetUpAutoCloseTabsClicked()
+ fun handleGoToTabsSettingClicked()
}
/**
@@ -239,7 +239,7 @@ class DefaultTabTrayController(
navController.navigate(directions)
}
- override fun handleSetUpAutoCloseTabsClicked() {
+ override fun handleGoToTabsSettingClicked() {
val directions = TabTrayDialogFragmentDirections.actionGlobalTabSettingsFragment()
navController.navigate(directions)
}
diff --git a/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayFragmentInteractor.kt b/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayFragmentInteractor.kt
index 4ca0bc882..8dc718225 100644
--- a/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayFragmentInteractor.kt
+++ b/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayFragmentInteractor.kt
@@ -70,9 +70,10 @@ interface TabTrayInteractor {
fun onModeRequested(): TabTrayDialogFragmentState.Mode
/**
- * Called when user clicks on the "set it up" prompt for automatically closing tabs
+ * Called when user clicks on the action button prompt in the info banner CFR for
+ * automatically closing tabs or changing the layout of open tabs.
*/
- fun onSetUpAutoCloseTabsClicked()
+ fun onGoToTabsSettings()
/**
* Called when a tab should be opened in the browser.
@@ -173,7 +174,7 @@ class TabTrayFragmentInteractor(private val controller: TabTrayController) : Tab
controller.handleEnterMultiselect()
}
- override fun onSetUpAutoCloseTabsClicked() {
- controller.handleSetUpAutoCloseTabsClicked()
+ override fun onGoToTabsSettings() {
+ controller.handleGoToTabsSettingClicked()
}
}
diff --git a/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayView.kt b/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayView.kt
index f54055aaf..ed6494e4c 100644
--- a/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayView.kt
+++ b/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayView.kt
@@ -270,7 +270,29 @@ class TabTrayView(
adjustNewTabButtonsForNormalMode()
+ @Suppress("ComplexCondition")
if (
+ view.context.settings().showGridViewInTabsSettings &&
+ view.context.settings().shouldShowGridViewBanner &&
+ view.context.settings().canShowCfr &&
+ tabs.size >= TAB_COUNT_SHOW_CFR
+ ) {
+ InfoBanner(
+ context = view.context,
+ message = view.context.getString(R.string.tab_tray_grid_view_banner_message),
+ dismissText = view.context.getString(R.string.tab_tray_grid_view_banner_negative_button_text),
+ actionText = view.context.getString(R.string.tab_tray_grid_view_banner_positive_button_text),
+ container = view.infoBanner,
+ dismissByHiding = true,
+ dismissAction = { view.context.settings().shouldShowGridViewBanner = false }
+ ) {
+ interactor.onGoToTabsSettings()
+ view.context.settings().shouldShowGridViewBanner = false
+ }.apply {
+ view.infoBanner.visibility = View.VISIBLE
+ showBanner()
+ }
+ } else if (
view.context.settings().shouldShowAutoCloseTabsBanner &&
view.context.settings().canShowCfr &&
tabs.size >= TAB_COUNT_SHOW_CFR
@@ -284,7 +306,7 @@ class TabTrayView(
dismissByHiding = true,
dismissAction = { view.context.settings().shouldShowAutoCloseTabsBanner = false }
) {
- interactor.onSetUpAutoCloseTabsClicked()
+ interactor.onGoToTabsSettings()
view.context.settings().shouldShowAutoCloseTabsBanner = false
}.apply {
view.infoBanner.visibility = View.VISIBLE
@@ -713,7 +735,7 @@ class TabTrayView(
layoutManager?.scrollToPosition(recyclerViewIndex)
smoothScrollBy(
0,
- - resources.getDimensionPixelSize(R.dimen.tab_tray_tab_item_height) / 2
+ -resources.getDimensionPixelSize(R.dimen.tab_tray_tab_item_height) / 2
)
}
}
diff --git a/app/src/main/java/org/mozilla/fenix/utils/Settings.kt b/app/src/main/java/org/mozilla/fenix/utils/Settings.kt
index a5548c34c..7f221c328 100644
--- a/app/src/main/java/org/mozilla/fenix/utils/Settings.kt
+++ b/app/src/main/java/org/mozilla/fenix/utils/Settings.kt
@@ -682,6 +682,11 @@ class Settings(private val appContext: Context) : PreferencesHolder {
default = true
)
+ var shouldShowGridViewBanner by booleanPreference(
+ appContext.getPreferenceKey(R.string.pref_key_should_show_grid_view_banner),
+ default = true
+ )
+
@VisibleForTesting(otherwise = PRIVATE)
internal val trackingProtectionOnboardingCount = counterPreference(
appContext.getPreferenceKey(R.string.pref_key_tracking_protection_onboarding),
diff --git a/app/src/main/res/values/preference_keys.xml b/app/src/main/res/values/preference_keys.xml
index 5a839202c..b035a92f5 100644
--- a/app/src/main/res/values/preference_keys.xml
+++ b/app/src/main/res/values/preference_keys.xml
@@ -197,6 +197,9 @@
pref_key_should_show_auto_close_tabs_banner
+
+ pref_key_should_show_grid_view_banner
+
pref_key_migrating_from_fenix_nightly_tip
pref_key_migrating_from_firefox_nightly_tip
pref_key_migrating_from_fenix_tip
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index f8e6f2614..04aeb1d43 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -92,6 +92,13 @@
Dismiss
+
+ Change the layout of open tabs. Go to settings and select grid under tab view.
+
+ Go to settings
+
+ Dismiss
+
New tab
diff --git a/app/src/test/java/org/mozilla/fenix/tabtray/DefaultTabTrayControllerTest.kt b/app/src/test/java/org/mozilla/fenix/tabtray/DefaultTabTrayControllerTest.kt
index 8f3e01040..7648cf96b 100644
--- a/app/src/test/java/org/mozilla/fenix/tabtray/DefaultTabTrayControllerTest.kt
+++ b/app/src/test/java/org/mozilla/fenix/tabtray/DefaultTabTrayControllerTest.kt
@@ -315,7 +315,7 @@ class DefaultTabTrayControllerTest {
@Test
fun handleSetUpAutoCloseTabsClicked() {
- controller.handleSetUpAutoCloseTabsClicked()
+ controller.handleGoToTabsSettingClicked()
val directions = TabTrayDialogFragmentDirections.actionGlobalTabSettingsFragment()
verify {
diff --git a/app/src/test/java/org/mozilla/fenix/tabtray/TabTrayFragmentInteractorTest.kt b/app/src/test/java/org/mozilla/fenix/tabtray/TabTrayFragmentInteractorTest.kt
index 2d626a3b9..a0e50b017 100644
--- a/app/src/test/java/org/mozilla/fenix/tabtray/TabTrayFragmentInteractorTest.kt
+++ b/app/src/test/java/org/mozilla/fenix/tabtray/TabTrayFragmentInteractorTest.kt
@@ -135,8 +135,8 @@ class TabTrayFragmentInteractorTest {
}
@Test
- fun onSetUpAutoCloseTabsClicked() {
- interactor.onSetUpAutoCloseTabsClicked()
- verify { controller.handleSetUpAutoCloseTabsClicked() }
+ fun onGoToTabsSettingClicked() {
+ interactor.onGoToTabsSettings()
+ verify { controller.handleGoToTabsSettingClicked() }
}
}