From 8bdc9d04319cd0635b64e06e1d0df90a8fa03682 Mon Sep 17 00:00:00 2001 From: Jeff Boek Date: Wed, 16 Sep 2020 10:44:19 -0700 Subject: [PATCH] Revert "For #12544 - Prevent search engines mixup" This reverts commit 0a4a170f7e2976cfd29b1c3bed85f43c990a385c. --- .../searchengine/FenixSearchEngineProvider.kt | 38 +++++++++++-------- 1 file changed, 22 insertions(+), 16 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 149620a54..8e1c28ed8 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 @@ -7,6 +7,7 @@ package org.mozilla.fenix.components.searchengine import android.content.Context import androidx.annotation.VisibleForTesting import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Deferred import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.async @@ -32,16 +33,14 @@ import java.util.Locale open class FenixSearchEngineProvider( private val context: Context ) : SearchEngineProvider, CoroutineScope by CoroutineScope(Job() + Dispatchers.IO) { - private val locationService = with(MozillaLocationService( - context, - context.components.core.client, - BuildConfig.MLS_TOKEN - )) { - if (Config.channel.isDebug || !this.hasRegionCached()) { - LocationService.dummy() - } else { - this - } + private val locationService: LocationService = if (Config.channel.isDebug) { + LocationService.dummy() + } else { + MozillaLocationService( + context, + context.components.core.client, + BuildConfig.MLS_TOKEN + ) } // We have two search engine types: one based on MLS reported region, one based only on Locale. @@ -94,6 +93,17 @@ open class FenixSearchEngineProvider( private var loadedSearchEngines = refreshAsync() + // https://github.com/mozilla-mobile/fenix/issues/9935 + // Create new getter that will return the fallback SearchEngineList if + // the main one hasn't completed yet + private val searchEngines: Deferred + get() = + if (isRegionCachedByLocationService) { + loadedSearchEngines + } else { + fallbackEngines + } + fun getDefaultEngine(context: Context): SearchEngine { val engines = installedSearchEngines(context) val selectedName = context.settings().defaultSearchEngineName @@ -107,7 +117,7 @@ open class FenixSearchEngineProvider( */ fun installedSearchEngines(context: Context): SearchEngineList = runBlocking { val installedIdentifiers = installedSearchEngineIdentifiers(context) - val engineList = loadedSearchEngines.await() + val engineList = searchEngines.await() engineList.copy( list = engineList.list.filter { @@ -178,11 +188,7 @@ open class FenixSearchEngineProvider( } private fun refreshAsync() = async { - val engineList = if (isRegionCachedByLocationService) { - baseSearchEngines.await() - } else { - fallbackEngines.await() - } + val engineList = baseSearchEngines.await() val bundledList = bundledSearchEngines.await().list val customList = customSearchEngines.await().list