1
0
Fork 0

For #968 - Adds telemetry for app entry point

master
Jeff Boek 2019-03-18 14:32:03 -07:00
parent 0e9400730b
commit 71a155c8f1
5 changed files with 51 additions and 7 deletions

View File

@ -4,6 +4,21 @@
$schema: moz://mozilla.org/schemas/glean/metrics/1-0-0
events:
app_opened:
type: event
description: >
A User opened the app
extra_keys:
source: "The source from which the app was opened"
bugs:
- 123456789
data_reviews:
- N/A
notification_emails:
- telemetry-client-dev@mozilla.com
expires: never
metrics:
default_browser:
type: boolean

View File

@ -32,6 +32,8 @@ import org.mozilla.fenix.settings.SettingsFragmentDirections
@SuppressWarnings("TooManyFunctions")
open class HomeActivity : AppCompatActivity() {
open val isCustomTab = false
val themeManager = DefaultThemeManager().also {
it.onThemeChange = { theme ->
setTheme(theme)
@ -60,16 +62,22 @@ open class HomeActivity : AppCompatActivity() {
setSupportActionBar(navigationToolbar)
NavigationUI.setupWithNavController(navigationToolbar, navHost.navController, appBarConfiguration)
val safeIntent = intent?.let { SafeIntent(it) }
if (safeIntent?.isLauncherIntent == true) {
val source = if (isCustomTab) Event.OpenedAppSource.CUSTOM_TAB else Event.OpenedAppSource.APP_ICON
components.analytics.metrics.track(Event.OpenedApp(source))
}
handleOpenedFromExternalSourceIfNecessary(intent)
}
override fun onResume() {
super.onResume()
// There is no session, or it has timed out; we should pop everything to home
if (components.core.sessionStorage.current() == null) {
navHost.navController.popBackStack(R.id.homeFragment, false)
}
components.analytics.metrics.track(Event.OpenedApp)
}
override fun onNewIntent(intent: Intent?) {

View File

@ -4,11 +4,13 @@
package org.mozilla.fenix.components.metrics
import android.content.Context
import mozilla.components.service.glean.EventMetricType
import mozilla.components.service.glean.Glean
import mozilla.components.support.utils.Browsers
import org.mozilla.fenix.BuildConfig
import org.mozilla.fenix.utils.Settings
import org.mozilla.fenix.debug.GleanMetrics.Metrics
import org.mozilla.fenix.debug.GleanMetrics.Events
class GleanMetricsService(private val context: Context) : MetricsService {
override fun start() {
@ -20,9 +22,18 @@ class GleanMetricsService(private val context: Context) : MetricsService {
}
}
override fun track(event: Event) { }
private fun mapEventToGlean(event: Event): EventMetricType? = when(event) {
is Event.OpenedApp -> Events.appOpened
else -> null
}
override fun shouldTrack(event: Event): Boolean = Settings.getInstance(context).isTelemetryEnabled
override fun track(event: Event) {
mapEventToGlean(event)?.record(event.extras)
}
override fun shouldTrack(event: Event): Boolean {
return Settings.getInstance(context).isTelemetryEnabled
}
companion object {
private const val IsGleanEnabled = BuildConfig.TELEMETRY

View File

@ -9,7 +9,15 @@ sealed class Event {
object AddBookmark : Event()
object RemoveBookmark : Event()
object OpenedBookmark : Event()
object OpenedApp : Event()
enum class OpenedAppSource {
APP_ICON, CUSTOM_TAB
}
data class OpenedApp(val source: OpenedAppSource) : Event() {
override val extras: Map<String, String>?
get() = hashMapOf("source" to source.name)
}
object OpenedAppFirstRun : Event()
object InteractWithSearchURLArea : Event()
object SavedLoginandPassword : Event()
@ -38,7 +46,7 @@ sealed class Event {
object OpenedPocketStory : Event()
object DarkModeEnabled : Event()
val extras: Map<String, Any>?
open val extras: Map<String, String>?
get() = null
}

View File

@ -6,4 +6,6 @@ package org.mozilla.fenix.customtabs
import org.mozilla.fenix.HomeActivity
class CustomTabActivity : HomeActivity()
class CustomTabActivity : HomeActivity() {
override val isCustomTab = true
}