For #24114 - Check feature settings to show and hide home screen sections

This commit is contained in:
Gabriel Luong 2022-03-15 22:55:29 -04:00 committed by mergify[bot]
parent 4f3e891484
commit 48635fb031
2 changed files with 57 additions and 7 deletions

View File

@ -30,6 +30,7 @@ import org.mozilla.fenix.utils.Settings
@Suppress("ComplexMethod", "LongParameterList")
@VisibleForTesting
internal fun normalModeAdapterItems(
settings: Settings,
topSites: List<TopSite>,
collections: List<TabCollection>,
expandedCollections: Set<Long>,
@ -50,23 +51,23 @@ internal fun normalModeAdapterItems(
items.add(AdapterItem.ExperimentDefaultBrowserCard)
}
if (topSites.isNotEmpty()) {
if (settings.showTopSitesFeature && topSites.isNotEmpty()) {
items.add(AdapterItem.TopSitePager(topSites))
}
if (recentTabs.isNotEmpty()) {
if (settings.showRecentTabsFeature && recentTabs.isNotEmpty()) {
shouldShowCustomizeHome = true
items.add(AdapterItem.RecentTabsHeader)
items.add(AdapterItem.RecentTabItem)
}
if (recentBookmarks.isNotEmpty()) {
if (settings.showRecentBookmarksFeature && recentBookmarks.isNotEmpty()) {
shouldShowCustomizeHome = true
items.add(AdapterItem.RecentBookmarksHeader)
items.add(AdapterItem.RecentBookmarks)
}
if (recentVisits.isNotEmpty()) {
if (settings.historyMetadataUIFeature && recentVisits.isNotEmpty()) {
shouldShowCustomizeHome = true
items.add(AdapterItem.RecentVisitsHeader)
items.add(AdapterItem.RecentVisitsItems)
@ -80,7 +81,7 @@ internal fun normalModeAdapterItems(
showCollections(collections, expandedCollections, items)
}
if (pocketStories.isNotEmpty()) {
if (settings.showPocketRecommendationsFeature && pocketStories.isNotEmpty()) {
shouldShowCustomizeHome = true
items.add(AdapterItem.PocketStoriesItem)
items.add(AdapterItem.PocketCategoriesItem)
@ -148,8 +149,9 @@ private fun onboardingAdapterItems(onboardingState: OnboardingState): List<Adapt
return items
}
private fun AppState.toAdapterList(): List<AdapterItem> = when (mode) {
private fun AppState.toAdapterList(settings: Settings): List<AdapterItem> = when (mode) {
is Mode.Normal -> normalModeAdapterItems(
settings,
topSites,
collections,
expandedCollections,
@ -219,6 +221,6 @@ class SessionControlView(
if (shouldReportMetrics) interactor.reportSessionMetrics(state)
sessionControlAdapter.submitList(state.toAdapterList())
sessionControlAdapter.submitList(state.toAdapterList(view.context.settings()))
}
}

View File

@ -133,6 +133,7 @@ class SessionControlViewTest {
@Test
fun `GIVEN recent Bookmarks WHEN normalModeAdapterItems is called THEN add a customize home button`() {
val settings: Settings = mockk()
val topSites = emptyList<TopSite>()
val collections = emptyList<TabCollection>()
val expandedCollections = emptySet<Long>()
@ -141,7 +142,14 @@ class SessionControlViewTest {
val historyMetadata = emptyList<RecentHistoryGroup>()
val pocketArticles = emptyList<PocketRecommendedStory>()
every { settings.showTopSitesFeature } returns true
every { settings.showRecentTabsFeature } returns true
every { settings.showRecentBookmarksFeature } returns true
every { settings.historyMetadataUIFeature } returns true
every { settings.showPocketRecommendationsFeature } returns true
val results = normalModeAdapterItems(
settings,
topSites,
collections,
expandedCollections,
@ -161,6 +169,7 @@ class SessionControlViewTest {
@Test
fun `GIVEN recent tabs WHEN normalModeAdapterItems is called THEN add a customize home button`() {
val settings: Settings = mockk()
val topSites = emptyList<TopSite>()
val collections = emptyList<TabCollection>()
val expandedCollections = emptySet<Long>()
@ -169,7 +178,14 @@ class SessionControlViewTest {
val historyMetadata = emptyList<RecentHistoryGroup>()
val pocketArticles = emptyList<PocketRecommendedStory>()
every { settings.showTopSitesFeature } returns true
every { settings.showRecentTabsFeature } returns true
every { settings.showRecentBookmarksFeature } returns true
every { settings.historyMetadataUIFeature } returns true
every { settings.showPocketRecommendationsFeature } returns true
val results = normalModeAdapterItems(
settings,
topSites,
collections,
expandedCollections,
@ -189,6 +205,7 @@ class SessionControlViewTest {
@Test
fun `GIVEN history metadata WHEN normalModeAdapterItems is called THEN add a customize home button`() {
val settings: Settings = mockk()
val topSites = emptyList<TopSite>()
val collections = emptyList<TabCollection>()
val expandedCollections = emptySet<Long>()
@ -197,7 +214,14 @@ class SessionControlViewTest {
val historyMetadata = listOf(RecentHistoryGroup("title", emptyList()))
val pocketArticles = emptyList<PocketRecommendedStory>()
every { settings.showTopSitesFeature } returns true
every { settings.showRecentTabsFeature } returns true
every { settings.showRecentBookmarksFeature } returns true
every { settings.historyMetadataUIFeature } returns true
every { settings.showPocketRecommendationsFeature } returns true
val results = normalModeAdapterItems(
settings,
topSites,
collections,
expandedCollections,
@ -217,6 +241,7 @@ class SessionControlViewTest {
@Test
fun `GIVEN pocket articles WHEN normalModeAdapterItems is called THEN add a customize home button`() {
val settings: Settings = mockk()
val topSites = emptyList<TopSite>()
val collections = emptyList<TabCollection>()
val expandedCollections = emptySet<Long>()
@ -225,7 +250,14 @@ class SessionControlViewTest {
val historyMetadata = emptyList<RecentHistoryGroup>()
val pocketArticles = listOf(PocketRecommendedStory("", "", "", "", "", 1, 1))
every { settings.showTopSitesFeature } returns true
every { settings.showRecentTabsFeature } returns true
every { settings.showRecentBookmarksFeature } returns true
every { settings.historyMetadataUIFeature } returns true
every { settings.showPocketRecommendationsFeature } returns true
val results = normalModeAdapterItems(
settings,
topSites,
collections,
expandedCollections,
@ -246,6 +278,7 @@ class SessionControlViewTest {
@Test
fun `GIVEN none recentBookmarks,recentTabs, historyMetadata or pocketArticles WHEN normalModeAdapterItems is called THEN the customize home button is not added`() {
val settings: Settings = mockk()
val topSites = emptyList<TopSite>()
val collections = emptyList<TabCollection>()
val expandedCollections = emptySet<Long>()
@ -254,7 +287,14 @@ class SessionControlViewTest {
val historyMetadata = emptyList<RecentHistoryGroup>()
val pocketArticles = emptyList<PocketRecommendedStory>()
every { settings.showTopSitesFeature } returns true
every { settings.showRecentTabsFeature } returns true
every { settings.showRecentBookmarksFeature } returns true
every { settings.historyMetadataUIFeature } returns true
every { settings.showPocketRecommendationsFeature } returns true
val results = normalModeAdapterItems(
settings,
topSites,
collections,
expandedCollections,
@ -271,6 +311,7 @@ class SessionControlViewTest {
@Test
fun `GIVEN all items THEN top placeholder item is always the first item`() {
val settings: Settings = mockk()
val collection = mockk<TabCollection> {
every { id } returns 123L
}
@ -282,7 +323,14 @@ class SessionControlViewTest {
val historyMetadata = listOf<RecentHistoryGroup>(mockk())
val pocketArticles = listOf<PocketRecommendedStory>(mockk())
every { settings.showTopSitesFeature } returns true
every { settings.showRecentTabsFeature } returns true
every { settings.showRecentBookmarksFeature } returns true
every { settings.historyMetadataUIFeature } returns true
every { settings.showPocketRecommendationsFeature } returns true
val results = normalModeAdapterItems(
settings,
topSites,
collections,
expandedCollections,