tor-browser

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

commit ed1aba4a6a9ebfe1e5b2f0765fe4c571252ac46c
parent 63f4c32db3ccc74d1220d820ae9d758aac7f465e
Author: fmasalha <fmasalha@mozilla.com>
Date:   Wed, 10 Dec 2025 19:24:19 +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+++++++++++
5 files changed, 43 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