1
0
Fork 0

Closes #7762: Initialize Glean later in Fennec builds.

master
Sebastian Kaspari 2020-01-23 17:06:04 +01:00
parent 40e72a7b28
commit 18244cef51
3 changed files with 23 additions and 17 deletions

View File

@ -57,6 +57,9 @@ enum class ReleaseChannel {
val isFennec: Boolean
get() = this in fennecChannels
val isFenix: Boolean
get() = !isFennec
}
object Config {

View File

@ -59,21 +59,22 @@ open class FenixApplication : LocaleAwareApplication() {
return
}
// We need to always initialize Glean and do it early here.
// It is important that this initialization happens *here* before calling into
// setupInMainProcessOnly() which behaves differently for fenix and fennec builds.
val enableGlean = if (Config.channel.isFennec) {
// We are disabling Glean here because for Fennec builds we may not know yet whether
// we can enable telemetry yet. We first need to migrate the setting from Fennec to
// know the user's choice. The blocking migration in `MigratingFenixApplication` will
// notify glean once the value has been migrated.
false
} else {
// We initialize Glean with telemetry enabled (or disabled) early here so that we do not
// end up loosing data for components that collect telemetry very early.
settings().isTelemetryEnabled
if (Config.channel.isFenix) {
// We need to always initialize Glean and do it early here.
// Note that we are only initializing Glean here for "fenix" builds. "fennec" builds
// will initialize in MigratingFenixApplication because we first need to migrate the
// user's choice from Fennec.
initializeGlean()
}
logger.debug("Initializing Glean (uploadEnabled=$enableGlean, isFennec=${Config.channel.isFennec})")
setupInMainProcessOnly()
}
protected fun initializeGlean() {
val telemetryEnabled = settings().isTelemetryEnabled
logger.debug("Initializing Glean (uploadEnabled=$telemetryEnabled, isFennec=${Config.channel.isFennec})")
Glean.initialize(
applicationContext = this,
configuration = Configuration(
@ -81,10 +82,8 @@ open class FenixApplication : LocaleAwareApplication() {
httpClient = ConceptFetchHttpUploader(
lazy(LazyThreadSafetyMode.NONE) { components.core.client }
)),
uploadEnabled = enableGlean
uploadEnabled = telemetryEnabled
)
setupInMainProcessOnly()
}
@CallSuper

View File

@ -38,6 +38,10 @@ class MigratingFenixApplication : FenixApplication() {
// These migrations need to run before regular initialization happens.
migrateBlocking()
// Now that we have migrated from Fennec whether the user wants to enable telemetry we can
// initialize Glean
initializeGlean()
// Fenix application initialization can happen now.
super.setupInMainProcessOnly()