From c93009a137194e64b24d00f7fb82ba5fc7f8dbfb Mon Sep 17 00:00:00 2001 From: Colin Lee Date: Thu, 18 Apr 2019 15:08:32 -0500 Subject: [PATCH] For #1301: Add uri_count to ping --- app/metrics.yaml | 13 ++++++ .../java/org/mozilla/fenix/HomeActivity.kt | 42 +++++++++++++++++++ .../components/metrics/GleanMetricsService.kt | 3 ++ .../fenix/components/metrics/Metrics.kt | 1 + 4 files changed, 59 insertions(+) diff --git a/app/metrics.yaml b/app/metrics.yaml index d88c44acd642..c47ea9de84f6 100644 --- a/app/metrics.yaml +++ b/app/metrics.yaml @@ -123,6 +123,19 @@ events: notification_emails: - fenix-core@mozilla.com expires: "2020-03-01" + total_uri_count: + type: counter + description: > + A counter of URIs visited by the user in the current session, including page reloads. This does not include background page requests and URIs from embedded pages or private browsing. + send_in_pings: + - metrics + bugs: + - 1301 + data_reviews: + - https://github.com/mozilla-mobile/fenix/pull/1785 + notification_emails: + - fenix-core@mozilla.com + expires: "2020-03-01" crash_reporter: opened: diff --git a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt index c0ae18885871..b93b72208aa4 100644 --- a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt +++ b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt @@ -17,6 +17,7 @@ import androidx.navigation.ui.AppBarConfiguration import androidx.navigation.ui.NavigationUI import mozilla.components.browser.search.SearchEngine import mozilla.components.browser.session.Session +import mozilla.components.browser.session.SessionManager import mozilla.components.concept.engine.EngineView import mozilla.components.feature.intent.IntentProcessor import mozilla.components.lib.crash.Crash @@ -194,6 +195,47 @@ open class HomeActivity : AppCompatActivity() { } } + private val singleSessionObserver = object : Session.Observer { + var urlLoading: String? = null + + override fun onLoadingStateChanged(session: Session, loading: Boolean) { + super.onLoadingStateChanged(session, loading) + + if (loading) urlLoading = session.url + else if (urlLoading != null && !session.private) + components.analytics.metrics.track(Event.UriOpened) + } + } + + private fun subscribeToSessions(): SessionManager.Observer { + + return object : SessionManager.Observer { + override fun onAllSessionsRemoved() { + super.onAllSessionsRemoved() + components.core.sessionManager.sessions.forEach { + it.unregister(singleSessionObserver) + } + } + + override fun onSessionAdded(session: Session) { + super.onSessionAdded(session) + session.register(singleSessionObserver) + } + + override fun onSessionRemoved(session: Session) { + super.onSessionRemoved(session) + session.unregister(singleSessionObserver) + } + + override fun onSessionsRestored() { + super.onSessionsRestored() + components.core.sessionManager.sessions.forEach { + it.register(singleSessionObserver) + } + } + }.also { components.core.sessionManager.register(it) } + } + companion object { const val OPEN_TO_BROWSER = "open_to_browser" } 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 2a11f300904a..07b4eb9d18b1 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 @@ -150,6 +150,9 @@ private val Event.wrapper is Event.CustomTabsClosed -> EventWrapper( { CustomTab.closed.record(it) } ) + is Event.UriOpened -> EventWrapper( + { Events.totalUriCount.add(1) } + ) // 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 80a2798aa07e..30b364fe391f 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 @@ -70,6 +70,7 @@ sealed class Event { object CustomTabsClosed : Event() object CustomTabsActionTapped : Event() object CustomTabsMenuOpened : Event() + object UriOpened : Event() // Interaction Events data class SearchBarTapped(val source: Source) : Event() {