From 2e7a61860a6befe8c38e49a6a3de00debe909d63 Mon Sep 17 00:00:00 2001 From: Sawyer Blatz Date: Wed, 31 Jul 2019 17:07:41 -0700 Subject: [PATCH] For #969: Adds more telemetry for collections (#4358) --- app/metrics.yaml | 41 ++++++++++++++++++- .../components/metrics/GleanMetricsService.kt | 10 +++++ .../fenix/components/metrics/Metrics.kt | 7 ++++ .../toolbar/BrowserToolbarController.kt | 6 +++ .../org/mozilla/fenix/home/HomeFragment.kt | 2 + .../viewholders/SaveTabGroupViewHolder.kt | 6 +++ .../viewholders/TabViewHolder.kt | 2 + docs/metrics.md | 26 ++++++++++++ 8 files changed, 99 insertions(+), 1 deletion(-) diff --git a/app/metrics.yaml b/app/metrics.yaml index cc51af96b..7de5f49af 100644 --- a/app/metrics.yaml +++ b/app/metrics.yaml @@ -1051,4 +1051,43 @@ collections: - https://github.com/mozilla-mobile/fenix/pull/3935 notification_emails: - fenix-core@mozilla.com - expires: "2020-03-01" \ No newline at end of file + expires: "2020-03-01" + add_tab_button: + type: event + description: > + A user tapped the "add tab" button in the three dot menu of collections + bugs: + - 969 + data_reviews: + - https://github.com/mozilla-mobile/fenix/pull/4358 + notification_emails: + - fenix-core@mozilla.com + expires: "2020-03-01" + long_press: + type: event + description: > + A user long pressed on a tab, triggering the collection creation screen + bugs: + - 969 + data_reviews: + - https://github.com/mozilla-mobile/fenix/pull/4358 + notification_emails: + - fenix-core@mozilla.com + expires: "2020-03-01" + save_button: + type: event + description: > + A user pressed the "save to collection" button on either the home or browser screen, triggering the + collection creation screen to open (tab_select_opened) + bugs: + - 969 + data_reviews: + - https://github.com/mozilla-mobile/fenix/pull/4358 + notification_emails: + - fenix-core@mozilla.com + expires: "2020-03-01" + extra_keys: + from_screen: + description: > + A string representing the screen from which the user pressed the save button. + Either `browser` or `home` \ 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 eea9ac348..e00e96ee6 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 @@ -265,6 +265,16 @@ private val Event.wrapper is Event.CollectionTabSelectOpened -> EventWrapper( { Collections.tabSelectOpened.record(it) } ) + is Event.CollectionTabLongPressed -> EventWrapper( + { Collections.longPress.record(it) } + ) + is Event.CollectionSaveButtonPressed -> EventWrapper( + { Collections.saveButton.record(it) }, + { Collections.saveButtonKeys.valueOf(it) } + ) + is Event.CollectionAddTabPressed -> EventWrapper( + { Collections.addTabButton.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 71cf6397d..50ffbbe08 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 @@ -108,6 +108,8 @@ sealed class Event { object CollectionShared : Event() object CollectionRemoved : Event() object CollectionTabSelectOpened : Event() + object CollectionTabLongPressed : Event() + object CollectionAddTabPressed : Event() data class PreferenceToggled(val preferenceKey: String, val enabled: Boolean, val context: Context) : Event() { private val switchPreferenceTelemetryAllowList = listOf( @@ -131,6 +133,11 @@ sealed class Event { } // Interaction Events + data class CollectionSaveButtonPressed(val fromScreen: String) : Event() { + override val extras: Map? + get() = mapOf("from_screen" to fromScreen) + } + data class CollectionSaved(val tabsOpenCount: Int, val tabsSelectedCount: Int) : Event() { override val extras: Map? get() = mapOf( diff --git a/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarController.kt b/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarController.kt index 3616bb031..f2a68370c 100644 --- a/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarController.kt +++ b/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarController.kt @@ -121,6 +121,8 @@ class DefaultBrowserToolbarController( BrowsingModeManager.Mode.Normal } ToolbarMenu.Item.SaveToCollection -> { + context.components.analytics.metrics + .track(Event.CollectionSaveButtonPressed(TELEMETRY_BROWSER_IDENITIFIER)) currentSession.let { val tab = it.toTab(context) viewModel.tabs = listOf(tab) @@ -184,4 +186,8 @@ class DefaultBrowserToolbarController( context.components.analytics.metrics.track(Event.BrowserMenuItemTapped(eventItem)) } + + companion object { + private const val TELEMETRY_BROWSER_IDENITIFIER = "browser" + } } diff --git a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt index 3fcd5b0aa..019570b20 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -464,6 +464,7 @@ class HomeFragment : Fragment(), AccountObserver { createDeleteCollectionPrompt(action.collection) } is CollectionAction.AddTab -> { + requireComponents.analytics.metrics.track(Event.CollectionAddTabPressed) showCollectionCreationFragment( selectedTabCollection = action.collection, step = SaveCollectionStep.SelectTabs @@ -841,6 +842,7 @@ class HomeFragment : Fragment(), AccountObserver { private const val FADE_ANIM_DURATION = 150L private const val ANIM_SNACKBAR_DELAY = 100L private const val ACCESSIBILITY_FOCUS_DELAY = 2000L + private const val TELEMETRY_HOME_IDENITIFIER = "home" private const val SHARED_TRANSITION_MS = 200L private const val TAB_ITEM_TRANSITION_NAME = "tab_item" private const val toolbarPaddingDp = 12f diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/SaveTabGroupViewHolder.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/SaveTabGroupViewHolder.kt index d96036ad9..519642a70 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/SaveTabGroupViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/SaveTabGroupViewHolder.kt @@ -9,6 +9,8 @@ import androidx.recyclerview.widget.RecyclerView import io.reactivex.Observer import kotlinx.android.synthetic.main.save_tab_group_button.view.* import org.mozilla.fenix.R +import org.mozilla.fenix.components.metrics.Event +import org.mozilla.fenix.ext.components import org.mozilla.fenix.home.sessioncontrol.SessionControlAction import org.mozilla.fenix.home.sessioncontrol.TabAction import org.mozilla.fenix.home.sessioncontrol.onNext @@ -20,11 +22,15 @@ class SaveTabGroupViewHolder( init { view.save_tab_group_button.setOnClickListener { + view.context.components.analytics.metrics + .track(Event.CollectionSaveButtonPressed(TELEMETRY_HOME_IDENITIFIER)) + actionEmitter.onNext(TabAction.SaveTabGroup(selectedTabSessionId = null)) } } companion object { + const val TELEMETRY_HOME_IDENITIFIER = "home" const val LAYOUT_ID = R.layout.save_tab_group_button } } diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/TabViewHolder.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/TabViewHolder.kt index 78a74c3dd..319c12eaa 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/TabViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/TabViewHolder.kt @@ -16,6 +16,7 @@ import mozilla.components.browser.menu.BrowserMenuBuilder import mozilla.components.browser.menu.item.SimpleBrowserMenuItem import mozilla.components.support.ktx.android.util.dpToFloat import org.mozilla.fenix.R +import org.mozilla.fenix.components.metrics.Event import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.increaseTapArea import org.mozilla.fenix.ext.loadIntoView @@ -48,6 +49,7 @@ class TabViewHolder( } item_tab.setOnLongClickListener { + view.context.components.analytics.metrics.track(Event.CollectionTabLongPressed) actionEmitter.onNext(TabAction.SaveTabGroup(tab?.sessionId!!)) true } diff --git a/docs/metrics.md b/docs/metrics.md index 221bbef49..4d8341186 100644 --- a/docs/metrics.md +++ b/docs/metrics.md @@ -888,6 +888,32 @@ tabs_selected: The number of tabs added to the collection 2020-03-01 + + add_tab_button + event + A user tapped the "add tab" button in the three dot menu of collections + link + + 2020-03-01 + + + long_press + event + A user long pressed on a tab, triggering the collection creation screen + link + + 2020-03-01 + + + save_button + event + A user pressed the "save to collection" button on either the home or browser screen, triggering the + collection creation screen to open (tab_select_opened) + link + from_screen: A string representing the screen from which the user pressed the save button. Either `browser` or `home` + + 2020-03-01 +