tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit b4bce53405fd136b68e6fcf6523f56985d895f2e
parent 4a9dbea59fa629d3a50597561fdb551976c1044b
Author: fmasalha <fmasalha@mozilla.com>
Date:   Mon, 15 Dec 2025 21:14:44 +0000

Bug 2004402 - Hid/Showed campaign mesaurment based on hasMadeMarketingTelemetrySelection setting. r=android-reviewers,sfamisa

Differential Revision: https://phabricator.services.mozilla.com/D275318

Diffstat:
Mmobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/datachoices/DataChoicesAction.kt | 1+
Mmobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/datachoices/DataChoicesMiddleware.kt | 1+
Mmobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/datachoices/DataChoicesReducer.kt | 1+
Mmobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/datachoices/DataChoicesScreen.kt | 40+++++++++++++++++++++++++++++-----------
Mmobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/datachoices/DataChoicesState.kt | 11+++++++++++
Mmobile/android/fenix/app/src/test/java/org/mozilla/fenix/dataChoicesStore/DataChoicesReducerTest.kt | 2++
6 files changed, 45 insertions(+), 11 deletions(-)

diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/datachoices/DataChoicesAction.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/datachoices/DataChoicesAction.kt @@ -30,6 +30,7 @@ internal data class SettingsLoaded( val telemetryEnabled: Boolean, val usagePingEnabled: Boolean, val studiesEnabled: Boolean, + val showMeasurementDataSection: Boolean, val measurementDataEnabled: Boolean, val crashReportOption: CrashReportOption, ) : DataChoicesAction diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/datachoices/DataChoicesMiddleware.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/datachoices/DataChoicesMiddleware.kt @@ -46,6 +46,7 @@ internal class DataChoicesMiddleware( telemetryEnabled = settings.isTelemetryEnabled, usagePingEnabled = settings.isDailyUsagePingEnabled, studiesEnabled = settings.isExperimentationEnabled, + showMeasurementDataSection = settings.hasMadeMarketingTelemetrySelection, measurementDataEnabled = settings.isMarketingTelemetryEnabled, crashReportOption = crashReportCache.getReportOption(), ), diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/datachoices/DataChoicesReducer.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/datachoices/DataChoicesReducer.kt @@ -24,6 +24,7 @@ internal fun dataChoicesReducer(state: DataChoicesState, action: DataChoicesActi telemetryEnabled = action.telemetryEnabled, usagePingEnabled = action.usagePingEnabled, studiesEnabled = action.studiesEnabled, + showMeasurementDataSection = action.showMeasurementDataSection, measurementDataEnabled = action.measurementDataEnabled, selectedCrashOption = action.crashReportOption, ) diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/datachoices/DataChoicesScreen.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/datachoices/DataChoicesScreen.kt @@ -72,7 +72,7 @@ internal fun DataChoicesScreen( onStudiesClick = onStudiesClick, onTelemetryToggle = onTelemetryToggle, onUsagePingToggle = onUsagePingToggle, - onMarketingDataToggled = onMarketingDataToggled, + onMeasurementDataToggled = onMarketingDataToggled, onCrashOptionSelected = onCrashOptionSelected, learnMoreTechnicalData = learnMoreTechnicalData, learnMoreDailyUsage = learnMoreDailyUsage, @@ -89,7 +89,7 @@ internal fun DataChoicesUi( onStudiesClick: () -> Unit, onTelemetryToggle: () -> Unit, onUsagePingToggle: () -> Unit, - onMarketingDataToggled: () -> Unit, + onMeasurementDataToggled: () -> Unit, onCrashOptionSelected: (CrashReportOption) -> Unit, learnMoreTechnicalData: () -> Unit, learnMoreDailyUsage: () -> Unit, @@ -147,15 +147,17 @@ internal fun DataChoicesUi( HorizontalDivider(modifier = Modifier.padding(top = 16.dp, bottom = 24.dp)) // Campaign measurement Section - TogglePreferenceSection( - categoryTitle = stringResource(R.string.preferences_marketing_data_title), - preferenceTitle = stringResource(R.string.preferences_marketing_data_2), - preferenceSummary = stringResource(R.string.preferences_marketing_data_description_4), - learnMoreText = stringResource(R.string.preferences_marketing_data_learn_more), - isToggled = state.measurementDataEnabled, - onToggleChanged = onMarketingDataToggled, - onLearnMoreClicked = learnMoreMarketingData, - ) + if (state.showMeasurementDataSection) { + TogglePreferenceSection( + categoryTitle = stringResource(R.string.preferences_marketing_data_title), + preferenceTitle = stringResource(R.string.preferences_marketing_data_2), + preferenceSummary = stringResource(R.string.preferences_marketing_data_description_4), + learnMoreText = stringResource(R.string.preferences_marketing_data_learn_more), + isToggled = state.measurementDataEnabled, + onToggleChanged = onMeasurementDataToggled, + onLearnMoreClicked = learnMoreMarketingData, + ) + } } } @@ -384,3 +386,19 @@ private fun DataChoicesTelemetryDisabledPrivatePreview() { ) } } + +@PreviewLightDark +@Composable +private fun DataChoicesMarketingSectionDisabledPreview() { + FirefoxTheme { + DataChoicesScreen( + store = DataChoicesStore( + initialState = DataChoicesState( + studiesEnabled = false, + telemetryEnabled = false, + showMeasurementDataSection = false, + ), + ), + ) + } +} diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/datachoices/DataChoicesState.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/datachoices/DataChoicesState.kt @@ -7,10 +7,21 @@ package org.mozilla.fenix.settings.datachoices import mozilla.components.lib.crash.store.CrashReportOption import mozilla.components.lib.state.State +/** + * Represents the state of the data collections screen + * + * @property telemetryEnabled Whether telemetry data collection is enabled. + * @property usagePingEnabled Whether usage pings are sent. + * @property studiesEnabled The user's preference for participation in studies or experiments. + * @property showMeasurementDataSection Whether the UI section related to measurement data should be visible. + * @property measurementDataEnabled The user's preference for sending of measurement data. + * @property selectedCrashOption The user's selected preference for handling crash reports. + */ internal data class DataChoicesState( val telemetryEnabled: Boolean = true, val usagePingEnabled: Boolean = true, val studiesEnabled: Boolean = true, + val showMeasurementDataSection: Boolean = true, val measurementDataEnabled: Boolean = true, val selectedCrashOption: CrashReportOption = CrashReportOption.Ask, ) : State diff --git a/mobile/android/fenix/app/src/test/java/org/mozilla/fenix/dataChoicesStore/DataChoicesReducerTest.kt b/mobile/android/fenix/app/src/test/java/org/mozilla/fenix/dataChoicesStore/DataChoicesReducerTest.kt @@ -53,6 +53,7 @@ class DataChoicesReducerTest { telemetryEnabled = true, usagePingEnabled = true, studiesEnabled = true, + showMeasurementDataSection = true, measurementDataEnabled = true, crashReportOption = CrashReportOption.Never, ) @@ -60,6 +61,7 @@ class DataChoicesReducerTest { assertEquals(true, after.telemetryEnabled) assertEquals(true, after.usagePingEnabled) assertEquals(true, after.studiesEnabled) + assertEquals(true, after.showMeasurementDataSection) assertEquals(true, after.measurementDataEnabled) assertEquals(CrashReportOption.Never, after.selectedCrashOption) }