# HG changeset patch # User Malte Jürgens # Date 1722462820 -7200 # Wed Jul 31 23:53:40 2024 +0200 # Node ID 457872813e06bcf474803cf0c9519809fbc5806a # Parent 265f9fb218cd9395f36a16714b1f295f4a996b76 Bug 1910312 - Unbreak privacy and security settings when MOZ_DATA_REPORTING is disabled r?#settings-reviewers! Disabling `MOZ_DATA_REPORTING` results in the `PREF_UPLOAD_ENABLED` pref not being loaded with `Preferences.add`. This means `Preferences.get(PREF_UPLOAD_ENABLED)` can possibly be `null`, which was previously not handled and resulted in an error for the whole privacy.js file. So only call `dataCollectionCheckboxHandler` for the `privateAttribution` checkbox if `MOZ_DATA_REPORTING` is enabled (otherwise the `privateAttribution` checkbox also just doesn't exist). Also move the call into separate `initPrivateAttributionCheckbox` function to be more consistent with previous code. Differential Revision: https://phabricator.services.mozilla.com/D218265 diff --git a/browser/components/preferences/privacy.js b/browser/components/preferences/privacy.js --- a/browser/components/preferences/privacy.js +++ b/browser/components/preferences/privacy.js @@ -339,7 +339,7 @@ function dataCollectionCheckboxHandler({ !collectionEnabled || Services.prefs.prefIsLocked(pref) || isDisabled(); } - Preferences.get(PREF_UPLOAD_ENABLED).on("change", updateCheckbox); + Preferences.get(PREF_UPLOAD_ENABLED)?.on("change", updateCheckbox); updateCheckbox(); } @@ -1267,17 +1267,8 @@ var gPrivacyPane = { this.initOptOutStudyCheckbox(); } this.initAddonRecommendationsCheckbox(); + this.initPrivateAttributionCheckbox(); } - dataCollectionCheckboxHandler({ - checkbox: document.getElementById("privateAttribution"), - pref: PREF_PRIVATE_ATTRIBUTION_ENABLED, - matchPref() { - return AppConstants.MOZ_TELEMETRY_REPORTING; - }, - isDisabled() { - return !AppConstants.MOZ_TELEMETRY_REPORTING; - }, - }); let signonBundle = document.getElementById("signonBundle"); let pkiBundle = document.getElementById("pkiBundle"); @@ -3568,6 +3559,19 @@ var gPrivacyPane = { }); }, + initPrivateAttributionCheckbox() { + dataCollectionCheckboxHandler({ + checkbox: document.getElementById("privateAttribution"), + pref: PREF_PRIVATE_ATTRIBUTION_ENABLED, + matchPref() { + return AppConstants.MOZ_TELEMETRY_REPORTING; + }, + isDisabled() { + return !AppConstants.MOZ_TELEMETRY_REPORTING; + }, + }); + }, + observe(aSubject, aTopic) { switch (aTopic) { case "sitedatamanager:updating-sites":