From d4e3a2037faaf72dce711781b937f1b0a74f069e Mon Sep 17 00:00:00 2001 From: Jeff Boek Date: Wed, 4 Dec 2019 16:34:10 -0800 Subject: [PATCH] For #6855 - Filter out duplicated bundled search engines Co-authored-by: Severin Rudie --- .../searchengine/FenixSearchEngineProvider.kt | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/components/searchengine/FenixSearchEngineProvider.kt b/app/src/main/java/org/mozilla/fenix/components/searchengine/FenixSearchEngineProvider.kt index a155e5c50..4dca5c358 100644 --- a/app/src/main/java/org/mozilla/fenix/components/searchengine/FenixSearchEngineProvider.kt +++ b/app/src/main/java/org/mozilla/fenix/components/searchengine/FenixSearchEngineProvider.kt @@ -24,23 +24,26 @@ import java.util.Locale class FenixSearchEngineProvider( private val context: Context ) : SearchEngineProvider, CoroutineScope by CoroutineScope(Job() + Dispatchers.IO) { - private val defaultEngines = async { + private val baseSearchEngines = async { AssetsSearchEngineProvider(LocaleSearchLocalizationProvider()).loadSearchEngines(context) } - private val bundledEngines = async { + private val bundledSearchEngines = async { + val defaultEngineIdentifiers = baseSearchEngines.await().list.map { it.identifier }.toSet() + AssetsSearchEngineProvider( LocaleSearchLocalizationProvider(), filters = listOf(object : SearchEngineFilter { override fun filter(context: Context, searchEngine: SearchEngine): Boolean { - return BUNDLED_SEARCH_ENGINES.contains(searchEngine.identifier) + return BUNDLED_SEARCH_ENGINES.contains(searchEngine.identifier) && + !defaultEngineIdentifiers.contains(searchEngine.identifier) } }), additionalIdentifiers = BUNDLED_SEARCH_ENGINES ).loadSearchEngines(context) } - private var customEngines = async { + private var customSearchEngines = async { CustomSearchEngineProvider().loadSearchEngines(context) } @@ -108,15 +111,15 @@ class FenixSearchEngineProvider( fun reload() { launch { - customEngines = async { CustomSearchEngineProvider().loadSearchEngines(context) } + customSearchEngines = async { CustomSearchEngineProvider().loadSearchEngines(context) } loadedSearchEngines = refreshAsync() } } private fun refreshAsync() = async { - val engineList = defaultEngines.await() - val bundledList = bundledEngines.await().list - val customList = customEngines.await().list + val engineList = baseSearchEngines.await() + val bundledList = bundledSearchEngines.await().list + val customList = customSearchEngines.await().list engineList.copy(list = engineList.list + bundledList + customList) } @@ -130,7 +133,7 @@ class FenixSearchEngineProvider( val prefs = prefs(context) val identifiers = if (!prefs.contains(INSTALLED_ENGINES_KEY)) { - val defaultSet = defaultEngines.await() + val defaultSet = baseSearchEngines.await() .list .map { it.identifier } .toSet() @@ -141,7 +144,7 @@ class FenixSearchEngineProvider( prefs(context).getStringSet(INSTALLED_ENGINES_KEY, setOf()) ?: setOf() } - val customEngineIdentifiers = customEngines.await().list.map { it.identifier }.toSet() + val customEngineIdentifiers = customSearchEngines.await().list.map { it.identifier }.toSet() return identifiers + customEngineIdentifiers }