tor-browser

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

commit c2c74067f0488ba9da72bbb84cb28ae8dd951669
parent 9b1b0e1f98cf5249f0135a693f4221d7ede58045
Author: Harsheet <hsohaney@mozilla.com>
Date:   Thu, 23 Oct 2025 11:57:38 +0000

Bug 1995651 - Disable backup for users who have sanitizeOnShutdown turned on. r=fchasen

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

Diffstat:
Mbrowser/components/backup/BackupService.sys.mjs | 22++++++++++++++++++++++
Mbrowser/components/backup/tests/browser/browser_settings.js | 52+++++++++++++++++++++++++++++++---------------------
2 files changed, 53 insertions(+), 21 deletions(-)

diff --git a/browser/components/backup/BackupService.sys.mjs b/browser/components/backup/BackupService.sys.mjs @@ -627,6 +627,13 @@ export class BackupService extends EventTarget { }; } + if (Services.prefs.getBoolPref("privacy.sanitize.sanitizeOnShutdown")) { + return { + enabled: false, + reason: "Backup is disabled for users with sanitizeOnShutdown enabled.", + }; + } + return { enabled: true }; } @@ -653,6 +660,13 @@ export class BackupService extends EventTarget { }; } + if (Services.prefs.getBoolPref("privacy.sanitize.sanitizeOnShutdown")) { + return { + enabled: false, + reason: "Backup is disabled for users with sanitizeOnShutdown enabled.", + }; + } + return { enabled: true }; } @@ -3668,6 +3682,10 @@ export class BackupService extends EventTarget { BACKUP_RESTORE_ENABLED_PREF_NAME, this.#notifyStatusObservers ); + Services.prefs.addObserver( + "privacy.sanitize.sanitizeOnShutdown", + this.#notifyStatusObservers + ); lazy.NimbusFeatures.backupService.onUpdate(this.#notifyStatusObservers); } @@ -3680,6 +3698,10 @@ export class BackupService extends EventTarget { BACKUP_RESTORE_ENABLED_PREF_NAME, this.#notifyStatusObservers ); + Services.prefs.removeObserver( + "privacy.sanitize.sanitizeOnShutdown", + this.#notifyStatusObservers + ); } /** diff --git a/browser/components/backup/tests/browser/browser_settings.js b/browser/components/backup/tests/browser/browser_settings.js @@ -26,6 +26,8 @@ add_task(async function test_preferences_visibility() { await BrowserTestUtils.withNewTab("about:preferences#sync", async browser => { let backupSection = browser.contentDocument.querySelector("#dataBackupGroup"); + + let settings = browser.contentDocument.querySelector("backup-settings"); Assert.ok(backupSection, "Found backup preferences section"); // Our mochitest-browser tests are configured to have the section visible @@ -34,23 +36,34 @@ add_task(async function test_preferences_visibility() { BrowserTestUtils.isVisible(backupSection), "Backup section is visible" ); - }); - await SpecialPowers.pushPrefEnv({ - set: [[BACKUP_ARCHIVE_ENABLED_PREF, false]], - }); + await SpecialPowers.pushPrefEnv({ + set: [["privacy.sanitize.sanitizeOnShutdown", true]], + }); - await BrowserTestUtils.withNewTab("about:preferences#sync", async browser => { - let backupSection = - browser.contentDocument.querySelector("#dataBackupGroup"); - Assert.ok(backupSection, "Found backup preferences section"); + Assert.ok( + !settings.restoreFromBackupEl, + "Backup Restore section is not available" + ); + + Assert.ok( + BrowserTestUtils.isHidden(backupSection), + "Backup section is now hidden" + ); + + await SpecialPowers.popPrefEnv(); + + await SpecialPowers.pushPrefEnv({ + set: [[BACKUP_ARCHIVE_ENABLED_PREF, false]], + }); + + await settings.updateComplete; Assert.ok( BrowserTestUtils.isVisible(backupSection), - "Backup section is still visible" + "Backup section is now visible" ); - let settings = browser.contentDocument.querySelector("backup-settings"); let backupArchiveSection = settings.querySelector("#scheduled-backups"); Assert.ok(!backupArchiveSection, "Backup archive section is not available"); @@ -59,27 +72,24 @@ add_task(async function test_preferences_visibility() { settings.restoreFromBackupEl, "Backup restore section is available" ); - }); - await SpecialPowers.pushPrefEnv({ - set: [[BACKUP_RESTORE_ENABLED_PREF, false]], - }); - await BrowserTestUtils.withNewTab("about:preferences#sync", async browser => { - let settings = browser.contentDocument.querySelector("backup-settings"); + + await SpecialPowers.pushPrefEnv({ + set: [[BACKUP_RESTORE_ENABLED_PREF, false]], + }); + Assert.ok( !settings.restoreFromBackupEl, "Backup Restore section is not available" ); - let backupSection = - browser.contentDocument.querySelector("#dataBackupGroup"); Assert.ok( BrowserTestUtils.isHidden(backupSection), "Backup section is now hidden" ); - }); - await SpecialPowers.popPrefEnv(); - await SpecialPowers.popPrefEnv(); + await SpecialPowers.popPrefEnv(); + await SpecialPowers.popPrefEnv(); + }); }); /**