For #1190: Adds additional telemetry for FxA login

nightly-build-test
Sawyer Blatz 5 years ago
parent 62bed0cd06
commit 9aa4f48e77

@ -138,31 +138,31 @@ events:
expires: "2020-03-01" expires: "2020-03-01"
crash_reporter: crash_reporter:
opened: opened:
type: event type: event
description: > description: >
The crash reporter was displayed The crash reporter was displayed
bugs: bugs:
- 1040 - 1040
data_reviews: data_reviews:
- TBD - TBD
notification_emails: notification_emails:
- fenix-core@mozilla.com - fenix-core@mozilla.com
expires: "2020-03-01" expires: "2020-03-01"
closed: closed:
type: event type: event
description: > description: >
The crash reporter was closed The crash reporter was closed
extra_keys: extra_keys:
crash_submitted: crash_submitted:
description: "A boolean that tells us whether or not the user submitted a crash report" description: "A boolean that tells us whether or not the user submitted a crash report"
bugs: bugs:
- 1040 - 1040
data_reviews: data_reviews:
- TBD - TBD
notification_emails: notification_emails:
- fenix-core@mozilla.com - fenix-core@mozilla.com
expires: "2020-03-01" expires: "2020-03-01"
context_menu: context_menu:
item_tapped: item_tapped:
@ -345,9 +345,9 @@ metrics:
mozilla_products: mozilla_products:
type: string_list type: string_list
description: > description: >
A list of all the Mozilla products installed on device. We currently scan for: Firefox, Firefox Beta, A list of all the Mozilla products installed on device. We currently scan for: Firefox, Firefox Beta,
Firefox Aurora, Firefox Nightly, Firefox Fdroid, Firefox Lite, Reference Browser, Reference Browser Debug, Firefox Aurora, Firefox Nightly, Firefox Fdroid, Firefox Lite, Reference Browser, Reference Browser Debug,
Fenix, Focus, and Lockbox. Fenix, Focus, and Lockbox.
send_in_pings: send_in_pings:
- metrics - metrics
bugs: bugs:
@ -746,11 +746,11 @@ error_page:
- fenix-core@mozilla.com - fenix-core@mozilla.com
expires: "2020-03-01" expires: "2020-03-01"
sync: sync_auth:
opened: opened:
type: event type: event
description: > description: >
A user opened the sync page A user opened the sync authentication page
bugs: bugs:
- 1190 - 1190
data_reviews: data_reviews:
@ -772,7 +772,7 @@ sync:
sign_in: sign_in:
type: event type: event
description: > description: >
A user pressed the sign in button on the sync page A user pressed the sign in button on the sync authentication page
bugs: bugs:
- 1190 - 1190
data_reviews: data_reviews:
@ -783,7 +783,7 @@ sync:
scan_pairing: scan_pairing:
type: event type: event
description: > description: >
A user pressed the scan pairing button on the sync page A user pressed the scan pairing button on the sync authentication page
bugs: bugs:
- 1190 - 1190
data_reviews: data_reviews:
@ -794,7 +794,31 @@ sync:
create_account: create_account:
type: event type: event
description: > description: >
A user pressed the create account button on the sync page A user pressed the create account button on the sync authentication page
bugs:
- 1190
data_reviews:
- https://github.com/mozilla-mobile/fenix/pull/2745#issuecomment-494918532
notification_emails:
- fenix-core@mozilla.com
expires: "2020-03-01"
sync_account:
opened:
type: event
description: >
A user opened the sync account page
bugs:
- 1190
data_reviews:
- https://github.com/mozilla-mobile/fenix/pull/2745#issuecomment-494918532
notification_emails:
- fenix-core@mozilla.com
expires: "2020-03-01"
closed:
type: event
description: >
A user closed the sync account page
bugs: bugs:
- 1190 - 1190
data_reviews: data_reviews:
@ -805,7 +829,7 @@ sync:
sync_now: sync_now:
type: event type: event
description: > description: >
A user pressed the sync now button on the sync page A user pressed the sync now button on the sync account page
bugs: bugs:
- 1190 - 1190
data_reviews: data_reviews:
@ -816,7 +840,7 @@ sync:
sign_out: sign_out:
type: event type: event
description: > description: >
A user pressed the sign out button on the sync page A user pressed the sign out button on the sync account page
bugs: bugs:
- 1190 - 1190
data_reviews: data_reviews:

@ -26,7 +26,8 @@ import kotlinx.coroutines.runBlocking
import org.mozilla.fenix.GleanMetrics.QrScanner import org.mozilla.fenix.GleanMetrics.QrScanner
import org.mozilla.fenix.GleanMetrics.Library import org.mozilla.fenix.GleanMetrics.Library
import org.mozilla.fenix.GleanMetrics.ErrorPage import org.mozilla.fenix.GleanMetrics.ErrorPage
import org.mozilla.fenix.GleanMetrics.Sync import org.mozilla.fenix.GleanMetrics.SyncAccount
import org.mozilla.fenix.GleanMetrics.SyncAuth
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.ext.getPreferenceKey import org.mozilla.fenix.ext.getPreferenceKey
import org.mozilla.fenix.utils.Settings import org.mozilla.fenix.utils.Settings
@ -192,26 +193,32 @@ private val Event.wrapper
{ ErrorPage.visitedError }, { ErrorPage.visitedError },
{ ErrorPage.visitedErrorKeys.valueOf(it) } { ErrorPage.visitedErrorKeys.valueOf(it) }
) )
is Event.SyncOpened -> EventWrapper<NoExtraKeys>( is Event.SyncAuthOpened -> EventWrapper<NoExtraKeys>(
{ Sync.opened.record(it) } { SyncAuth.opened.record(it) }
) )
is Event.SyncClosed -> EventWrapper<NoExtraKeys>( is Event.SyncAuthClosed -> EventWrapper<NoExtraKeys>(
{ Sync.closed.record(it) } { SyncAuth.closed.record(it) }
) )
is Event.SyncSignIn -> EventWrapper<NoExtraKeys>( is Event.SyncAuthSignIn -> EventWrapper<NoExtraKeys>(
{ Sync.signIn.record(it) } { SyncAuth.signIn.record(it) }
) )
is Event.SyncScanPairing -> EventWrapper<NoExtraKeys>( is Event.SyncAuthScanPairing -> EventWrapper<NoExtraKeys>(
{ Sync.scanPairing.record(it) } { SyncAuth.scanPairing.record(it) }
) )
is Event.SyncCreateAccount -> EventWrapper<NoExtraKeys>( is Event.SyncAuthCreateAccount -> EventWrapper<NoExtraKeys>(
{ Sync.createAccount.record(it) } { SyncAuth.createAccount.record(it) }
) )
is Event.SyncSyncNow -> EventWrapper<NoExtraKeys>( is Event.SyncAccountOpened -> EventWrapper<NoExtraKeys>(
{ Sync.syncNow.record(it) } { SyncAccount.opened.record(it) }
) )
is Event.SyncSignOut -> EventWrapper<NoExtraKeys>( is Event.SyncAccountClosed -> EventWrapper<NoExtraKeys>(
{ Sync.signOut.record(it) } { SyncAccount.closed.record(it) }
)
is Event.SyncAccountSyncNow -> EventWrapper<NoExtraKeys>(
{ SyncAccount.syncNow.record(it) }
)
is Event.SyncAccountSignOut -> EventWrapper<NoExtraKeys>(
{ SyncAccount.signOut.record(it) }
) )
// Don't track other events with Glean // Don't track other events with Glean

@ -81,13 +81,15 @@ sealed class Event {
object QRScannerNavigationDenied : Event() object QRScannerNavigationDenied : Event()
object LibraryOpened : Event() object LibraryOpened : Event()
object LibraryClosed : Event() object LibraryClosed : Event()
object SyncOpened : Event() object SyncAuthOpened : Event()
object SyncClosed : Event() object SyncAuthClosed : Event()
object SyncSignIn : Event() object SyncAuthSignIn : Event()
object SyncScanPairing : Event() object SyncAuthScanPairing : Event()
object SyncCreateAccount : Event() object SyncAuthCreateAccount : Event()
object SyncSyncNow : Event() object SyncAccountOpened : Event()
object SyncSignOut : Event() object SyncAccountClosed : Event()
object SyncAccountSyncNow : Event()
object SyncAccountSignOut : Event()
data class PreferenceToggled(val preferenceKey: String, val enabled: Boolean, val context: Context) : Event() { data class PreferenceToggled(val preferenceKey: String, val enabled: Boolean, val context: Context) : Event() {
private val switchPreferenceTelemetryAllowList = listOf( private val switchPreferenceTelemetryAllowList = listOf(

@ -45,11 +45,13 @@ class AccountSettingsFragment : PreferenceFragmentCompat(), CoroutineScope {
job = Job() job = Job()
(activity as AppCompatActivity).title = getString(R.string.preferences_account_settings) (activity as AppCompatActivity).title = getString(R.string.preferences_account_settings)
(activity as AppCompatActivity).supportActionBar?.show() (activity as AppCompatActivity).supportActionBar?.show()
requireComponents.analytics.metrics.track(Event.SyncAccountOpened)
} }
override fun onDestroy() { override fun onDestroy() {
super.onDestroy() super.onDestroy()
job.cancel() job.cancel()
requireComponents.analytics.metrics.track(Event.SyncAccountClosed)
} }
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
@ -97,7 +99,7 @@ class AccountSettingsFragment : PreferenceFragmentCompat(), CoroutineScope {
private fun getClickListenerForSignOut(): Preference.OnPreferenceClickListener { private fun getClickListenerForSignOut(): Preference.OnPreferenceClickListener {
return Preference.OnPreferenceClickListener { return Preference.OnPreferenceClickListener {
requireComponents.analytics.metrics.track(Event.SyncSignOut) requireComponents.analytics.metrics.track(Event.SyncAccountSignOut)
launch { launch {
accountManager.logoutAsync().await() accountManager.logoutAsync().await()
Navigation.findNavController(view!!).popBackStack() Navigation.findNavController(view!!).popBackStack()
@ -109,7 +111,7 @@ class AccountSettingsFragment : PreferenceFragmentCompat(), CoroutineScope {
private fun getClickListenerForSyncNow(): Preference.OnPreferenceClickListener { private fun getClickListenerForSyncNow(): Preference.OnPreferenceClickListener {
return Preference.OnPreferenceClickListener { return Preference.OnPreferenceClickListener {
// Trigger a sync. // Trigger a sync.
requireComponents.analytics.metrics.track(Event.SyncSyncNow) requireComponents.analytics.metrics.track(Event.SyncAccountSyncNow)
requireComponents.backgroundServices.syncManager.syncNow() requireComponents.backgroundServices.syncManager.syncNow()
// Poll for device events. // Poll for device events.
launch { launch {
@ -183,7 +185,6 @@ class AccountSettingsFragment : PreferenceFragmentCompat(), CoroutineScope {
} }
} }
private val deviceConstellationObserver = object : DeviceConstellationObserver { private val deviceConstellationObserver = object : DeviceConstellationObserver {
override fun onDevicesUpdate(constellation: ConstellationState) { override fun onDevicesUpdate(constellation: ConstellationState) {
val deviceNameKey = context!!.getPreferenceKey(R.string.pref_key_sync_device_name) val deviceNameKey = context!!.getPreferenceKey(R.string.pref_key_sync_device_name)

@ -203,7 +203,6 @@ class SettingsFragment : PreferenceFragmentCompat(), CoroutineScope, AccountObse
private fun getClickListenerForSignIn(): OnPreferenceClickListener { private fun getClickListenerForSignIn(): OnPreferenceClickListener {
return OnPreferenceClickListener { return OnPreferenceClickListener {
requireComponents.analytics.metrics.track(Event.SyncOpened)
val directions = SettingsFragmentDirections.actionSettingsFragmentToTurnOnSyncFragment() val directions = SettingsFragmentDirections.actionSettingsFragmentToTurnOnSyncFragment()
Navigation.findNavController(view!!).navigate(directions) Navigation.findNavController(view!!).navigate(directions)
true true

@ -20,12 +20,12 @@ class TurnOnSyncFragment : PreferenceFragmentCompat() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
requireComponents.analytics.metrics.track(Event.SyncOpened) requireComponents.analytics.metrics.track(Event.SyncAuthOpened)
} }
override fun onDestroy() { override fun onDestroy() {
super.onDestroy() super.onDestroy()
requireComponents.analytics.metrics.track(Event.SyncClosed) requireComponents.analytics.metrics.track(Event.SyncAuthClosed)
} }
override fun onResume() { override fun onResume() {
@ -56,7 +56,7 @@ class TurnOnSyncFragment : PreferenceFragmentCompat() {
// session history stack. // session history stack.
// We could auto-close this tab once we get to the end of the authentication process? // We could auto-close this tab once we get to the end of the authentication process?
// Via an interceptor, perhaps. // Via an interceptor, perhaps.
requireComponents.analytics.metrics.track(Event.SyncSignIn) requireComponents.analytics.metrics.track(Event.SyncAuthSignIn)
view?.let { view?.let {
(activity as HomeActivity).openToBrowser(BrowserDirection.FromTurnOnSync) (activity as HomeActivity).openToBrowser(BrowserDirection.FromTurnOnSync)
} }
@ -68,7 +68,7 @@ class TurnOnSyncFragment : PreferenceFragmentCompat() {
// Currently the same as sign in, as FxA handles this, however we want to emit a different telemetry event // Currently the same as sign in, as FxA handles this, however we want to emit a different telemetry event
return Preference.OnPreferenceClickListener { return Preference.OnPreferenceClickListener {
requireComponents.services.accountsAuthFeature.beginAuthentication() requireComponents.services.accountsAuthFeature.beginAuthentication()
requireComponents.analytics.metrics.track(Event.SyncCreateAccount) requireComponents.analytics.metrics.track(Event.SyncAuthCreateAccount)
view?.let { view?.let {
(activity as HomeActivity).openToBrowser(BrowserDirection.FromTurnOnSync) (activity as HomeActivity).openToBrowser(BrowserDirection.FromTurnOnSync)
} }
@ -80,7 +80,7 @@ class TurnOnSyncFragment : PreferenceFragmentCompat() {
return Preference.OnPreferenceClickListener { return Preference.OnPreferenceClickListener {
val directions = TurnOnSyncFragmentDirections.actionTurnOnSyncFragmentToPairInstructionsFragment() val directions = TurnOnSyncFragmentDirections.actionTurnOnSyncFragmentToPairInstructionsFragment()
Navigation.findNavController(view!!).navigate(directions) Navigation.findNavController(view!!).navigate(directions)
requireComponents.analytics.metrics.track(Event.SyncScanPairing) requireComponents.analytics.metrics.track(Event.SyncAuthScanPairing)
true true
} }

Loading…
Cancel
Save