From d5cb4705911d0d2add9b98b0d4a946ecd5a5a8ee Mon Sep 17 00:00:00 2001 From: mike a Date: Tue, 23 May 2023 17:36:25 -0700 Subject: [PATCH] =?UTF-8?q?Bug=201831104=20=E2=80=93=20keep=20pre-fill=20a?= =?UTF-8?q?rrows=20only=20for=20search=20engine=20suggestions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fenix/search/awesomebar/AwesomeBarView.kt | 5 + .../search/awesomebar/AwesomeBarViewTest.kt | 353 ++++++++++++++++++ 2 files changed, 358 insertions(+) diff --git a/app/src/main/java/org/mozilla/fenix/search/awesomebar/AwesomeBarView.kt b/app/src/main/java/org/mozilla/fenix/search/awesomebar/AwesomeBarView.kt index 7f8dec85e..67ce113d0 100644 --- a/app/src/main/java/org/mozilla/fenix/search/awesomebar/AwesomeBarView.kt +++ b/app/src/main/java/org/mozilla/fenix/search/awesomebar/AwesomeBarView.kt @@ -122,6 +122,7 @@ class AwesomeBarView( loadUrlUseCase, components.core.icons, engineForSpeculativeConnects, + showEditSuggestion = false, suggestionsHeader = activity.getString(R.string.firefox_suggest_header), ) @@ -133,6 +134,7 @@ class AwesomeBarView( icons = components.core.icons, engine = engineForSpeculativeConnects, maxNumberOfSuggestions = METADATA_SUGGESTION_LIMIT, + showEditSuggestion = false, suggestionsHeader = activity.getString(R.string.firefox_suggest_header), ) @@ -347,6 +349,7 @@ class AwesomeBarView( icons = components.core.icons, engine = engineForSpeculativeConnects, maxNumberOfSuggestions = METADATA_SUGGESTION_LIMIT, + showEditSuggestion = false, suggestionsHeader = activity.getString(R.string.firefox_suggest_header), resultsHostFilter = searchEngineHostFilter, ) @@ -357,6 +360,7 @@ class AwesomeBarView( icons = components.core.icons, engine = engineForSpeculativeConnects, maxNumberOfSuggestions = METADATA_SUGGESTION_LIMIT, + showEditSuggestion = false, suggestionsHeader = activity.getString(R.string.firefox_suggest_header), resultsHostFilter = searchEngineHostFilter, ) @@ -531,6 +535,7 @@ class AwesomeBarView( icons = components.core.icons, indicatorIcon = getDrawable(activity, R.drawable.ic_search_results_bookmarks), engine = engineForSpeculativeConnects, + showEditSuggestion = false, suggestionsHeader = activity.getString(R.string.firefox_suggest_header), resultsHostFilter = searchEngineHostFilter, ) diff --git a/app/src/test/java/org/mozilla/fenix/search/awesomebar/AwesomeBarViewTest.kt b/app/src/test/java/org/mozilla/fenix/search/awesomebar/AwesomeBarViewTest.kt index 7ec422e44..2004695d7 100644 --- a/app/src/test/java/org/mozilla/fenix/search/awesomebar/AwesomeBarViewTest.kt +++ b/app/src/test/java/org/mozilla/fenix/search/awesomebar/AwesomeBarViewTest.kt @@ -27,6 +27,7 @@ import mozilla.components.feature.syncedtabs.SyncedTabsStorageSuggestionProvider import mozilla.components.support.ktx.android.content.getColorFromAttr import org.junit.After import org.junit.Assert.assertEquals +import org.junit.Assert.assertFalse import org.junit.Assert.assertNotNull import org.junit.Assert.assertNull import org.junit.Assert.assertTrue @@ -187,6 +188,358 @@ class AwesomeBarViewTest { assertEquals(AwesomeBarView.METADATA_SUGGESTION_LIMIT, historyProvider.getMaxNumberOfSuggestions()) } + @Test + fun `GIVEN the default engine is selected WHEN history metadata is enabled THEN suggestions are disabled in history and bookmark providers`() { + val settings: Settings = mockk(relaxed = true) { + every { historyMetadataUIFeature } returns true + } + every { activity.settings() } returns settings + val state = getSearchProviderState( + showSearchShortcuts = false, + showHistorySuggestionsForCurrentEngine = false, + showBookmarksSuggestionsForCurrentEngine = false, + showSyncedTabsSuggestionsForCurrentEngine = false, + showSessionSuggestionsForCurrentEngine = false, + searchEngineSource = SearchEngineSource.Default(mockk(relaxed = true)), + ) + + val result = awesomeBarView.getProvidersToAdd(state) + + val combinedHistoryProvider = result.firstOrNull { it is CombinedHistorySuggestionProvider } as CombinedHistorySuggestionProvider + assertNotNull(combinedHistoryProvider) + assertFalse(combinedHistoryProvider.showEditSuggestion) + + val bookmarkProvider = result.firstOrNull { it is BookmarksStorageSuggestionProvider } as BookmarksStorageSuggestionProvider + assertNotNull(bookmarkProvider) + assertFalse(bookmarkProvider.showEditSuggestion) + } + + @Test + fun `GIVEN the default engine is selected WHEN history metadata is disabled THEN suggestions are disabled in history and bookmark providers`() { + val settings: Settings = mockk(relaxed = true) { + every { historyMetadataUIFeature } returns false + } + every { activity.settings() } returns settings + val state = getSearchProviderState( + showSearchShortcuts = false, + showHistorySuggestionsForCurrentEngine = false, + showBookmarksSuggestionsForCurrentEngine = false, + showSyncedTabsSuggestionsForCurrentEngine = false, + showSessionSuggestionsForCurrentEngine = false, + searchEngineSource = SearchEngineSource.Default(mockk(relaxed = true)), + ) + + val result = awesomeBarView.getProvidersToAdd(state) + + val defaultHistoryProvider = result.firstOrNull { it is HistoryStorageSuggestionProvider } as HistoryStorageSuggestionProvider + assertNotNull(defaultHistoryProvider) + assertFalse(defaultHistoryProvider.showEditSuggestion) + + val bookmarkProvider = result.firstOrNull { it is BookmarksStorageSuggestionProvider } as BookmarksStorageSuggestionProvider + assertNotNull(bookmarkProvider) + assertFalse(bookmarkProvider.showEditSuggestion) + } + + @Test + fun `GIVEN the non default general engine is selected WHEN history metadata is enabled THEN history and bookmark providers are not set`() { + val settings: Settings = mockk(relaxed = true) { + every { historyMetadataUIFeature } returns true + } + every { activity.settings() } returns settings + val state = getSearchProviderState( + showSearchShortcuts = false, + showHistorySuggestionsForCurrentEngine = false, + showAllHistorySuggestions = false, + showBookmarksSuggestionsForCurrentEngine = false, + showAllBookmarkSuggestions = false, + showSyncedTabsSuggestionsForCurrentEngine = false, + showAllSyncedTabsSuggestions = false, + showSessionSuggestionsForCurrentEngine = false, + showAllSessionSuggestions = false, + searchEngineSource = SearchEngineSource.Shortcut( + mockk(relaxed = true) { + every { isGeneral } returns true + }, + ), + ) + + val result = awesomeBarView.getProvidersToAdd(state) + + val combinedHistoryProvider = result.firstOrNull { it is CombinedHistorySuggestionProvider } + assertNull(combinedHistoryProvider) + + val bookmarkProvider = result.firstOrNull { it is BookmarksStorageSuggestionProvider } + assertNull(bookmarkProvider) + } + + @Test + fun `GIVEN the non default general engine is selected WHEN history metadata is disabled THEN history and bookmark providers are not set`() { + val settings: Settings = mockk(relaxed = true) { + every { historyMetadataUIFeature } returns false + } + every { activity.settings() } returns settings + val state = getSearchProviderState( + showSearchShortcuts = false, + showHistorySuggestionsForCurrentEngine = false, + showAllHistorySuggestions = false, + showBookmarksSuggestionsForCurrentEngine = false, + showAllBookmarkSuggestions = false, + showSyncedTabsSuggestionsForCurrentEngine = false, + showAllSyncedTabsSuggestions = false, + showSessionSuggestionsForCurrentEngine = false, + showAllSessionSuggestions = false, + searchEngineSource = SearchEngineSource.Shortcut( + mockk(relaxed = true) { + every { isGeneral } returns true + }, + ), + ) + + val result = awesomeBarView.getProvidersToAdd(state) + + val defaultHistoryProvider = result.firstOrNull { it is HistoryStorageSuggestionProvider } + assertNull(defaultHistoryProvider) + + val bookmarkProvider = result.firstOrNull { it is BookmarksStorageSuggestionProvider } + assertNull(bookmarkProvider) + } + + @Test + fun `GIVEN the non default non general engine is selected WHEN history metadata is enabled THEN suggestions are disabled in history and bookmark providers`() { + val settings: Settings = mockk(relaxed = true) { + every { historyMetadataUIFeature } returns true + } + every { activity.settings() } returns settings + val state = getSearchProviderState( + showSearchShortcuts = false, + showAllHistorySuggestions = false, + showAllBookmarkSuggestions = false, + showAllSyncedTabsSuggestions = false, + showAllSessionSuggestions = false, + searchEngineSource = SearchEngineSource.Shortcut( + mockk(relaxed = true) { + every { isGeneral } returns false + }, + ), + ) + + val result = awesomeBarView.getProvidersToAdd(state) + + val combinedHistoryProvider = result.firstOrNull { it is CombinedHistorySuggestionProvider } as CombinedHistorySuggestionProvider + assertNotNull(combinedHistoryProvider) + assertFalse(combinedHistoryProvider.showEditSuggestion) + + val bookmarkProvider = result.firstOrNull { it is BookmarksStorageSuggestionProvider } as BookmarksStorageSuggestionProvider + assertNotNull(bookmarkProvider) + assertFalse(bookmarkProvider.showEditSuggestion) + } + + @Test + fun `GIVEN the non default non general engine is selected WHEN history metadata is disabled THEN suggestions are disabled in history and bookmark providers`() { + val settings: Settings = mockk(relaxed = true) { + every { historyMetadataUIFeature } returns false + } + every { activity.settings() } returns settings + val state = getSearchProviderState( + showSearchShortcuts = false, + showAllHistorySuggestions = false, + showAllBookmarkSuggestions = false, + showAllSyncedTabsSuggestions = false, + showAllSessionSuggestions = false, + searchEngineSource = SearchEngineSource.Shortcut( + mockk(relaxed = true) { + every { isGeneral } returns false + }, + ), + ) + + val result = awesomeBarView.getProvidersToAdd(state) + + val defaultHistoryProvider = result.firstOrNull { it is HistoryStorageSuggestionProvider } as HistoryStorageSuggestionProvider + assertNotNull(defaultHistoryProvider) + assertFalse(defaultHistoryProvider.showEditSuggestion) + + val bookmarkProvider = result.firstOrNull { it is BookmarksStorageSuggestionProvider } as BookmarksStorageSuggestionProvider + assertNotNull(bookmarkProvider) + assertFalse(bookmarkProvider.showEditSuggestion) + } + + @Test + fun `GIVEN history is selected WHEN history metadata is enabled THEN suggestions are disabled in history provider, bookmark provider is not set`() { + val settings: Settings = mockk(relaxed = true) { + every { historyMetadataUIFeature } returns true + } + every { activity.settings() } returns settings + val state = getSearchProviderState( + showSearchShortcuts = false, + showSearchTermHistory = false, + showHistorySuggestionsForCurrentEngine = false, + showBookmarksSuggestionsForCurrentEngine = false, + showAllBookmarkSuggestions = false, + showSearchSuggestions = false, + showSyncedTabsSuggestionsForCurrentEngine = false, + showAllSyncedTabsSuggestions = false, + showSessionSuggestionsForCurrentEngine = false, + showAllSessionSuggestions = false, + searchEngineSource = SearchEngineSource.History(mockk(relaxed = true)), + ) + + val result = awesomeBarView.getProvidersToAdd(state) + + val combinedHistoryProvider = result.firstOrNull { it is CombinedHistorySuggestionProvider } as CombinedHistorySuggestionProvider + assertNotNull(combinedHistoryProvider) + assertFalse(combinedHistoryProvider.showEditSuggestion) + + val bookmarkProvider = result.firstOrNull { it is BookmarksStorageSuggestionProvider } + assertNull(bookmarkProvider) + } + + @Test + fun `GIVEN history is selected WHEN history metadata is disabled THEN suggestions are disabled in history provider, bookmark provider is not set`() { + val settings: Settings = mockk(relaxed = true) { + every { historyMetadataUIFeature } returns false + } + every { activity.settings() } returns settings + val state = getSearchProviderState( + showSearchShortcuts = false, + showSearchTermHistory = false, + showHistorySuggestionsForCurrentEngine = false, + showBookmarksSuggestionsForCurrentEngine = false, + showAllBookmarkSuggestions = false, + showSearchSuggestions = false, + showSyncedTabsSuggestionsForCurrentEngine = false, + showAllSyncedTabsSuggestions = false, + showSessionSuggestionsForCurrentEngine = false, + showAllSessionSuggestions = false, + searchEngineSource = SearchEngineSource.History(mockk(relaxed = true)), + ) + + val result = awesomeBarView.getProvidersToAdd(state) + + val defaultHistoryProvider = result.firstOrNull { it is HistoryStorageSuggestionProvider } as HistoryStorageSuggestionProvider + assertNotNull(defaultHistoryProvider) + assertFalse(defaultHistoryProvider.showEditSuggestion) + + val bookmarkProvider = result.firstOrNull { it is BookmarksStorageSuggestionProvider } + assertNull(bookmarkProvider) + } + + @Test + fun `GIVEN tab engine is selected WHEN history metadata is enabled THEN history and bookmark providers are not set`() { + val settings: Settings = mockk(relaxed = true) { + every { historyMetadataUIFeature } returns true + } + every { activity.settings() } returns settings + val state = getSearchProviderState( + showSearchShortcuts = false, + showSearchTermHistory = false, + showHistorySuggestionsForCurrentEngine = false, + showAllHistorySuggestions = false, + showBookmarksSuggestionsForCurrentEngine = false, + showAllBookmarkSuggestions = false, + showSearchSuggestions = false, + showSyncedTabsSuggestionsForCurrentEngine = false, + showSessionSuggestionsForCurrentEngine = false, + searchEngineSource = SearchEngineSource.Tabs(mockk(relaxed = true)), + ) + + val result = awesomeBarView.getProvidersToAdd(state) + + val combinedHistoryProvider = result.firstOrNull { it is CombinedHistorySuggestionProvider } + assertNull(combinedHistoryProvider) + + val bookmarkProvider = result.firstOrNull { it is BookmarksStorageSuggestionProvider } + assertNull(bookmarkProvider) + } + + @Test + fun `GIVEN tab engine is selected WHEN history metadata is disabled THEN history and bookmark providers are not set`() { + val settings: Settings = mockk(relaxed = true) { + every { historyMetadataUIFeature } returns false + } + every { activity.settings() } returns settings + val state = getSearchProviderState( + showSearchShortcuts = false, + showSearchTermHistory = false, + showHistorySuggestionsForCurrentEngine = false, + showAllHistorySuggestions = false, + showBookmarksSuggestionsForCurrentEngine = false, + showAllBookmarkSuggestions = false, + showSearchSuggestions = false, + showSyncedTabsSuggestionsForCurrentEngine = false, + showSessionSuggestionsForCurrentEngine = false, + searchEngineSource = SearchEngineSource.Tabs(mockk(relaxed = true)), + ) + + val result = awesomeBarView.getProvidersToAdd(state) + + val defaultHistoryProvider = result.firstOrNull { it is HistoryStorageSuggestionProvider } + assertNull(defaultHistoryProvider) + + val bookmarkProvider = result.firstOrNull { it is BookmarksStorageSuggestionProvider } + assertNull(bookmarkProvider) + } + + @Test + fun `GIVEN bookmarks engine is selected WHEN history metadata is enabled THEN history provider is not set, suggestions are disabled in bookmark provider`() { + val settings: Settings = mockk(relaxed = true) { + every { historyMetadataUIFeature } returns true + } + every { activity.settings() } returns settings + val state = getSearchProviderState( + showSearchShortcuts = false, + showSearchTermHistory = false, + showHistorySuggestionsForCurrentEngine = false, + showAllHistorySuggestions = false, + showBookmarksSuggestionsForCurrentEngine = false, + showSearchSuggestions = false, + showSyncedTabsSuggestionsForCurrentEngine = false, + showAllSyncedTabsSuggestions = false, + showSessionSuggestionsForCurrentEngine = false, + showAllSessionSuggestions = false, + searchEngineSource = SearchEngineSource.Bookmarks(mockk(relaxed = true)), + ) + + val result = awesomeBarView.getProvidersToAdd(state) + + val combinedHistoryProvider = result.firstOrNull { it is CombinedHistorySuggestionProvider } + assertNull(combinedHistoryProvider) + + val bookmarkProvider = result.firstOrNull { it is BookmarksStorageSuggestionProvider } as BookmarksStorageSuggestionProvider + assertNotNull(bookmarkProvider) + assertFalse(bookmarkProvider.showEditSuggestion) + } + + @Test + fun `GIVEN bookmarks engine is selected WHEN history metadata is disabled THEN history provider is not set, suggestions are disabled in bookmark provider`() { + val settings: Settings = mockk(relaxed = true) { + every { historyMetadataUIFeature } returns false + } + every { activity.settings() } returns settings + val state = getSearchProviderState( + showSearchShortcuts = false, + showSearchTermHistory = false, + showHistorySuggestionsForCurrentEngine = false, + showAllHistorySuggestions = false, + showBookmarksSuggestionsForCurrentEngine = false, + showSearchSuggestions = false, + showSyncedTabsSuggestionsForCurrentEngine = false, + showAllSyncedTabsSuggestions = false, + showSessionSuggestionsForCurrentEngine = false, + showAllSessionSuggestions = false, + searchEngineSource = SearchEngineSource.Bookmarks(mockk(relaxed = true)), + ) + + val result = awesomeBarView.getProvidersToAdd(state) + + val defaultHistoryProvider = result.firstOrNull { it is HistoryStorageSuggestionProvider } + assertNull(defaultHistoryProvider) + + val bookmarkProvider = result.firstOrNull { it is BookmarksStorageSuggestionProvider } as BookmarksStorageSuggestionProvider + assertNotNull(bookmarkProvider) + assertFalse(bookmarkProvider.showEditSuggestion) + } + @Test fun `GIVEN a search that should show filtered history WHEN history metadata is disabled THEN return a history provider with an engine filter`() { val settings: Settings = mockk(relaxed = true) {