[fenix] For https://github.com/mozilla-mobile/fenix/issues/24208 - Remove Event.wrapper for LoginDialogFacts telemetry

pull/600/head
Alexandru2909 2 years ago committed by mergify[bot]
parent a54ac3be84
commit b5a1813316

@ -182,11 +182,6 @@ sealed class Event {
object ChangedToDefaultBrowser : Event()
object DefaultBrowserNotifTapped : Event()
object LoginDialogPromptDisplayed : Event()
object LoginDialogPromptCancelled : Event()
object LoginDialogPromptSave : Event()
object LoginDialogPromptNeverSave : Event()
object ProgressiveWebAppOpenFromHomescreenTap : Event()
object ProgressiveWebAppInstallAsShortcut : Event()

@ -27,7 +27,6 @@ import org.mozilla.fenix.GleanMetrics.ExperimentsDefaultBrowser
import org.mozilla.fenix.GleanMetrics.History
import org.mozilla.fenix.GleanMetrics.HomeMenu
import org.mozilla.fenix.GleanMetrics.HomeScreen
import org.mozilla.fenix.GleanMetrics.LoginDialog
import org.mozilla.fenix.GleanMetrics.Logins
import org.mozilla.fenix.GleanMetrics.MediaNotification
import org.mozilla.fenix.GleanMetrics.MediaState
@ -132,18 +131,6 @@ private val Event.wrapper: EventWrapper<*>?
BrowserSearch.inContent[label].add(1)
}
)
is Event.LoginDialogPromptDisplayed -> EventWrapper<NoExtraKeys>(
{ LoginDialog.displayed.record(it) }
)
is Event.LoginDialogPromptCancelled -> EventWrapper<NoExtraKeys>(
{ LoginDialog.cancelled.record(it) }
)
is Event.LoginDialogPromptSave -> EventWrapper<NoExtraKeys>(
{ LoginDialog.saved.record(it) }
)
is Event.LoginDialogPromptNeverSave -> EventWrapper<NoExtraKeys>(
{ LoginDialog.neverSave.record(it) }
)
is Event.ContextMenuItemTapped -> EventWrapper(
{ ContextMenu.itemTapped.record(it) },
{ ContextMenu.itemTappedKeys.valueOf(it) }

@ -26,6 +26,7 @@ import mozilla.components.feature.search.telemetry.ads.AdsTelemetry
import mozilla.components.feature.search.telemetry.incontent.InContentTelemetry
import mozilla.components.feature.syncedtabs.facts.SyncedTabsFacts
import mozilla.components.feature.top.sites.facts.TopSitesFacts
import mozilla.components.service.glean.private.NoExtras
import mozilla.components.support.base.Component
import mozilla.components.support.base.facts.Action
import mozilla.components.support.base.facts.Fact
@ -34,6 +35,7 @@ import mozilla.components.support.base.facts.Facts
import mozilla.components.support.base.log.logger.Logger
import mozilla.components.support.webextensions.facts.WebExtensionFacts
import org.mozilla.fenix.BuildConfig
import org.mozilla.fenix.GleanMetrics.LoginDialog
import org.mozilla.fenix.GleanMetrics.PerfAwesomebar
import org.mozilla.fenix.search.awesomebar.ShortcutsSuggestionProvider
import org.mozilla.fenix.utils.Settings
@ -93,13 +95,33 @@ internal class ReleaseMetricController(
init {
Facts.registerProcessor(object : FactProcessor {
override fun process(fact: Fact) {
fact.toEvent()?.also {
track(it)
}
fact.process()
}
})
}
@VisibleForTesting
internal fun Fact.process(): Unit = when (component to item) {
Component.FEATURE_PROMPTS to LoginDialogFacts.Items.DISPLAY -> {
LoginDialog.displayed.record(NoExtras())
}
Component.FEATURE_PROMPTS to LoginDialogFacts.Items.CANCEL -> {
LoginDialog.cancelled.record(NoExtras())
}
Component.FEATURE_PROMPTS to LoginDialogFacts.Items.NEVER_SAVE -> {
LoginDialog.neverSave.record(NoExtras())
}
Component.FEATURE_PROMPTS to LoginDialogFacts.Items.SAVE -> {
LoginDialog.saved.record(NoExtras())
}
else -> {
this.toEvent()?.also {
track(it)
}
Unit
}
}
override fun start(type: MetricServiceType) {
val isEnabled = isTelemetryEnabled(type)
val isInitialized = isInitialized(type)
@ -158,10 +180,6 @@ internal class ReleaseMetricController(
@Suppress("LongMethod", "MaxLineLength")
private fun Fact.toEvent(): Event? = when {
Component.FEATURE_PROMPTS == component && LoginDialogFacts.Items.DISPLAY == item -> Event.LoginDialogPromptDisplayed
Component.FEATURE_PROMPTS == component && LoginDialogFacts.Items.CANCEL == item -> Event.LoginDialogPromptCancelled
Component.FEATURE_PROMPTS == component && LoginDialogFacts.Items.NEVER_SAVE == item -> Event.LoginDialogPromptNeverSave
Component.FEATURE_PROMPTS == component && LoginDialogFacts.Items.SAVE == item -> Event.LoginDialogPromptSave
Component.FEATURE_PROMPTS == component && CreditCardAutofillDialogFacts.Items.AUTOFILL_CREDIT_CARD_FORM_DETECTED == item ->
Event.CreditCardFormDetected
Component.FEATURE_PROMPTS == component && CreditCardAutofillDialogFacts.Items.AUTOFILL_CREDIT_CARD_SUCCESS == item ->

@ -23,16 +23,22 @@ import mozilla.components.support.base.facts.Fact
import mozilla.components.support.base.log.logger.Logger
import mozilla.components.support.test.robolectric.testContext
import mozilla.components.support.webextensions.facts.WebExtensionFacts
import mozilla.telemetry.glean.testing.GleanTestRule
import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.mozilla.fenix.GleanMetrics.LoginDialog
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
import org.mozilla.fenix.utils.Settings
@RunWith(FenixRobolectricTestRunner::class)
class MetricControllerTest {
@get:Rule
val gleanTestRule = GleanTestRule(testContext)
@MockK(relaxUnitFun = true) private lateinit var dataService1: MetricsService
@MockK(relaxUnitFun = true) private lateinit var dataService2: MetricsService
@MockK(relaxUnitFun = true) private lateinit var marketingService1: MetricsService
@ -511,10 +517,6 @@ class MetricControllerTest {
val controller = ReleaseMetricController(emptyList(), { true }, { true }, mockk())
val simpleMappings = listOf(
Triple(Component.FEATURE_PROMPTS, LoginDialogFacts.Items.DISPLAY, Event.LoginDialogPromptDisplayed),
Triple(Component.FEATURE_PROMPTS, LoginDialogFacts.Items.CANCEL, Event.LoginDialogPromptCancelled),
Triple(Component.FEATURE_PROMPTS, LoginDialogFacts.Items.NEVER_SAVE, Event.LoginDialogPromptNeverSave),
Triple(Component.FEATURE_PROMPTS, LoginDialogFacts.Items.SAVE, Event.LoginDialogPromptSave),
// CreditCardAutofillDialogFacts.Items is already tested.
Triple(Component.FEATURE_CUSTOMTABS, CustomTabsFacts.Items.CLOSE, Event.CustomTabsClosed),
Triple(Component.FEATURE_CUSTOMTABS, CustomTabsFacts.Items.ACTION_BUTTON, Event.CustomTabsActionTapped),
@ -536,6 +538,29 @@ class MetricControllerTest {
}
}
@Test
fun `WHEN processing a fact with FEATURE_PROMPTS component THEN the right metric is recorded with no extras`() {
val controller = ReleaseMetricController(emptyList(), { true }, { true }, mockk())
val action = mockk<Action>(relaxed = true)
val itemsToEvents = listOf(
LoginDialogFacts.Items.DISPLAY to LoginDialog.displayed,
LoginDialogFacts.Items.CANCEL to LoginDialog.cancelled,
LoginDialogFacts.Items.NEVER_SAVE to LoginDialog.neverSave,
LoginDialogFacts.Items.SAVE to LoginDialog.saved,
)
itemsToEvents.forEach { (item, event) ->
val fact = Fact(Component.FEATURE_PROMPTS, action, item)
controller.run {
fact.process()
}
assertEquals(true, event.testHasValue())
assertEquals(1, event.testGetValue().size)
assertEquals(null, event.testGetValue().single().extra)
}
}
@Test
fun `search term group events should be sent to enabled service`() {
val controller = ReleaseMetricController(

Loading…
Cancel
Save