For #22170: Add telemetry for the auto-close prompt

upstream-sync
Arturo Mejia 3 years ago committed by mergify[bot]
parent 9154371ba5
commit a2c7dfb26e

@ -2998,6 +2998,45 @@ tabs_tray:
notification_emails:
- android-probes@mozilla.com
expires: "2022-11-01"
auto_close_seen:
type: event
description: |
A user has seen the auto-close dialog for inactive tabs.
bugs:
- https://github.com/mozilla-mobile/fenix/issues/22170
data_reviews:
- https://github.com/mozilla-mobile/fenix/pull/22171
data_sensitivity:
- interaction
notification_emails:
- android-probes@mozilla.com
expires: "2022-11-01"
auto_close_turn_on_clicked:
type: event
description: |
A user has clicked the turn-on auto-close button for inactive tabs.
bugs:
- https://github.com/mozilla-mobile/fenix/issues/22170
data_reviews:
- https://github.com/mozilla-mobile/fenix/pull/22171
data_sensitivity:
- interaction
notification_emails:
- android-probes@mozilla.com
expires: "2022-11-01"
auto_close_dimissed:
type: event
description: |
A user has dimissed the auto-close dialog for inactive tabs.
bugs:
- https://github.com/mozilla-mobile/fenix/issues/22170
data_reviews:
- https://github.com/mozilla-mobile/fenix/pull/22171
data_sensitivity:
- interaction
notification_emails:
- android-probes@mozilla.com
expires: "2022-11-01"
close_inactive_tab:
type: counter
description: |

@ -197,6 +197,9 @@ sealed class Event {
object TabsTrayRecentlyClosedPressed : 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())
}

@ -614,6 +614,15 @@ private val Event.wrapper: EventWrapper<*>?
is Event.TabsTrayInactiveTabsCollapsed -> EventWrapper<NoExtraKeys>(
{ TabsTray.inactiveTabsCollapsed.record(it) }
)
is Event.TabsTrayAutoCloseDialogDismissed -> EventWrapper<NoExtraKeys>(
{ TabsTray.autoCloseDimissed }
)
is Event.TabsTrayAutoCloseDialogSeen -> EventWrapper<NoExtraKeys>(
{ TabsTray.autoCloseSeen }
)
is Event.TabsTrayAutoCloseDialogTurnOnClicked -> EventWrapper<NoExtraKeys>(
{ TabsTray.autoCloseTurnOnClicked }
)
is Event.TabsTrayHasInactiveTabs -> EventWrapper(
{ TabsTray.hasInactiveTabs.record(it) },
{ TabsTray.hasInactiveTabsKeys.valueOf(it) }

@ -19,6 +19,7 @@ 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.tabstray.TabsTrayFragment
@ -77,6 +78,7 @@ sealed class InactiveTabViewHolder(itemView: View) : RecyclerView.ViewHolder(ite
private val binding = InactiveTabsAutoCloseBinding.bind(itemView)
init {
binding.root.context.metrics.track(Event.TabsTrayAutoCloseDialogSeen)
binding.closeButton.setOnClickListener {
interactor.onCloseClicked()
}

@ -8,13 +8,16 @@ 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 org.mozilla.fenix.components.metrics.MetricController
import org.mozilla.fenix.utils.Settings
class InactiveTabsAutoCloseDialogController(
private val browserStore: BrowserStore,
private val settings: Settings,
private val tabFilter: (TabSessionState) -> Boolean,
private val tray: TabsTray
private val tray: TabsTray,
private val metrics: MetricController
) {
/**
* Dismiss the auto-close dialog.
@ -22,6 +25,7 @@ class InactiveTabsAutoCloseDialogController(
fun close() {
markDialogAsShown()
refeshInactiveTabsSecion()
metrics.track(Event.TabsTrayAutoCloseDialogDismissed)
}
/**
@ -34,6 +38,7 @@ class InactiveTabsAutoCloseDialogController(
settings.closeTabsAfterOneDay = false
settings.manuallyCloseTabs = false
refeshInactiveTabsSecion()
metrics.track(Event.TabsTrayAutoCloseDialogTurnOnClicked)
}
/**

@ -65,7 +65,8 @@ class NormalBrowserTrayList @JvmOverloads constructor(
context.components.core.store,
context.settings(),
inactiveTabsFilter,
concatAdapter.inactiveTabsAdapter
concatAdapter.inactiveTabsAdapter,
context.components.analytics.metrics
)
)
}

@ -14,22 +14,27 @@ import mozilla.components.browser.state.state.TabSessionState
import mozilla.components.browser.state.store.BrowserStore
import mozilla.components.browser.tabstray.TabsTray
import org.junit.Test
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.components.metrics.MetricController
import org.mozilla.fenix.utils.Settings
class InactiveTabsAutoCloseDialogControllerTest {
val metrics: MetricController = mockk(relaxed = true)
@Test
fun `WHEN close THEN update settings and refresh`() {
val filter: (TabSessionState) -> Boolean = { !it.content.private }
val store = BrowserStore()
val settings: Settings = mockk(relaxed = true)
val tray: TabsTray = mockk(relaxed = true)
val controller = spyk(InactiveTabsAutoCloseDialogController(store, settings, filter, tray))
val controller = spyk(InactiveTabsAutoCloseDialogController(store, settings, filter, tray, metrics))
every { controller.refeshInactiveTabsSecion() } just Runs
controller.close()
verify { metrics.track(Event.TabsTrayAutoCloseDialogDismissed) }
verify { settings.hasInactiveTabsAutoCloseDialogBeenDismissed = true }
verify { controller.refeshInactiveTabsSecion() }
}
@ -40,12 +45,13 @@ class InactiveTabsAutoCloseDialogControllerTest {
val store = BrowserStore()
val settings: Settings = mockk(relaxed = true)
val tray: TabsTray = mockk(relaxed = true)
val controller = spyk(InactiveTabsAutoCloseDialogController(store, settings, filter, tray))
val controller = spyk(InactiveTabsAutoCloseDialogController(store, settings, filter, tray, metrics))
every { controller.refeshInactiveTabsSecion() } just Runs
controller.enableAutoClosed()
verify { metrics.track(Event.TabsTrayAutoCloseDialogTurnOnClicked) }
verify { settings.closeTabsAfterOneMonth = true }
verify { settings.closeTabsAfterOneWeek = false }
verify { settings.closeTabsAfterOneDay = false }

Loading…
Cancel
Save