You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
2.9 KiB
Kotlin
83 lines
2.9 KiB
Kotlin
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
package org.mozilla.fenix.components
|
|
|
|
import android.app.Application
|
|
import android.app.PendingIntent
|
|
import android.content.Context
|
|
import android.content.Intent
|
|
import mozilla.components.lib.crash.CrashReporter
|
|
import mozilla.components.lib.crash.service.CrashReporterService
|
|
import mozilla.components.lib.crash.service.MozillaSocorroService
|
|
import mozilla.components.lib.crash.service.SentryService
|
|
import org.mozilla.fenix.BuildConfig
|
|
import org.mozilla.fenix.HomeActivity
|
|
import org.mozilla.fenix.R
|
|
import org.mozilla.fenix.components.metrics.AdjustMetricsService
|
|
import org.mozilla.fenix.components.metrics.GleanMetricsService
|
|
import org.mozilla.fenix.components.metrics.LeanplumMetricsService
|
|
import org.mozilla.fenix.components.metrics.MetricController
|
|
import org.mozilla.fenix.utils.Settings
|
|
import org.mozilla.geckoview.BuildConfig.MOZ_APP_BUILDID
|
|
import org.mozilla.geckoview.BuildConfig.MOZ_APP_VERSION
|
|
|
|
/**
|
|
* Component group for all functionality related to analytics e.g. crash reporting and telemetry.
|
|
*/
|
|
class Analytics(
|
|
private val context: Context
|
|
) {
|
|
val crashReporter: CrashReporter by lazy {
|
|
var services = listOf<CrashReporterService>()
|
|
|
|
if (!BuildConfig.SENTRY_TOKEN.isNullOrEmpty()) {
|
|
val sentryService = SentryService(
|
|
context,
|
|
BuildConfig.SENTRY_TOKEN,
|
|
tags = mapOf("geckoview" to "$MOZ_APP_VERSION-$MOZ_APP_BUILDID"),
|
|
sendEventForNativeCrashes = true
|
|
)
|
|
|
|
services += sentryService
|
|
}
|
|
|
|
val socorroService = MozillaSocorroService(context, context.getString(R.string.app_name))
|
|
services += socorroService
|
|
|
|
val intent = Intent(context, HomeActivity::class.java).apply {
|
|
flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP
|
|
}
|
|
|
|
val pendingIntent = PendingIntent.getActivity(
|
|
context,
|
|
0,
|
|
intent,
|
|
0
|
|
)
|
|
|
|
CrashReporter(
|
|
services = services,
|
|
shouldPrompt = CrashReporter.Prompt.ALWAYS,
|
|
promptConfiguration = CrashReporter.PromptConfiguration(
|
|
appName = context.getString(R.string.app_name),
|
|
organizationName = "Mozilla"
|
|
),
|
|
enabled = true,
|
|
nonFatalCrashIntent = pendingIntent
|
|
)
|
|
}
|
|
|
|
val metrics: MetricController by lazy {
|
|
MetricController.create(
|
|
listOf(
|
|
GleanMetricsService(context),
|
|
LeanplumMetricsService(context as Application),
|
|
AdjustMetricsService(context)
|
|
),
|
|
isTelemetryEnabled = { Settings.getInstance(context).isTelemetryEnabled }
|
|
)
|
|
}
|
|
}
|