diff --git a/app/metrics.yaml b/app/metrics.yaml index 76ac476d5..a62e10ac6 100644 --- a/app/metrics.yaml +++ b/app/metrics.yaml @@ -263,7 +263,6 @@ quick_action_sheet: data_reviews: - https://github.com/mozilla-mobile/fenix/pull/1362#issuecomment-479668466 notification_emails: - - fenix-core@mozilla.com expires: "2020-03-01" share_tapped: @@ -717,4 +716,20 @@ library: - https://github.com/mozilla-mobile/fenix/pull/2538#issuecomment-492830242 notification_emails: - fenix-core@mozilla.com + expires: "2020-03-01" + +error_page: + visited_error: + type: event + description: > + A user encountered an error page + extra_keys: + error_type: + description: "The error type of the error page encountered" + bugs: + - 1242 + data_reviews: + - https://github.com/mozilla-mobile/fenix/pull/2491#issuecomment-492414486 + 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/AppRequestInterceptor.kt b/app/src/main/java/org/mozilla/fenix/AppRequestInterceptor.kt index f9802686e..74c3634ec 100644 --- a/app/src/main/java/org/mozilla/fenix/AppRequestInterceptor.kt +++ b/app/src/main/java/org/mozilla/fenix/AppRequestInterceptor.kt @@ -9,6 +9,7 @@ import mozilla.components.browser.errorpages.ErrorPages import mozilla.components.browser.errorpages.ErrorType import mozilla.components.concept.engine.EngineSession import mozilla.components.concept.engine.request.RequestInterceptor +import org.mozilla.fenix.components.metrics.Event import org.mozilla.fenix.exceptions.ExceptionDomains import org.mozilla.fenix.ext.components import org.mozilla.fenix.utils.Settings @@ -45,11 +46,11 @@ class AppRequestInterceptor(private val context: Context) : RequestInterceptor { errorType: ErrorType, uri: String? ): RequestInterceptor.ErrorResponse? { - val riskLevel = getRiskLevel(errorType) val htmlResource = getPageForRiskLevel(riskLevel) val cssResource = getStyleForRiskLevel(riskLevel) + context.components.analytics.metrics.track(Event.ErrorPageVisited(errorType)) return RequestInterceptor.ErrorResponse( ErrorPages .createErrorPage(context, errorType, uri = uri, htmlResource = htmlResource, cssResource = cssResource) 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 7c21580db..958367ed8 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 @@ -25,6 +25,7 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.runBlocking import org.mozilla.fenix.GleanMetrics.QrScanner import org.mozilla.fenix.GleanMetrics.Library +import org.mozilla.fenix.GleanMetrics.ErrorPage private class EventWrapper>( private val recorder: ((Map?) -> Unit), @@ -183,6 +184,10 @@ private val Event.wrapper { Library.selectedItem }, { Library.selectedItemKeys.valueOf(it) } ) + is Event.ErrorPageVisited -> EventWrapper( + { ErrorPage.visitedError }, + { ErrorPage.visitedErrorKeys.valueOf(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 51f517233..a5fc82aff 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 @@ -4,6 +4,7 @@ package org.mozilla.fenix.components.metrics import android.content.Context +import mozilla.components.browser.errorpages.ErrorType import mozilla.components.browser.search.SearchEngine import mozilla.components.support.base.Component import mozilla.components.support.base.facts.Fact @@ -110,6 +111,11 @@ sealed class Event { get() = mapOf("source" to item) } + data class ErrorPageVisited(val errorType: ErrorType) : Event() { + override val extras: Map? + get() = mapOf("errorType" to errorType.name) + } + data class SearchBarTapped(val source: Source) : Event() { enum class Source { HOME, BROWSER } override val extras: Map?