Bug 1883968 - Translations Interaction Telemetry

This patch adds:
* `translations_action` probe
    * Extras:
        * main_flow_toolbar - Interaction with toolbar button
        * main_flow_browser - Interaction with browser menu button
        * page_settings - Interaction with page settings
        * global_settings - Interaction with global settings
        * global_lang_settings - Interaction with language settings
        * global_site_settings - Interaction with site settings
        * downloads - Interaction with downloads
fenix/125.0
ohall-m 2 months ago committed by mergify[bot]
parent b260a91210
commit 0450b126f1

@ -854,6 +854,29 @@ events:
notification_emails: notification_emails:
- android-probes@mozilla.com - android-probes@mozilla.com
expires: never expires: never
translations_action:
type: event
description: |
An area inside the translations feature was tapped.
The name of the translations area that the user tapped is stored in extras with the
key `item`.
extra_keys:
item:
description: |
A string containing the name of the item the user tapped. These items
include:
main_flow_toolbar, main_flow_browser, page_settings, global_settings,
global_lang_settings, global_site_settings, downloads
type: string
bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1883968
data_reviews:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1883968#c6
data_sensitivity:
- interaction
notification_emails:
- android-probes@mozilla.com
expires: never
splash_screen: splash_screen:
first_launch_extended: first_launch_extended:

@ -230,6 +230,7 @@ class DefaultBrowserToolbarController(
} }
override fun handleTranslationsButtonClick() { override fun handleTranslationsButtonClick() {
Events.translationsAction.record(Events.TranslationsActionExtra("main_flow_toolbar"))
val directions = val directions =
BrowserFragmentDirections.actionBrowserFragmentToTranslationsDialogFragment( BrowserFragmentDirections.actionBrowserFragmentToTranslationsDialogFragment(
sessionId = currentSession?.id, sessionId = currentSession?.id,

@ -408,6 +408,7 @@ class DefaultBrowserToolbarMenuController(
} }
ToolbarMenu.Item.Translate -> { ToolbarMenu.Item.Translate -> {
Events.translationsAction.record(Events.TranslationsActionExtra("main_flow_browser"))
val directions = val directions =
BrowserFragmentDirections.actionBrowserFragmentToTranslationsDialogFragment( BrowserFragmentDirections.actionBrowserFragmentToTranslationsDialogFragment(
sessionId = currentSession?.id, sessionId = currentSession?.id,

@ -29,7 +29,6 @@ import org.mozilla.fenix.compose.Divider
import org.mozilla.fenix.compose.SwitchWithLabel import org.mozilla.fenix.compose.SwitchWithLabel
import org.mozilla.fenix.compose.annotation.LightDarkPreview import org.mozilla.fenix.compose.annotation.LightDarkPreview
import org.mozilla.fenix.compose.list.TextListItem import org.mozilla.fenix.compose.list.TextListItem
import org.mozilla.fenix.nimbus.FxNimbus
import org.mozilla.fenix.theme.FirefoxTheme import org.mozilla.fenix.theme.FirefoxTheme
import java.util.Locale import java.util.Locale
@ -37,6 +36,7 @@ import java.util.Locale
* Firefox Translation options bottom sheet dialog. * Firefox Translation options bottom sheet dialog.
* *
* @param translationOptionsList A list of [TranslationSwitchItem]s to display. * @param translationOptionsList A list of [TranslationSwitchItem]s to display.
* @param showGlobalSettings Whether to show to global settings entry point or not.
* @param onBackClicked Invoked when the user clicks on the back button. * @param onBackClicked Invoked when the user clicks on the back button.
* @param onTranslationSettingsClicked Invoked when the user clicks on the "Translation Settings" button. * @param onTranslationSettingsClicked Invoked when the user clicks on the "Translation Settings" button.
* @param aboutTranslationClicked Invoked when the user clicks on the "About Translation" button. * @param aboutTranslationClicked Invoked when the user clicks on the "About Translation" button.
@ -44,6 +44,7 @@ import java.util.Locale
@Composable @Composable
fun TranslationOptionsDialog( fun TranslationOptionsDialog(
translationOptionsList: List<TranslationSwitchItem>, translationOptionsList: List<TranslationSwitchItem>,
showGlobalSettings: Boolean,
onBackClicked: () -> Unit, onBackClicked: () -> Unit,
onTranslationSettingsClicked: () -> Unit, onTranslationSettingsClicked: () -> Unit,
aboutTranslationClicked: () -> Unit, aboutTranslationClicked: () -> Unit,
@ -66,7 +67,7 @@ fun TranslationOptionsDialog(
) )
} }
if (FxNimbus.features.translations.value().globalSettingsEnabled) { if (showGlobalSettings) {
item { item {
TextListItem( TextListItem(
label = stringResource(id = R.string.translation_option_bottom_sheet_translation_settings), label = stringResource(id = R.string.translation_option_bottom_sheet_translation_settings),
@ -215,6 +216,7 @@ private fun TranslationSettingsPreview() {
FirefoxTheme { FirefoxTheme {
TranslationOptionsDialog( TranslationOptionsDialog(
translationOptionsList = getTranslationOptionsList(), translationOptionsList = getTranslationOptionsList(),
showGlobalSettings = true,
onBackClicked = {}, onBackClicked = {},
onTranslationSettingsClicked = {}, onTranslationSettingsClicked = {},
aboutTranslationClicked = {}, aboutTranslationClicked = {},

@ -22,13 +22,15 @@ import org.mozilla.fenix.compose.Divider
import org.mozilla.fenix.compose.SwitchWithLabel import org.mozilla.fenix.compose.SwitchWithLabel
import org.mozilla.fenix.compose.annotation.LightDarkPreview import org.mozilla.fenix.compose.annotation.LightDarkPreview
import org.mozilla.fenix.compose.list.TextListItem import org.mozilla.fenix.compose.list.TextListItem
import org.mozilla.fenix.nimbus.FxNimbus
import org.mozilla.fenix.theme.FirefoxTheme import org.mozilla.fenix.theme.FirefoxTheme
/** /**
* Translation Settings Fragment. * Translation Settings Fragment.
* *
* @param translationSwitchList list of [TranslationSwitchItem]s to display. * @param translationSwitchList list of [TranslationSwitchItem]s to display.
* @param showAutomaticTranslations Show the entry point for the user to change automatic language settings.
* @param showNeverTranslate Show the entry point for the user to change never translate settings.
* @param showDownloads Show the entry point for the user to manage language models.
* @param onAutomaticTranslationClicked Invoked when the user clicks on the "Automatic Translation" button. * @param onAutomaticTranslationClicked Invoked when the user clicks on the "Automatic Translation" button.
* @param onNeverTranslationClicked Invoked when the user clicks on the "Never Translation" button. * @param onNeverTranslationClicked Invoked when the user clicks on the "Never Translation" button.
* @param onDownloadLanguageClicked Invoked when the user clicks on the "Download Language" button. * @param onDownloadLanguageClicked Invoked when the user clicks on the "Download Language" button.
@ -37,6 +39,9 @@ import org.mozilla.fenix.theme.FirefoxTheme
@Composable @Composable
fun TranslationSettings( fun TranslationSettings(
translationSwitchList: List<TranslationSwitchItem>, translationSwitchList: List<TranslationSwitchItem>,
showAutomaticTranslations: Boolean,
showNeverTranslate: Boolean,
showDownloads: Boolean,
onAutomaticTranslationClicked: () -> Unit, onAutomaticTranslationClicked: () -> Unit,
onNeverTranslationClicked: () -> Unit, onNeverTranslationClicked: () -> Unit,
onDownloadLanguageClicked: () -> Unit, onDownloadLanguageClicked: () -> Unit,
@ -81,7 +86,7 @@ fun TranslationSettings(
) )
} }
if (FxNimbus.features.translations.value().globalLangSettingsEnabled) { if (showAutomaticTranslations) {
item { item {
TextListItem( TextListItem(
label = stringResource(id = R.string.translation_settings_automatic_translation), label = stringResource(id = R.string.translation_settings_automatic_translation),
@ -93,7 +98,7 @@ fun TranslationSettings(
} }
} }
if (FxNimbus.features.translations.value().globalSiteSettingsEnabled) { if (showNeverTranslate) {
item { item {
TextListItem( TextListItem(
label = stringResource( label = stringResource(
@ -107,7 +112,7 @@ fun TranslationSettings(
} }
} }
if (FxNimbus.features.translations.value().downloadsEnabled) { if (showDownloads) {
item { item {
TextListItem( TextListItem(
label = stringResource( label = stringResource(
@ -161,6 +166,9 @@ private fun TranslationSettingsPreview() {
FirefoxTheme { FirefoxTheme {
TranslationSettings( TranslationSettings(
translationSwitchList = getTranslationSettingsSwitchList(), translationSwitchList = getTranslationSettingsSwitchList(),
showAutomaticTranslations = true,
showNeverTranslate = true,
showDownloads = true,
onAutomaticTranslationClicked = {}, onAutomaticTranslationClicked = {},
onDownloadLanguageClicked = {}, onDownloadLanguageClicked = {},
onNeverTranslationClicked = {}, onNeverTranslationClicked = {},

@ -24,10 +24,12 @@ import mozilla.components.browser.state.store.BrowserStore
import mozilla.components.concept.engine.translate.TranslationPageSettingOperation import mozilla.components.concept.engine.translate.TranslationPageSettingOperation
import mozilla.components.lib.state.ext.observeAsComposableState import mozilla.components.lib.state.ext.observeAsComposableState
import mozilla.components.support.base.feature.UserInteractionHandler import mozilla.components.support.base.feature.UserInteractionHandler
import org.mozilla.fenix.GleanMetrics.Events
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.ext.requireComponents import org.mozilla.fenix.ext.requireComponents
import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.ext.showToolbar import org.mozilla.fenix.ext.showToolbar
import org.mozilla.fenix.nimbus.FxNimbus
import org.mozilla.fenix.theme.FirefoxTheme import org.mozilla.fenix.theme.FirefoxTheme
/** /**
@ -51,19 +53,25 @@ class TranslationSettingsFragment : Fragment(), UserInteractionHandler {
FirefoxTheme { FirefoxTheme {
TranslationSettings( TranslationSettings(
translationSwitchList = getTranslationSwitchItemList(), translationSwitchList = getTranslationSwitchItemList(),
showAutomaticTranslations = FxNimbus.features.translations.value().globalLangSettingsEnabled,
showNeverTranslate = FxNimbus.features.translations.value().globalSiteSettingsEnabled,
showDownloads = FxNimbus.features.translations.value().downloadsEnabled,
onAutomaticTranslationClicked = { onAutomaticTranslationClicked = {
Events.translationsAction.record(Events.TranslationsActionExtra("global_lang_settings"))
findNavController().navigate( findNavController().navigate(
TranslationSettingsFragmentDirections TranslationSettingsFragmentDirections
.actionTranslationSettingsFragmentToAutomaticTranslationPreferenceFragment(), .actionTranslationSettingsFragmentToAutomaticTranslationPreferenceFragment(),
) )
}, },
onNeverTranslationClicked = { onNeverTranslationClicked = {
Events.translationsAction.record(Events.TranslationsActionExtra("global_site_settings"))
findNavController().navigate( findNavController().navigate(
TranslationSettingsFragmentDirections TranslationSettingsFragmentDirections
.actionTranslationSettingsFragmentToNeverTranslateSitePreferenceFragment(), .actionTranslationSettingsFragmentToNeverTranslateSitePreferenceFragment(),
) )
}, },
onDownloadLanguageClicked = { onDownloadLanguageClicked = {
Events.translationsAction.record(Events.TranslationsActionExtra("downloads"))
findNavController().navigate( findNavController().navigate(
TranslationSettingsFragmentDirections TranslationSettingsFragmentDirections
.actionTranslationSettingsFragmentToDownloadLanguagesPreferenceFragment(), .actionTranslationSettingsFragmentToDownloadLanguagesPreferenceFragment(),

@ -31,7 +31,6 @@ import androidx.compose.ui.unit.dp
import mozilla.components.concept.engine.translate.Language import mozilla.components.concept.engine.translate.Language
import mozilla.components.concept.engine.translate.TranslationPageSettings import mozilla.components.concept.engine.translate.TranslationPageSettings
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.nimbus.FxNimbus
import org.mozilla.fenix.theme.FirefoxTheme import org.mozilla.fenix.theme.FirefoxTheme
private const val BOTTOM_SHEET_HANDLE_WIDTH_PERCENT = 0.1f private const val BOTTOM_SHEET_HANDLE_WIDTH_PERCENT = 0.1f
@ -136,6 +135,7 @@ internal fun TranslationsOptionsAnimation(
internal fun TranslationsDialog( internal fun TranslationsDialog(
translationsDialogState: TranslationsDialogState, translationsDialogState: TranslationsDialogState,
learnMoreUrl: String, learnMoreUrl: String,
showPageSettings: Boolean,
showFirstTime: Boolean = false, showFirstTime: Boolean = false,
onSettingClicked: () -> Unit, onSettingClicked: () -> Unit,
onLearnMoreClicked: () -> Unit, onLearnMoreClicked: () -> Unit,
@ -144,10 +144,10 @@ internal fun TranslationsDialog(
onFromSelected: (Language) -> Unit, onFromSelected: (Language) -> Unit,
onToSelected: (Language) -> Unit, onToSelected: (Language) -> Unit,
) { ) {
FxNimbus.features.translations.recordExposure()
TranslationsDialogBottomSheet( TranslationsDialogBottomSheet(
translationsDialogState = translationsDialogState, translationsDialogState = translationsDialogState,
learnMoreUrl = learnMoreUrl, learnMoreUrl = learnMoreUrl,
showPageSettings = showPageSettings,
showFirstTimeFlow = showFirstTime, showFirstTimeFlow = showFirstTime,
onSettingClicked = onSettingClicked, onSettingClicked = onSettingClicked,
onLearnMoreClicked = onLearnMoreClicked, onLearnMoreClicked = onLearnMoreClicked,
@ -161,6 +161,7 @@ internal fun TranslationsDialog(
@Composable @Composable
internal fun TranslationsOptionsDialog( internal fun TranslationsOptionsDialog(
context: Context, context: Context,
showGlobalSettings: Boolean,
translationPageSettings: TranslationPageSettings? = null, translationPageSettings: TranslationPageSettings? = null,
initialFrom: Language? = null, initialFrom: Language? = null,
onStateChange: (TranslationSettingsOption, Boolean) -> Unit, onStateChange: (TranslationSettingsOption, Boolean) -> Unit,
@ -169,6 +170,7 @@ internal fun TranslationsOptionsDialog(
aboutTranslationClicked: () -> Unit, aboutTranslationClicked: () -> Unit,
) { ) {
TranslationOptionsDialog( TranslationOptionsDialog(
showGlobalSettings = showGlobalSettings,
translationOptionsList = getTranslationSwitchItemList( translationOptionsList = getTranslationSwitchItemList(
translationPageSettings = translationPageSettings, translationPageSettings = translationPageSettings,
initialFrom = initialFrom, initialFrom = initialFrom,

@ -57,7 +57,6 @@ import org.mozilla.fenix.compose.annotation.LightDarkPreview
import org.mozilla.fenix.compose.button.PrimaryButton import org.mozilla.fenix.compose.button.PrimaryButton
import org.mozilla.fenix.compose.button.TertiaryButton import org.mozilla.fenix.compose.button.TertiaryButton
import org.mozilla.fenix.compose.button.TextButton import org.mozilla.fenix.compose.button.TextButton
import org.mozilla.fenix.nimbus.FxNimbus
import org.mozilla.fenix.shopping.ui.ReviewQualityCheckInfoCard import org.mozilla.fenix.shopping.ui.ReviewQualityCheckInfoCard
import org.mozilla.fenix.shopping.ui.ReviewQualityCheckInfoType import org.mozilla.fenix.shopping.ui.ReviewQualityCheckInfoType
import org.mozilla.fenix.theme.FirefoxTheme import org.mozilla.fenix.theme.FirefoxTheme
@ -70,6 +69,7 @@ private val ICON_SIZE = 24.dp
* *
* @param translationsDialogState The current state of the Translations bottom sheet dialog. * @param translationsDialogState The current state of the Translations bottom sheet dialog.
* @param learnMoreUrl The learn more link for translations website. * @param learnMoreUrl The learn more link for translations website.
* @param showPageSettings Whether the entry point to page settings should be shown or not.
* @param showFirstTimeFlow Whether translations first flow should be shown. * @param showFirstTimeFlow Whether translations first flow should be shown.
* @param onSettingClicked Invoked when the user clicks on the settings button. * @param onSettingClicked Invoked when the user clicks on the settings button.
* @param onLearnMoreClicked Invoked when the user clicks on the "Learn More" button. * @param onLearnMoreClicked Invoked when the user clicks on the "Learn More" button.
@ -83,6 +83,7 @@ private val ICON_SIZE = 24.dp
fun TranslationsDialogBottomSheet( fun TranslationsDialogBottomSheet(
translationsDialogState: TranslationsDialogState, translationsDialogState: TranslationsDialogState,
learnMoreUrl: String, learnMoreUrl: String,
showPageSettings: Boolean,
showFirstTimeFlow: Boolean = false, showFirstTimeFlow: Boolean = false,
onSettingClicked: () -> Unit, onSettingClicked: () -> Unit,
onLearnMoreClicked: () -> Unit, onLearnMoreClicked: () -> Unit,
@ -110,6 +111,7 @@ fun TranslationsDialogBottomSheet(
showFirstTime = showFirstTimeFlow, showFirstTime = showFirstTimeFlow,
) )
}, },
showPageSettings = showPageSettings,
onSettingClicked = onSettingClicked, onSettingClicked = onSettingClicked,
) )
@ -434,6 +436,7 @@ private fun TranslationsDialogContentInLandscapeMode(
@Composable @Composable
private fun TranslationsDialogHeader( private fun TranslationsDialogHeader(
title: String, title: String,
showPageSettings: Boolean,
onSettingClicked: () -> Unit, onSettingClicked: () -> Unit,
) { ) {
Row( Row(
@ -450,7 +453,7 @@ private fun TranslationsDialogHeader(
Spacer(modifier = Modifier.width(4.dp)) Spacer(modifier = Modifier.width(4.dp))
if (FxNimbus.features.translations.value().pageSettingsEnabled) { if (showPageSettings) {
IconButton( IconButton(
onClick = { onSettingClicked() }, onClick = { onSettingClicked() },
modifier = Modifier.size(24.dp), modifier = Modifier.size(24.dp),
@ -744,6 +747,7 @@ private fun TranslationsDialogBottomSheetPreview() {
fromLanguages = getTranslateFromLanguageList(), fromLanguages = getTranslateFromLanguageList(),
), ),
learnMoreUrl = "", learnMoreUrl = "",
showPageSettings = true,
showFirstTimeFlow = true, showFirstTimeFlow = true,
onSettingClicked = {}, onSettingClicked = {},
onLearnMoreClicked = {}, onLearnMoreClicked = {},

@ -35,11 +35,13 @@ import mozilla.components.concept.engine.translate.TranslationError
import mozilla.components.lib.state.ext.observeAsComposableState import mozilla.components.lib.state.ext.observeAsComposableState
import mozilla.components.support.base.feature.ViewBoundFeatureWrapper import mozilla.components.support.base.feature.ViewBoundFeatureWrapper
import org.mozilla.fenix.BrowserDirection import org.mozilla.fenix.BrowserDirection
import org.mozilla.fenix.GleanMetrics.Events
import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.requireComponents import org.mozilla.fenix.ext.requireComponents
import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.nimbus.FxNimbus
import org.mozilla.fenix.settings.SupportUtils import org.mozilla.fenix.settings.SupportUtils
import org.mozilla.fenix.theme.FirefoxTheme import org.mozilla.fenix.theme.FirefoxTheme
import org.mozilla.fenix.translations.preferences.downloadlanguages.DownloadLanguageFileDialog import org.mozilla.fenix.translations.preferences.downloadlanguages.DownloadLanguageFileDialog
@ -142,10 +144,13 @@ class TranslationsDialogFragment : BottomSheetDialogFragment() {
} }
}, },
) { ) {
FxNimbus.features.translations.recordExposure()
TranslationsDialogContent( TranslationsDialogContent(
learnMoreUrl = learnMoreUrl, learnMoreUrl = learnMoreUrl,
showPageSettings = FxNimbus.features.translations.value().pageSettingsEnabled,
translationsDialogState = translationsDialogState, translationsDialogState = translationsDialogState,
) { ) {
Events.translationsAction.record(Events.TranslationsActionExtra("page_settings"))
translationsVisibility = false translationsVisibility = false
} }
} }
@ -168,6 +173,7 @@ class TranslationsDialogFragment : BottomSheetDialogFragment() {
) { ) {
TranslationsOptionsDialogContent( TranslationsOptionsDialogContent(
learnMoreUrl = learnMoreUrl, learnMoreUrl = learnMoreUrl,
showGlobalSettings = FxNimbus.features.translations.value().globalSettingsEnabled,
initialFrom = translationsDialogState?.initialFrom, initialFrom = translationsDialogState?.initialFrom,
) { ) {
translationsVisibility = true translationsVisibility = true
@ -217,6 +223,7 @@ class TranslationsDialogFragment : BottomSheetDialogFragment() {
@Composable @Composable
private fun TranslationsDialogContent( private fun TranslationsDialogContent(
learnMoreUrl: String, learnMoreUrl: String,
showPageSettings: Boolean,
translationsDialogState: TranslationsDialogState? = null, translationsDialogState: TranslationsDialogState? = null,
onSettingClicked: () -> Unit, onSettingClicked: () -> Unit,
) { ) {
@ -234,6 +241,7 @@ class TranslationsDialogFragment : BottomSheetDialogFragment() {
TranslationsDialog( TranslationsDialog(
translationsDialogState = translationsDialogState, translationsDialogState = translationsDialogState,
learnMoreUrl = learnMoreUrl, learnMoreUrl = learnMoreUrl,
showPageSettings = showPageSettings,
showFirstTime = requireContext().settings().showFirstTimeTranslation, showFirstTime = requireContext().settings().showFirstTimeTranslation,
onSettingClicked = onSettingClicked, onSettingClicked = onSettingClicked,
onLearnMoreClicked = { openBrowserAndLoad(learnMoreUrl) }, onLearnMoreClicked = { openBrowserAndLoad(learnMoreUrl) },
@ -316,6 +324,7 @@ class TranslationsDialogFragment : BottomSheetDialogFragment() {
@Composable @Composable
private fun TranslationsOptionsDialogContent( private fun TranslationsOptionsDialogContent(
learnMoreUrl: String, learnMoreUrl: String,
showGlobalSettings: Boolean,
initialFrom: Language? = null, initialFrom: Language? = null,
onBackClicked: () -> Unit, onBackClicked: () -> Unit,
) { ) {
@ -327,6 +336,7 @@ class TranslationsDialogFragment : BottomSheetDialogFragment() {
TranslationsOptionsDialog( TranslationsOptionsDialog(
context = requireContext(), context = requireContext(),
translationPageSettings = pageSettingsState, translationPageSettings = pageSettingsState,
showGlobalSettings = showGlobalSettings,
initialFrom = initialFrom, initialFrom = initialFrom,
onStateChange = { type, checked -> onStateChange = { type, checked ->
translationsDialogStore.dispatch( translationsDialogStore.dispatch(
@ -338,6 +348,7 @@ class TranslationsDialogFragment : BottomSheetDialogFragment() {
}, },
onBackClicked = onBackClicked, onBackClicked = onBackClicked,
onTranslationSettingsClicked = { onTranslationSettingsClicked = {
Events.translationsAction.record(Events.TranslationsActionExtra("global_settings"))
findNavController().navigate( findNavController().navigate(
TranslationsDialogFragmentDirections TranslationsDialogFragmentDirections
.actionTranslationsDialogFragmentToTranslationSettingsFragment( .actionTranslationsDialogFragmentToTranslationSettingsFragment(

@ -446,6 +446,7 @@ class DefaultBrowserToolbarControllerTest {
verify(exactly = 0) { mockSettings.reviewQualityCheckCfrDisplayTimeInMillis = any() } verify(exactly = 0) { mockSettings.reviewQualityCheckCfrDisplayTimeInMillis = any() }
} }
@Test
fun handleTranslationsButtonClick() { fun handleTranslationsButtonClick() {
val controller = createController() val controller = createController()
controller.handleTranslationsButtonClick() controller.handleTranslationsButtonClick()
@ -457,6 +458,9 @@ class DefaultBrowserToolbarControllerTest {
), ),
) )
} }
val telemetry = Events.translationsAction.testGetValue()?.firstOrNull()
assertEquals("main_flow_toolbar", telemetry?.extra?.get("item"))
} }
private fun createController( private fun createController(

@ -824,7 +824,7 @@ class DefaultBrowserToolbarMenuControllerTest {
} }
@Test @Test
fun `WHEN the Translations menu item is pressed THEN navigate to translations flow`() = fun `WHEN the Translations menu item is pressed THEN navigate to translations flow AND post telemetry`() =
runTest { runTest {
val item = ToolbarMenu.Item.Translate val item = ToolbarMenu.Item.Translate
@ -841,6 +841,9 @@ class DefaultBrowserToolbarMenuControllerTest {
), ),
) )
} }
val telemetry = Events.translationsAction.testGetValue()?.firstOrNull()
assertEquals("main_flow_browser", telemetry?.extra?.get("item"))
} }
private fun createController( private fun createController(

Loading…
Cancel
Save