For #24454 - Remove Event.wrapper for SyncAccount metrics

upstream-sync
Alexandru2909 2 years ago committed by mergify[bot]
parent 54e17f4e2d
commit 480ab3dca7

@ -33,10 +33,6 @@ sealed class Event {
object CustomTabsActionTapped : Event() object CustomTabsActionTapped : Event()
object CustomTabsMenuOpened : Event() object CustomTabsMenuOpened : Event()
object NormalAndPrivateUriOpened : Event() object NormalAndPrivateUriOpened : Event()
object SyncAccountOpened : Event()
object SyncAccountSyncNow : Event()
object SendTab : Event()
object SignInToSendTab : Event()
object HistoryOpened : Event() object HistoryOpened : Event()
object HistoryItemShared : Event() object HistoryItemShared : Event()
object HistoryItemOpened : Event() object HistoryItemOpened : Event()

@ -37,7 +37,6 @@ import org.mozilla.fenix.GleanMetrics.RecentTabs
import org.mozilla.fenix.GleanMetrics.RecentlyVisitedHomepage import org.mozilla.fenix.GleanMetrics.RecentlyVisitedHomepage
import org.mozilla.fenix.GleanMetrics.SearchTerms import org.mozilla.fenix.GleanMetrics.SearchTerms
import org.mozilla.fenix.GleanMetrics.StartOnHome import org.mozilla.fenix.GleanMetrics.StartOnHome
import org.mozilla.fenix.GleanMetrics.SyncAccount
import org.mozilla.fenix.GleanMetrics.SyncedTabs import org.mozilla.fenix.GleanMetrics.SyncedTabs
import org.mozilla.fenix.GleanMetrics.Tab import org.mozilla.fenix.GleanMetrics.Tab
import org.mozilla.fenix.GleanMetrics.Tabs import org.mozilla.fenix.GleanMetrics.Tabs
@ -156,18 +155,6 @@ private val Event.wrapper: EventWrapper<*>?
is Event.NormalAndPrivateUriOpened -> EventWrapper<NoExtraKeys>( is Event.NormalAndPrivateUriOpened -> EventWrapper<NoExtraKeys>(
{ Events.normalAndPrivateUriCount.add(1) } { Events.normalAndPrivateUriCount.add(1) }
) )
is Event.SyncAccountOpened -> EventWrapper<NoExtraKeys>(
{ SyncAccount.opened.record(it) }
)
is Event.SyncAccountSyncNow -> EventWrapper<NoExtraKeys>(
{ SyncAccount.syncNow.record(it) }
)
is Event.SignInToSendTab -> EventWrapper<NoExtraKeys>(
{ SyncAccount.signInToSendTab.record(it) }
)
is Event.SendTab -> EventWrapper<NoExtraKeys>(
{ SyncAccount.sendTab.record(it) }
)
is Event.PreferenceToggled -> EventWrapper( is Event.PreferenceToggled -> EventWrapper(
{ Events.preferenceToggled.record(it) }, { Events.preferenceToggled.record(it) },
{ Events.preferenceToggledKeys.valueOf(it) } { Events.preferenceToggledKeys.valueOf(it) }

@ -34,11 +34,12 @@ import mozilla.components.service.fxa.sync.SyncReason
import mozilla.components.service.fxa.sync.SyncStatusObserver import mozilla.components.service.fxa.sync.SyncStatusObserver
import mozilla.components.service.fxa.sync.getLastSynced import mozilla.components.service.fxa.sync.getLastSynced
import mozilla.components.support.ktx.android.content.getColorFromAttr import mozilla.components.support.ktx.android.content.getColorFromAttr
import mozilla.telemetry.glean.private.NoExtras
import org.mozilla.fenix.FeatureFlags import org.mozilla.fenix.FeatureFlags
import org.mozilla.fenix.GleanMetrics.SyncAccount
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.components.FenixSnackbar import org.mozilla.fenix.components.FenixSnackbar
import org.mozilla.fenix.components.StoreProvider import org.mozilla.fenix.components.StoreProvider
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.getPreferenceKey import org.mozilla.fenix.ext.getPreferenceKey
import org.mozilla.fenix.ext.requireComponents import org.mozilla.fenix.ext.requireComponents
@ -81,7 +82,7 @@ class AccountSettingsFragment : PreferenceFragmentCompat() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
requireComponents.analytics.metrics.track(Event.SyncAccountOpened) SyncAccount.opened.record(NoExtras())
} }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
@ -326,7 +327,7 @@ class AccountSettingsFragment : PreferenceFragmentCompat() {
*/ */
private fun syncNow() { private fun syncNow() {
viewLifecycleOwner.lifecycleScope.launch { viewLifecycleOwner.lifecycleScope.launch {
requireComponents.analytics.metrics.track(Event.SyncAccountSyncNow) SyncAccount.syncNow.record(NoExtras())
// Trigger a sync. // Trigger a sync.
requireComponents.backgroundServices.accountManager.syncNow(SyncReason.User) requireComponents.backgroundServices.accountManager.syncNow(SyncReason.User)
// Poll for device events & update devices. // Poll for device events & update devices.

@ -30,11 +30,11 @@ import mozilla.components.concept.sync.Device
import mozilla.components.concept.sync.TabData import mozilla.components.concept.sync.TabData
import mozilla.components.feature.accounts.push.SendTabUseCases import mozilla.components.feature.accounts.push.SendTabUseCases
import mozilla.components.feature.share.RecentAppsStorage import mozilla.components.feature.share.RecentAppsStorage
import mozilla.components.service.glean.private.NoExtras
import mozilla.components.support.ktx.kotlin.isExtensionUrl import mozilla.components.support.ktx.kotlin.isExtensionUrl
import org.mozilla.fenix.GleanMetrics.SyncAccount
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.components.FenixSnackbar import org.mozilla.fenix.components.FenixSnackbar
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.ext.metrics
import org.mozilla.fenix.ext.nav import org.mozilla.fenix.ext.nav
import org.mozilla.fenix.share.listadapters.AppShareOption import org.mozilla.fenix.share.listadapters.AppShareOption
@ -136,7 +136,7 @@ class DefaultShareController(
} }
override fun handleShareToDevice(device: Device) { override fun handleShareToDevice(device: Device) {
context.metrics.track(Event.SendTab) SyncAccount.sendTab.record(NoExtras())
shareToDevicesWithRetry { sendTabUseCases.sendToDeviceAsync(device.id, shareData.toTabData()) } shareToDevicesWithRetry { sendTabUseCases.sendToDeviceAsync(device.id, shareData.toTabData()) }
} }
@ -145,7 +145,7 @@ class DefaultShareController(
} }
override fun handleSignIn() { override fun handleSignIn() {
context.metrics.track(Event.SignInToSendTab) SyncAccount.signInToSendTab.record(NoExtras())
val directions = val directions =
ShareFragmentDirections.actionGlobalTurnOnSync(padSnackbar = true) ShareFragmentDirections.actionGlobalTurnOnSync(padSnackbar = true)
navController.nav(R.id.shareFragment, directions) navController.nav(R.id.shareFragment, directions)

@ -26,19 +26,21 @@ import mozilla.components.concept.sync.DeviceType
import mozilla.components.concept.sync.TabData import mozilla.components.concept.sync.TabData
import mozilla.components.feature.accounts.push.SendTabUseCases import mozilla.components.feature.accounts.push.SendTabUseCases
import mozilla.components.feature.share.RecentAppsStorage import mozilla.components.feature.share.RecentAppsStorage
import mozilla.components.service.glean.testing.GleanTestRule
import mozilla.components.support.test.robolectric.testContext import mozilla.components.support.test.robolectric.testContext
import mozilla.components.support.test.rule.MainCoroutineRule import mozilla.components.support.test.rule.MainCoroutineRule
import org.junit.After import org.junit.After
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Assert.assertNotEquals import org.junit.Assert.assertNotEquals
import org.junit.Assert.assertNull
import org.junit.Assert.assertTrue import org.junit.Assert.assertTrue
import org.junit.Before import org.junit.Before
import org.junit.Rule import org.junit.Rule
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.mozilla.fenix.GleanMetrics.SyncAccount
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.components.FenixSnackbar import org.mozilla.fenix.components.FenixSnackbar
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.components.metrics.MetricController import org.mozilla.fenix.components.metrics.MetricController
import org.mozilla.fenix.ext.metrics import org.mozilla.fenix.ext.metrics
import org.mozilla.fenix.ext.nav import org.mozilla.fenix.ext.nav
@ -68,6 +70,9 @@ class ShareControllerTest {
private val dismiss = mockk<(ShareController.Result) -> Unit>(relaxed = true) private val dismiss = mockk<(ShareController.Result) -> Unit>(relaxed = true)
private val recentAppStorage = mockk<RecentAppsStorage>(relaxed = true) private val recentAppStorage = mockk<RecentAppsStorage>(relaxed = true)
@get:Rule
val gleanTestRule = GleanTestRule(testContext)
@get:Rule @get:Rule
val coroutinesTestRule = MainCoroutineRule() val coroutinesTestRule = MainCoroutineRule()
private val testDispatcher = coroutinesTestRule.testDispatcher private val testDispatcher = coroutinesTestRule.testDispatcher
@ -265,9 +270,12 @@ class ShareControllerTest {
controller.handleShareToDevice(deviceToShareTo) controller.handleShareToDevice(deviceToShareTo)
assertTrue(SyncAccount.sendTab.testHasValue())
assertEquals(1, SyncAccount.sendTab.testGetValue().size)
assertNull(SyncAccount.sendTab.testGetValue().single().extra)
// Verify all the needed methods are called. // Verify all the needed methods are called.
verifyOrder { verify {
metrics.track(Event.SendTab)
sendTabUseCases.sendToDeviceAsync(capture(deviceId), capture(tabsShared)) sendTabUseCases.sendToDeviceAsync(capture(deviceId), capture(tabsShared))
// dismiss() is also to be called, but at the moment cannot test it in a coroutine. // dismiss() is also to be called, but at the moment cannot test it in a coroutine.
} }
@ -321,8 +329,11 @@ class ShareControllerTest {
fun `handleSignIn should navigate to the Sync Fragment and dismiss this one`() { fun `handleSignIn should navigate to the Sync Fragment and dismiss this one`() {
controller.handleSignIn() controller.handleSignIn()
assertTrue(SyncAccount.signInToSendTab.testHasValue())
assertEquals(1, SyncAccount.signInToSendTab.testGetValue().size)
assertNull(SyncAccount.signInToSendTab.testGetValue().single().extra)
verifyOrder { verifyOrder {
metrics.track(Event.SignInToSendTab)
navController.nav( navController.nav(
R.id.shareFragment, R.id.shareFragment,
ShareFragmentDirections.actionGlobalTurnOnSync() ShareFragmentDirections.actionGlobalTurnOnSync()

Loading…
Cancel
Save