tor-browser

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

commit f9130a1b598be9430150303ee15b217fd023d188
parent 2bd761adb4f088862a8cb692a3b56bab789d8307
Author: Duncan McIntosh <dmcintosh@mozilla.com>
Date:   Mon,  3 Nov 2025 21:53:04 +0000

Bug 1997391 - Part 3: Add a disable reason for enterprise policy within telemetry. r=mkaply,cdupuis

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

Diffstat:
Mbrowser/components/backup/BackupService.sys.mjs | 18++++++++++++++++++
Mbrowser/components/backup/tests/xpcshell/test_BackupService_enabled.js | 36++++++++++++++++++++++++++++++++++++
2 files changed, 54 insertions(+), 0 deletions(-)

diff --git a/browser/components/backup/BackupService.sys.mjs b/browser/components/backup/BackupService.sys.mjs @@ -626,6 +626,15 @@ export class BackupService extends EventTarget { } if (!Services.prefs.getBoolPref(BACKUP_ARCHIVE_ENABLED_PREF_NAME)) { + if (Services.prefs.prefIsLocked(BACKUP_ARCHIVE_ENABLED_PREF_NAME)) { + // If it's locked, assume it was set by an enterprise policy. + return { + enabled: false, + reason: "Archiving a profile disabled by policy.", + internalReason: "policy", + }; + } + return { enabled: false, reason: "Archiving a profile disabled by user pref.", @@ -671,6 +680,15 @@ export class BackupService extends EventTarget { } if (!Services.prefs.getBoolPref(BACKUP_RESTORE_ENABLED_PREF_NAME)) { + if (Services.prefs.prefIsLocked(BACKUP_RESTORE_ENABLED_PREF_NAME)) { + // If it's locked, assume it was set by an enterprise policy. + return { + enabled: false, + reason: "Restoring a profile disabled by policy.", + internalReason: "policy", + }; + } + return { enabled: false, reason: "Restoring a profile disabled by user pref.", diff --git a/browser/components/backup/tests/xpcshell/test_BackupService_enabled.js b/browser/components/backup/tests/xpcshell/test_BackupService_enabled.js @@ -76,6 +76,24 @@ add_task(async function test_archive_enabled_pref() { }); }); +add_task(async function test_archive_policy() { + await archiveTemplate({ + internalReason: "policy", + async disable() { + Services.prefs.setBoolPref(BACKUP_ARCHIVE_ENABLED_PREF_NAME, false); + Services.prefs.lockPref(BACKUP_ARCHIVE_ENABLED_PREF_NAME); + return 1; + }, + async enable() { + Services.prefs.unlockPref(BACKUP_ARCHIVE_ENABLED_PREF_NAME); + Services.prefs.setBoolPref(BACKUP_ARCHIVE_ENABLED_PREF_NAME, true); + return 1; + }, + // At startup, there wouldn't have been a spurious call. + startup: -1, + }); +}); + add_task(async function test_archive_sanitize_on_shutdown() { await archiveTemplate({ internalReason: "sanitizeOnShutdown", @@ -131,6 +149,24 @@ add_task(async function test_restore_enabled_pref() { }); }); +add_task(async function test_restore_policy() { + await restoreTemplate({ + internalReason: "policy", + async disable() { + Services.prefs.setBoolPref(BACKUP_RESTORE_ENABLED_PREF_NAME, false); + Services.prefs.lockPref(BACKUP_RESTORE_ENABLED_PREF_NAME); + return 1; + }, + async enable() { + Services.prefs.unlockPref(BACKUP_RESTORE_ENABLED_PREF_NAME); + Services.prefs.setBoolPref(BACKUP_RESTORE_ENABLED_PREF_NAME, true); + return 1; + }, + // At startup, there wouldn't have been a spurious call. + startup: -1, + }); +}); + add_task(async function test_restore_sanitize_on_shutdown() { await restoreTemplate({ internalReason: "sanitizeOnShutdown",