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:
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",