From 9e50b553408dc1ccfb858b83790acdbc90ad0892 Mon Sep 17 00:00:00 2001 From: Sawyer Blatz Date: Wed, 15 May 2019 10:01:26 -0700 Subject: [PATCH] For #1857: Adds telemetry for QR scanner --- app/metrics.yaml | 48 ++++++++++++++++++- .../components/metrics/GleanMetricsService.kt | 13 +++++ .../fenix/components/metrics/Metrics.kt | 4 ++ .../mozilla/fenix/search/SearchFragment.kt | 6 ++- 4 files changed, 69 insertions(+), 2 deletions(-) diff --git a/app/metrics.yaml b/app/metrics.yaml index 1e2005ff1..edba1e766 100644 --- a/app/metrics.yaml +++ b/app/metrics.yaml @@ -633,4 +633,50 @@ activation: - https://github.com/mozilla-mobile/fenix/pull/1707#issuecomment-486972209 notification_emails: - fenix-core@mozilla.com - expires: "2019-10-01" \ No newline at end of file + expires: "2019-10-01" + +qr_scanner: + opened: + type: event + description: > + A user opened the QR scanner + bugs: + - 1857 + data_reviews: + - https://github.com/mozilla-mobile/fenix/pull/2524#issuecomment-492739967 + notification_emails: + - fenix-core@mozilla.com + expires: "2020-03-01" + prompt_displayed: + type: event + description: > + A user scanned a QR code, causing a confirmation prompt to display asking if they want to navigate to the page + bugs: + - 1857 + data_reviews: + - https://github.com/mozilla-mobile/fenix/pull/2524#issuecomment-492739967 + notification_emails: + - fenix-core@mozilla.com + expires: "2020-03-01" + navigation_allowed: + type: event + description: > + A user tapped "allow" on the prompt, directing the user to the website scanned + bugs: + - 1857 + data_reviews: + - https://github.com/mozilla-mobile/fenix/pull/2524#issuecomment-492739967 + notification_emails: + - fenix-core@mozilla.com + expires: "2020-03-01" + navigation_denied: + type: event + description: > + A user tapped "deny" on the prompt, putting the user back to the scanning view + bugs: + - 1857 + data_reviews: + - https://github.com/mozilla-mobile/fenix/pull/2524#issuecomment-492739967 + notification_emails: + - fenix-core@mozilla.com + expires: "2020-03-01" \ No newline at end of file diff --git a/app/src/main/java/org/mozilla/fenix/components/metrics/GleanMetricsService.kt b/app/src/main/java/org/mozilla/fenix/components/metrics/GleanMetricsService.kt index eb679506c..b54e550e8 100644 --- a/app/src/main/java/org/mozilla/fenix/components/metrics/GleanMetricsService.kt +++ b/app/src/main/java/org/mozilla/fenix/components/metrics/GleanMetricsService.kt @@ -23,6 +23,7 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.launch import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.runBlocking +import org.mozilla.fenix.GleanMetrics.QrScanner private class EventWrapper>( private val recorder: ((Map?) -> Unit), @@ -159,6 +160,18 @@ private val Event.wrapper is Event.UriOpened -> EventWrapper( { Events.totalUriCount.add(1) } ) + is Event.QRScannerOpened -> EventWrapper( + { QrScanner.opened.record(it) } + ) + is Event.QRScannerPromptDisplayed -> EventWrapper( + { QrScanner.promptDisplayed.record(it) } + ) + is Event.QRScannerNavigationAllowed -> EventWrapper( + { QrScanner.navigationAllowed.record(it) } + ) + is Event.QRScannerNavigationDenied -> EventWrapper( + { QrScanner.navigationDenied.record(it) } + ) // Don't track other events with Glean else -> null diff --git a/app/src/main/java/org/mozilla/fenix/components/metrics/Metrics.kt b/app/src/main/java/org/mozilla/fenix/components/metrics/Metrics.kt index afdc4d95f..3ab9d8d16 100644 --- a/app/src/main/java/org/mozilla/fenix/components/metrics/Metrics.kt +++ b/app/src/main/java/org/mozilla/fenix/components/metrics/Metrics.kt @@ -74,6 +74,10 @@ sealed class Event { object CustomTabsActionTapped : Event() object CustomTabsMenuOpened : Event() object UriOpened : Event() + object QRScannerOpened : Event() + object QRScannerPromptDisplayed : Event() + object QRScannerNavigationAllowed : Event() + object QRScannerNavigationDenied : Event() data class PreferenceToggled(val preferenceKey: String, val enabled: Boolean, val context: Context) : Event() { private val switchPreferenceTelemetryAllowList = listOf( diff --git a/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt b/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt index 9f1899f35..7272aedd8 100644 --- a/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt @@ -110,6 +110,7 @@ class SearchFragment : Fragment(), BackHandler { requestPermissions(permissions, REQUEST_CODE_CAMERA_PERMISSIONS) }, onScanResult = { result -> + search_scan_button.isChecked = false activity?.let { AlertDialog.Builder(it).apply { val spannable = resources.getSpannable( @@ -121,9 +122,11 @@ class SearchFragment : Fragment(), BackHandler { ) setMessage(spannable) setNegativeButton("DENY") { dialog: DialogInterface, _ -> + requireComponents.analytics.metrics.track(Event.QRScannerNavigationDenied) dialog.cancel() } setPositiveButton("ALLOW") { dialog: DialogInterface, _ -> + requireComponents.analytics.metrics.track(Event.QRScannerNavigationAllowed) (activity as HomeActivity) .openToBrowserAndLoad( searchTermOrURL = result, @@ -131,10 +134,10 @@ class SearchFragment : Fragment(), BackHandler { from = BrowserDirection.FromSearch ) dialog.dismiss() - // TODO add metrics } create() }.show() + requireComponents.analytics.metrics.track(Event.QRScannerPromptDisplayed) } }), owner = this, @@ -143,6 +146,7 @@ class SearchFragment : Fragment(), BackHandler { view.search_scan_button.setOnClickListener { getManagedEmitter().onNext(SearchChange.ToolbarClearedFocus) + requireComponents.analytics.metrics.track(Event.QRScannerOpened) qrFeature.get()?.scan(R.id.container) }