[fenix] Part 1: Add 'accountManagerReady' queue to BackgroundServices

This gives us an ability to perform tasks against 'accountManager' without
causing its immediate initialization.
pull/600/head
Grisha Kruglov 4 years ago committed by Grisha Kruglov
parent ccb08070a7
commit 4e308faf35

@ -36,6 +36,7 @@ import org.mozilla.fenix.components.metrics.MetricController
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.test.Mockable
import org.mozilla.fenix.utils.RunWhenReadyQueue
/**
* Component group for background services. These are the components that need to be accessed from within a
@ -50,6 +51,9 @@ class BackgroundServices(
bookmarkStorage: Lazy<PlacesBookmarksStorage>,
passwordsStorage: Lazy<SyncableLoginsStorage>
) {
// Allows executing tasks which depend on the account manager, but do not need to eagerly initialize it.
val accountManagerAvailableQueue = RunWhenReadyQueue()
fun defaultDeviceName(context: Context): String =
context.getString(
R.string.default_device_name,
@ -98,7 +102,7 @@ class BackgroundServices(
val accountAbnormalities = AccountAbnormalities(context, crashReporter)
val accountManager = makeAccountManager(context, serverConfig, deviceConfig, syncConfig)
val accountManager by lazy { makeAccountManager(context, serverConfig, deviceConfig, syncConfig) }
@VisibleForTesting(otherwise = PRIVATE)
fun makeAccountManager(
@ -148,6 +152,8 @@ class BackgroundServices(
accountManager,
accountManager.initAsync()
)
}.also {
accountManagerAvailableQueue.ready()
}
/**

Loading…
Cancel
Save