For #24098: Remove wrapper from tabs tray metrics.

This commit is contained in:
mcarare 2022-03-07 18:12:58 +02:00 committed by mergify[bot]
parent 21df5a1a4a
commit 1f18f62a5a
16 changed files with 59 additions and 183 deletions

View File

@ -3418,6 +3418,7 @@ tabs_tray:
source:
description: |
From which app feature was an existing tab opened.
type: string
bugs:
- https://github.com/mozilla-mobile/fenix/issues/11273
data_reviews:
@ -3444,6 +3445,7 @@ tabs_tray:
source:
description: |
From which app feature was an existing tab closed.
type: string
bugs:
- https://github.com/mozilla-mobile/fenix/issues/11273
data_reviews:
@ -3695,6 +3697,7 @@ tabs_tray:
inactive_tabs_count:
description:
The number of inactive tabs the user currently has.
type: quantity
bugs:
- https://github.com/mozilla-mobile/fenix/issues/21903
data_reviews:

View File

@ -21,7 +21,6 @@ import org.mozilla.fenix.GleanMetrics.Onboarding
import org.mozilla.fenix.GleanMetrics.Pocket
import org.mozilla.fenix.GleanMetrics.SearchShortcuts
import org.mozilla.fenix.GleanMetrics.SearchTerms
import org.mozilla.fenix.GleanMetrics.TabsTray
import org.mozilla.fenix.GleanMetrics.ToolbarSettings
import org.mozilla.fenix.GleanMetrics.TopSites
import org.mozilla.fenix.GleanMetrics.TrackingProtection
@ -202,41 +201,6 @@ sealed class Event {
object LoginDialogPromptSave : Event()
object LoginDialogPromptNeverSave : Event()
// Tab tray
object TabsTrayOpened : Event()
object TabsTrayClosed : Event()
data class OpenedExistingTab(val source: String) : Event() {
override val extras = mapOf(TabsTray.openedExistingTabKeys.source to source)
}
data class ClosedExistingTab(val source: String) : Event() {
override val extras = mapOf(TabsTray.closedExistingTabKeys.source to source)
}
object TabsTrayPrivateModeTapped : Event()
object TabsTrayNormalModeTapped : Event()
object TabsTraySyncedModeTapped : Event()
object NewTabTapped : Event()
object NewPrivateTabTapped : Event()
object TabsTrayMenuOpened : Event()
object TabsTraySaveToCollectionPressed : Event()
object TabsTrayShareAllTabsPressed : Event()
object TabsTrayCloseAllTabsPressed : Event()
object TabsTrayInactiveTabsExpanded : Event()
object TabsTrayInactiveTabsCollapsed : Event()
object TabsTrayAutoCloseDialogSeen : Event()
object TabsTrayAutoCloseDialogTurnOnClicked : Event()
object TabsTrayAutoCloseDialogDismissed : Event()
data class TabsTrayHasInactiveTabs(val count: Int) : Event() {
override val extras = mapOf(TabsTray.hasInactiveTabsKeys.inactiveTabsCount to count.toString())
}
object TabsTrayCloseAllInactiveTabs : Event()
data class TabsTrayCloseInactiveTab(val amountClosed: Int = 1) : Event()
object TabsTrayOpenInactiveTab : Event()
object TabsTrayInactiveTabsCFRGotoSettings : Event()
object TabsTrayInactiveTabsCFRDismissed : Event()
object TabsTrayInactiveTabsCFRIsVisible : Event()
data class InactiveTabsCountUpdate(val count: Int) : Event()
object ProgressiveWebAppOpenFromHomescreenTap : Event()
object ProgressiveWebAppInstallAsShortcut : Event()

View File

@ -52,7 +52,6 @@ import org.mozilla.fenix.GleanMetrics.SyncAuth
import org.mozilla.fenix.GleanMetrics.SyncedTabs
import org.mozilla.fenix.GleanMetrics.Tab
import org.mozilla.fenix.GleanMetrics.Tabs
import org.mozilla.fenix.GleanMetrics.TabsTray
import org.mozilla.fenix.GleanMetrics.ToolbarSettings
import org.mozilla.fenix.GleanMetrics.TopSites
import org.mozilla.fenix.GleanMetrics.TrackingProtection
@ -647,87 +646,6 @@ private val Event.wrapper: EventWrapper<*>?
{ Onboarding.prefToggledToolbarPositionKeys.valueOf(it) }
)
is Event.TabsTrayOpened -> EventWrapper<NoExtraKeys>(
{ TabsTray.opened.record(it) }
)
is Event.TabsTrayClosed -> EventWrapper<NoExtraKeys>(
{ TabsTray.closed.record(it) }
)
is Event.OpenedExistingTab -> EventWrapper(
{ TabsTray.openedExistingTab.record(it) },
{ TabsTray.openedExistingTabKeys.valueOf(it) }
)
is Event.ClosedExistingTab -> EventWrapper(
{ TabsTray.closedExistingTab.record(it) },
{ TabsTray.closedExistingTabKeys.valueOf(it) }
)
is Event.TabsTrayPrivateModeTapped -> EventWrapper<NoExtraKeys>(
{ TabsTray.privateModeTapped.record(it) }
)
is Event.TabsTrayNormalModeTapped -> EventWrapper<NoExtraKeys>(
{ TabsTray.normalModeTapped.record(it) }
)
is Event.TabsTraySyncedModeTapped -> EventWrapper<NoExtraKeys>(
{ TabsTray.syncedModeTapped.record(it) }
)
is Event.NewTabTapped -> EventWrapper<NoExtraKeys>(
{ TabsTray.newTabTapped.record(it) }
)
is Event.NewPrivateTabTapped -> EventWrapper<NoExtraKeys>(
{ TabsTray.newPrivateTabTapped.record(it) }
)
is Event.TabsTrayMenuOpened -> EventWrapper<NoExtraKeys>(
{ TabsTray.menuOpened.record(it) }
)
is Event.TabsTraySaveToCollectionPressed -> EventWrapper<NoExtraKeys>(
{ TabsTray.saveToCollection.record(it) }
)
is Event.TabsTrayShareAllTabsPressed -> EventWrapper<NoExtraKeys>(
{ TabsTray.shareAllTabs.record(it) }
)
is Event.TabsTrayCloseAllTabsPressed -> EventWrapper<NoExtraKeys>(
{ TabsTray.closeAllTabs.record(it) }
)
is Event.TabsTrayInactiveTabsExpanded -> EventWrapper<NoExtraKeys>(
{ TabsTray.inactiveTabsExpanded.record(it) }
)
is Event.TabsTrayInactiveTabsCollapsed -> EventWrapper<NoExtraKeys>(
{ TabsTray.inactiveTabsCollapsed.record(it) }
)
is Event.TabsTrayAutoCloseDialogDismissed -> EventWrapper<NoExtraKeys>(
{ TabsTray.autoCloseDimissed.record(it) }
)
is Event.TabsTrayAutoCloseDialogSeen -> EventWrapper<NoExtraKeys>(
{ TabsTray.autoCloseSeen.record(it) }
)
is Event.TabsTrayAutoCloseDialogTurnOnClicked -> EventWrapper<NoExtraKeys>(
{ TabsTray.autoCloseTurnOnClicked.record(it) }
)
is Event.TabsTrayHasInactiveTabs -> EventWrapper(
{ TabsTray.hasInactiveTabs.record(it) },
{ TabsTray.hasInactiveTabsKeys.valueOf(it) }
)
is Event.TabsTrayCloseAllInactiveTabs -> EventWrapper<NoExtraKeys>(
{ TabsTray.closeAllInactiveTabs.record(it) }
)
is Event.TabsTrayCloseInactiveTab -> EventWrapper<NoExtraKeys>(
{ TabsTray.closeInactiveTab.add(amountClosed) }
)
is Event.TabsTrayOpenInactiveTab -> EventWrapper<NoExtraKeys>(
{ TabsTray.openInactiveTab.add() }
)
is Event.InactiveTabsCountUpdate -> EventWrapper<NoExtraKeys>(
{ Metrics.inactiveTabsCount.set(this.count.toLong()) },
)
is Event.TabsTrayInactiveTabsCFRGotoSettings -> EventWrapper<NoExtraKeys>(
{ TabsTray.inactiveTabsCfrSettings.record(it) }
)
is Event.TabsTrayInactiveTabsCFRDismissed -> EventWrapper<NoExtraKeys>(
{ TabsTray.inactiveTabsCfrDismissed.record(it) }
)
is Event.TabsTrayInactiveTabsCFRIsVisible -> EventWrapper<NoExtraKeys>(
{ TabsTray.inactiveTabsCfrVisible.record(it) }
)
is Event.AutoPlaySettingVisited -> EventWrapper<NoExtraKeys>(
{ Autoplay.visitedSetting.record(it) }
)

View File

@ -15,6 +15,7 @@ import mozilla.components.browser.state.store.BrowserStore
import mozilla.components.browser.storage.sync.Tab as SyncTab
import mozilla.components.concept.engine.prompt.ShareData
import mozilla.components.service.fxa.manager.FxaAccountManager
import mozilla.telemetry.glean.private.NoExtras
import org.mozilla.fenix.BrowserDirection
import org.mozilla.fenix.GleanMetrics.TabsTray
import org.mozilla.fenix.HomeActivity
@ -118,7 +119,7 @@ class DefaultNavigationInteractor(
) : NavigationInteractor {
override fun onTabTrayDismissed() {
metrics.track(Event.TabsTrayClosed)
TabsTray.closed.record(NoExtras())
dismissTabTray()
}
@ -199,7 +200,7 @@ class DefaultNavigationInteractor(
override fun onSaveToCollections(tabs: Collection<TabSessionState>) {
TabsTray.selectedTabsToCollection.record(TabsTray.SelectedTabsToCollectionExtra(tabCount = tabs.size))
metrics.track(Event.TabsTraySaveToCollectionPressed)
TabsTray.saveToCollection.record(NoExtras())
tabsTrayStore.dispatch(TabsTrayAction.ExitSelectMode)
CollectionsDialog(

View File

@ -9,9 +9,9 @@ import androidx.viewpager2.widget.ViewPager2
import com.google.android.material.tabs.TabLayout
import mozilla.components.browser.state.store.BrowserStore
import mozilla.components.support.base.feature.LifecycleAwareFeature
import mozilla.telemetry.glean.private.NoExtras
import org.mozilla.fenix.GleanMetrics.TabsTray
import org.mozilla.fenix.browser.browsingmode.BrowsingModeManager
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.components.metrics.MetricController
import org.mozilla.fenix.tabstray.TrayPagerAdapter.Companion.POSITION_NORMAL_TABS
import org.mozilla.fenix.tabstray.TrayPagerAdapter.Companion.POSITION_PRIVATE_TABS
import org.mozilla.fenix.utils.Do
@ -26,10 +26,9 @@ class TabLayoutMediator(
interactor: TabsTrayInteractor,
private val browsingModeManager: BrowsingModeManager,
private val tabsTrayStore: TabsTrayStore,
metrics: MetricController
) : LifecycleAwareFeature {
private val observer = TabLayoutObserver(interactor, metrics)
private val observer = TabLayoutObserver(interactor)
/**
* Start observing the [TabLayout] and select the current tab for initial state.
@ -67,7 +66,6 @@ class TabLayoutMediator(
*/
internal class TabLayoutObserver(
private val interactor: TabsTrayInteractor,
private val metrics: MetricController
) : TabLayout.OnTabSelectedListener {
private var initialScroll = true
@ -84,9 +82,9 @@ internal class TabLayoutObserver(
interactor.onTrayPositionSelected(tab.position, animate)
Do exhaustive when (Page.positionToPage(tab.position)) {
Page.NormalTabs -> metrics.track(Event.TabsTrayNormalModeTapped)
Page.PrivateTabs -> metrics.track(Event.TabsTrayPrivateModeTapped)
Page.SyncedTabs -> metrics.track(Event.TabsTraySyncedModeTapped)
Page.NormalTabs -> TabsTray.normalModeTapped.record(NoExtras())
Page.PrivateTabs -> TabsTray.privateModeTapped.record(NoExtras())
Page.SyncedTabs -> TabsTray.syncedModeTapped.record(NoExtras())
}
}

View File

@ -15,6 +15,7 @@ import mozilla.components.browser.state.store.BrowserStore
import mozilla.components.concept.base.profiler.Profiler
import mozilla.components.feature.tabs.TabsUseCases
import mozilla.components.lib.state.DelicateAction
import mozilla.telemetry.glean.private.NoExtras
import org.mozilla.fenix.GleanMetrics.TabsTray
import org.mozilla.fenix.R
import org.mozilla.fenix.browser.browsingmode.BrowsingMode
@ -190,7 +191,7 @@ class DefaultTabsTrayController(
dismissTabsTrayAndNavigateHome(tabId)
}
}
metrics.track(Event.ClosedExistingTab(source ?: "unknown"))
TabsTray.closedExistingTab.record(TabsTray.ClosedExistingTabExtra(source ?: "unknown"))
}
}
@ -263,13 +264,11 @@ class DefaultTabsTrayController(
@VisibleForTesting
internal fun sendNewTabEvent(isPrivateModeSelected: Boolean) {
val eventToSend = if (isPrivateModeSelected) {
Event.NewPrivateTabTapped
if (isPrivateModeSelected) {
TabsTray.newPrivateTabTapped.record(NoExtras())
} else {
Event.NewTabTapped
TabsTray.newTabTapped.record(NoExtras())
}
metrics.track(eventToSend)
}
@VisibleForTesting
@ -279,7 +278,7 @@ class DefaultTabsTrayController(
}
override fun handleDeleteAllInactiveTabs() {
metrics.track(Event.TabsTrayCloseAllInactiveTabs)
TabsTray.closeAllInactiveTabs.record(NoExtras())
browserStore.state.potentialInactiveTabs.map { it.id }.let {
tabsUseCases.removeTabs(it)
}

View File

@ -30,12 +30,13 @@ import mozilla.components.browser.state.store.BrowserStore
import mozilla.components.feature.downloads.ui.DownloadCancelDialogFragment
import mozilla.components.feature.tabs.tabstray.TabsFeature
import mozilla.components.support.base.feature.ViewBoundFeatureWrapper
import mozilla.telemetry.glean.private.NoExtras
import org.mozilla.fenix.GleanMetrics.TabsTray
import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.NavGraphDirections
import org.mozilla.fenix.R
import org.mozilla.fenix.components.FenixSnackbar
import org.mozilla.fenix.components.StoreProvider
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.databinding.ComponentTabstray2Binding
import org.mozilla.fenix.databinding.ComponentTabstrayFabBinding
import org.mozilla.fenix.databinding.FragmentTabTrayDialogBinding
@ -174,7 +175,7 @@ class TabsTrayFragment : AppCompatDialogFragment() {
fabButtonBinding.newTabButton.accessibilityTraversalAfter =
tabsTrayBinding.tabLayout.id
}
requireComponents.analytics.metrics.track(Event.TabsTrayOpened)
TabsTray.opened.record(NoExtras())
navigationInteractor =
DefaultNavigationInteractor(
@ -218,7 +219,6 @@ class TabsTrayFragment : AppCompatDialogFragment() {
tabsTrayInteractor,
tabsTrayController,
requireComponents.useCases.tabsUseCases.selectTab,
requireComponents.analytics.metrics
)
setupMenu(navigationInteractor)
@ -231,7 +231,7 @@ class TabsTrayFragment : AppCompatDialogFragment() {
)
setupBackgroundDismissalListener {
requireComponents.analytics.metrics.track(Event.TabsTrayClosed)
TabsTray.closed.record(NoExtras())
dismissAllowingStateLoss()
}
@ -283,7 +283,6 @@ class TabsTrayFragment : AppCompatDialogFragment() {
interactor = tabsTrayInteractor,
browsingModeManager = activity.browsingModeManager,
tabsTrayStore = tabsTrayStore,
metrics = requireComponents.analytics.metrics
),
owner = this,
view = view
@ -489,7 +488,7 @@ class TabsTrayFragment : AppCompatDialogFragment() {
internal fun setupMenu(navigationInteractor: NavigationInteractor) {
tabsTrayBinding.tabTrayOverflow.setOnClickListener { anchor ->
requireComponents.analytics.metrics.track(Event.TabsTrayMenuOpened)
TabsTray.menuOpened.record(NoExtras())
val menu = getTrayMenu(
context = requireContext(),

View File

@ -25,12 +25,12 @@ import mozilla.components.browser.state.store.BrowserStore
import mozilla.components.lib.state.helpers.AbstractBinding
import mozilla.components.support.ktx.android.util.dpToPx
import mozilla.components.support.ktx.kotlinx.coroutines.flow.ifChanged
import mozilla.telemetry.glean.private.NoExtras
import org.mozilla.fenix.GleanMetrics.TabsTray
import org.mozilla.fenix.R
import org.mozilla.fenix.browser.infobanner.InfoBanner
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.databinding.ComponentTabstray2Binding
import org.mozilla.fenix.databinding.OnboardingInactiveTabsCfrBinding
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.potentialInactiveTabs
import org.mozilla.fenix.utils.Settings
@ -69,7 +69,6 @@ class TabsTrayInactiveTabsOnboardingBinding(
if (this::inactiveTabsDialog.isInitialized) return
val context: Context = context
val metrics = context.components.analytics.metrics
val anchorPosition = IntArray(2)
val popupBinding = OnboardingInactiveTabsCfrBinding.inflate(LayoutInflater.from(context))
inactiveTabsDialog = Dialog(context)
@ -83,14 +82,14 @@ class TabsTrayInactiveTabsOnboardingBinding(
popupBinding.closeInfoBanner.setOnClickListener {
inactiveTabsDialog.dismiss()
settings.shouldShowInactiveTabsOnboardingPopup = false
metrics.track(Event.TabsTrayInactiveTabsCFRDismissed)
TabsTray.inactiveTabsCfrDismissed.record(NoExtras())
}
popupBinding.bannerInfoMessage.setOnClickListener {
inactiveTabsDialog.dismiss()
settings.shouldShowInactiveTabsOnboardingPopup = false
navigationInteractor.onTabSettingsClicked()
metrics.track(Event.TabsTrayInactiveTabsCFRGotoSettings)
TabsTray.inactiveTabsCfrSettings.record(NoExtras())
}
val messageText = context.getString(R.string.tab_tray_inactive_onboarding_message)
@ -120,6 +119,6 @@ class TabsTrayInactiveTabsOnboardingBinding(
setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
}
inactiveTabsDialog.show()
metrics.track(Event.TabsTrayInactiveTabsCFRIsVisible)
TabsTray.inactiveTabsCfrVisible.record(NoExtras())
}
}

View File

@ -11,9 +11,9 @@ import mozilla.components.browser.menu.item.SimpleBrowserMenuItem
import mozilla.components.browser.state.selector.normalTabs
import mozilla.components.browser.state.selector.privateTabs
import mozilla.components.browser.state.store.BrowserStore
import mozilla.telemetry.glean.private.NoExtras
import org.mozilla.fenix.GleanMetrics.TabsTray
import org.mozilla.fenix.R
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.tabstray.ext.isNormalModeSelected
import org.mozilla.fenix.tabstray.ext.isPrivateModeSelected
import org.mozilla.fenix.tabstray.ext.isSyncedModeSelected
@ -63,7 +63,7 @@ class TabsTrayMenu(
context.getString(R.string.tab_tray_menu_item_share),
textColorResource = R.color.fx_mobile_text_color_primary
) {
context.components.analytics.metrics.track(Event.TabsTrayShareAllTabsPressed)
TabsTray.shareAllTabs.record(NoExtras())
onItemTapped.invoke(Item.ShareAllTabs)
}.apply { visible = shouldShowSelectOrShare },
@ -92,7 +92,7 @@ class TabsTrayMenu(
context.getString(R.string.tab_tray_menu_item_close),
textColorResource = R.color.fx_mobile_text_color_primary
) {
context.components.analytics.metrics.track(Event.TabsTrayCloseAllTabsPressed)
TabsTray.closeAllTabs.record(NoExtras())
onItemTapped.invoke(Item.CloseAllTabs)
}.apply { visible = { checkOpenTabs } }
)

View File

@ -7,6 +7,7 @@ package org.mozilla.fenix.tabstray
import androidx.annotation.VisibleForTesting
import mozilla.components.lib.state.Middleware
import mozilla.components.lib.state.MiddlewareContext
import org.mozilla.fenix.GleanMetrics.Metrics
import org.mozilla.fenix.GleanMetrics.TabsTray
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.components.metrics.MetricController
@ -34,8 +35,9 @@ class TabsTrayMiddleware(
is TabsTrayAction.UpdateInactiveTabs -> {
if (shouldReportInactiveTabMetrics) {
shouldReportInactiveTabMetrics = false
metrics.track(Event.InactiveTabsCountUpdate(action.tabs.size))
metrics.track(Event.TabsTrayHasInactiveTabs(action.tabs.size))
TabsTray.hasInactiveTabs.record(TabsTray.HasInactiveTabsExtra(action.tabs.size))
Metrics.inactiveTabsCount.set(action.tabs.size.toLong())
}
}
is TabsTrayAction.UpdateTabPartitions -> {

View File

@ -10,7 +10,6 @@ import mozilla.components.feature.tabs.TabsUseCases
import mozilla.components.support.base.feature.UserInteractionHandler
import org.mozilla.fenix.selection.SelectionInteractor
import org.mozilla.fenix.tabstray.TabsTrayAction
import org.mozilla.fenix.components.metrics.MetricController
import org.mozilla.fenix.tabstray.TabsTrayController
import org.mozilla.fenix.tabstray.TabsTrayInteractor
import org.mozilla.fenix.tabstray.TabsTrayState.Mode
@ -58,11 +57,10 @@ class DefaultBrowserTrayInteractor(
private val trayInteractor: TabsTrayInteractor,
private val controller: TabsTrayController,
private val selectTab: TabsUseCases.SelectTabUseCase,
private val metrics: MetricController
) : BrowserTrayInteractor {
private val selectTabWrapper by lazy {
SelectTabUseCaseWrapper(metrics, selectTab) {
SelectTabUseCaseWrapper(selectTab) {
trayInteractor.onBrowserTabSelected()
}
}

View File

@ -10,8 +10,8 @@ import androidx.recyclerview.widget.RecyclerView
import mozilla.components.browser.state.state.TabSessionState
import mozilla.components.browser.tabstray.TabsTray
import mozilla.components.browser.toolbar.MAX_URI_LENGTH
import mozilla.telemetry.glean.private.NoExtras
import org.mozilla.fenix.R
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.components.FenixSnackbar
import org.mozilla.fenix.databinding.InactiveFooterItemBinding
import org.mozilla.fenix.databinding.InactiveHeaderItemBinding
@ -19,9 +19,9 @@ import org.mozilla.fenix.databinding.InactiveTabListItemBinding
import org.mozilla.fenix.databinding.InactiveTabsAutoCloseBinding
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.loadIntoView
import org.mozilla.fenix.ext.metrics
import org.mozilla.fenix.ext.toShortUrl
import org.mozilla.fenix.home.topsites.dpToPx
import org.mozilla.fenix.GleanMetrics.TabsTray as TabsTrayMetrics
import org.mozilla.fenix.tabstray.TabsTrayFragment
import org.mozilla.fenix.tabstray.TabsTrayInteractor
@ -78,7 +78,7 @@ sealed class InactiveTabViewHolder(itemView: View) : RecyclerView.ViewHolder(ite
private val binding = InactiveTabsAutoCloseBinding.bind(itemView)
init {
binding.root.context.metrics.track(Event.TabsTrayAutoCloseDialogSeen)
TabsTrayMetrics.autoCloseSeen.record(NoExtras())
binding.message.text = with(binding.root.context) {
getString(
@ -86,7 +86,6 @@ sealed class InactiveTabViewHolder(itemView: View) : RecyclerView.ViewHolder(ite
getString(R.string.app_name)
)
}
binding.closeButton.setOnClickListener {
interactor.onCloseClicked()
}
@ -135,7 +134,7 @@ sealed class InactiveTabViewHolder(itemView: View) : RecyclerView.ViewHolder(ite
val url = tab.content.url.toShortUrl(components.publicSuffixList).take(MAX_URI_LENGTH)
itemView.setOnClickListener {
components.analytics.metrics.track(Event.TabsTrayOpenInactiveTab)
TabsTrayMetrics.openInactiveTab.add()
delegate.onTabSelected(tab, featureName)
}
@ -146,7 +145,7 @@ sealed class InactiveTabViewHolder(itemView: View) : RecyclerView.ViewHolder(ite
R.drawable.mozac_ic_close,
R.string.content_description_close_button
) {
components.analytics.metrics.track(Event.TabsTrayCloseInactiveTab())
TabsTrayMetrics.closeInactiveTab.add()
delegate.onTabClosed(tab, featureName)
}
}

View File

@ -8,9 +8,10 @@ import androidx.annotation.VisibleForTesting
import mozilla.components.browser.state.state.TabSessionState
import mozilla.components.browser.state.store.BrowserStore
import mozilla.components.browser.tabstray.TabsTray
import org.mozilla.fenix.components.metrics.Event
import mozilla.telemetry.glean.private.NoExtras
import org.mozilla.fenix.components.metrics.MetricController
import org.mozilla.fenix.utils.Settings
import org.mozilla.fenix.GleanMetrics.TabsTray as TabsTrayMetrics
class InactiveTabsAutoCloseDialogController(
private val browserStore: BrowserStore,
@ -25,7 +26,9 @@ class InactiveTabsAutoCloseDialogController(
fun close() {
markDialogAsShown()
refreshInactiveTabsSection()
metrics.track(Event.TabsTrayAutoCloseDialogDismissed)
org.mozilla.fenix.GleanMetrics.TabsTray.autoCloseSeen.record(NoExtras())
TabsTrayMetrics.autoCloseDimissed.record(NoExtras())
}
/**
@ -38,7 +41,7 @@ class InactiveTabsAutoCloseDialogController(
settings.closeTabsAfterOneDay = false
settings.manuallyCloseTabs = false
refreshInactiveTabsSection()
metrics.track(Event.TabsTrayAutoCloseDialogTurnOnClicked)
TabsTrayMetrics.autoCloseTurnOnClicked.record(NoExtras())
}
/**

View File

@ -6,10 +6,10 @@ package org.mozilla.fenix.tabstray.browser
import androidx.annotation.VisibleForTesting
import mozilla.components.browser.tabstray.TabsTray
import mozilla.telemetry.glean.private.NoExtras
import org.mozilla.fenix.GleanMetrics.TabsTray as TabsTrayMetrics
import org.mozilla.fenix.components.AppStore
import org.mozilla.fenix.components.appstate.AppAction.UpdateInactiveExpanded
import org.mozilla.fenix.components.metrics.MetricController
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.tabstray.TabsTrayStore
import org.mozilla.fenix.utils.Settings
@ -17,7 +17,6 @@ class InactiveTabsController(
private val tabsTrayStore: TabsTrayStore,
private val appStore: AppStore,
private val tray: TabsTray,
private val metrics: MetricController,
private val settings: Settings
) {
/**
@ -31,12 +30,10 @@ class InactiveTabsController(
refreshInactiveTabsSection()
}
metrics.track(
when (isExpanded) {
true -> Event.TabsTrayInactiveTabsExpanded
false -> Event.TabsTrayInactiveTabsCollapsed
}
)
when (isExpanded) {
true -> TabsTrayMetrics.inactiveTabsExpanded.record(NoExtras())
false -> TabsTrayMetrics.inactiveTabsCollapsed.record(NoExtras())
}
}
/**
@ -45,7 +42,7 @@ class InactiveTabsController(
fun close() {
markDialogAsShown()
refreshInactiveTabsSection()
metrics.track(Event.TabsTrayAutoCloseDialogDismissed)
TabsTrayMetrics.autoCloseDimissed.record(NoExtras())
}
/**
@ -58,7 +55,7 @@ class InactiveTabsController(
settings.closeTabsAfterOneDay = false
settings.manuallyCloseTabs = false
refreshInactiveTabsSection()
metrics.track(Event.TabsTrayAutoCloseDialogTurnOnClicked)
TabsTrayMetrics.autoCloseTurnOnClicked.record(NoExtras())
}
/**

View File

@ -45,7 +45,6 @@ class NormalBrowserTrayList @JvmOverloads constructor(
tabsTrayStore,
context.components.appStore,
concatAdapter.inactiveTabsAdapter,
context.components.analytics.metrics,
context.settings()
)
)

View File

@ -5,16 +5,14 @@
package org.mozilla.fenix.tabstray.browser
import mozilla.components.feature.tabs.TabsUseCases
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.components.metrics.MetricController
import org.mozilla.fenix.GleanMetrics.TabsTray
class SelectTabUseCaseWrapper(
private val metrics: MetricController,
private val selectTab: TabsUseCases.SelectTabUseCase,
private val onSelect: (String) -> Unit
) : TabsUseCases.SelectTabUseCase {
operator fun invoke(tabId: String, source: String? = null) {
metrics.track(Event.OpenedExistingTab(source ?: "unknown"))
TabsTray.openedExistingTab.record(TabsTray.OpenedExistingTabExtra(source ?: "unknown"))
selectTab(tabId)
onSelect(tabId)
}
@ -25,11 +23,10 @@ class SelectTabUseCaseWrapper(
}
class RemoveTabUseCaseWrapper(
private val metrics: MetricController,
private val onRemove: (String) -> Unit,
) : TabsUseCases.RemoveTabUseCase {
operator fun invoke(tabId: String, source: String? = null) {
metrics.track(Event.ClosedExistingTab(source ?: "unknown"))
TabsTray.closedExistingTab.record(TabsTray.ClosedExistingTabExtra(source ?: "unknown"))
onRemove(tabId)
}