1
0
Fork 0

Part 1: Add 'accountManagerReady' queue to BackgroundServices

This gives us an ability to perform tasks against 'accountManager' without
causing its immediate initialization.
master
Grisha Kruglov 2020-03-26 23:16:52 -07:00 committed by Grisha Kruglov
parent be1fa8df7d
commit 0677fc35de
1 changed files with 7 additions and 1 deletions

View File

@ -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()
}
/**