commit 9f99131633909126f070d2626a77c292940f51e2 parent cd3e4a5df2ba5a4a92f94830c1a681e1cdfb0519 Author: agoloman <agoloman@mozilla.com> Date: Fri, 21 Nov 2025 20:32:56 +0200 Revert "Bug 1997657 - part 2: changes in handling nimbus killswitches r=hsohaney,nrishel" for causing bc failures @browser_asrouter_targeting.js. This reverts commit 76ea50f404a2fd0a0fa09ce1e1bac4fc79f2af18. Revert "Bug 1997657 - Enable backup and restore by default r=hsohaney,dmcintosh,mconley,mstriemer" This reverts commit 4a827df2b32cb5c5f28fc93501afa3a0da2206a9. Diffstat:
15 files changed, 52 insertions(+), 286 deletions(-)
diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js @@ -3438,16 +3438,10 @@ pref("browser.mailto.dualPrompt.dismissXClickMinutes", 1440); // one day pref("browser.backup.enabled", true); // Pref to control whether scheduled backups run or not. pref("browser.backup.scheduled.enabled", false); - -// Prefs to control visibility and usability of the create backup and restore from backup features. -#ifdef XP_WIN - pref("browser.backup.archive.enabled", false); - pref("browser.backup.restore.enabled", false); -#else - pref("browser.backup.archive.enabled", false); - pref("browser.backup.restore.enabled", false); -#endif - +// Pref to control visibility and usability of the create backup feature. +pref("browser.backup.archive.enabled", false); +// Pref to control visibility and usability of the restore from backup feature. +pref("browser.backup.restore.enabled", false); // The number of SQLite database pages to backup per step. pref("browser.backup.sqlite.pages_per_step", 50); // The delay between SQLite database backup steps in milliseconds. diff --git a/browser/components/backup/BackupService.sys.mjs b/browser/components/backup/BackupService.sys.mjs @@ -24,11 +24,7 @@ const BACKUP_DIR_PREF_NAME = "browser.backup.location"; const BACKUP_ERROR_CODE_PREF_NAME = "browser.backup.errorCode"; const SCHEDULED_BACKUPS_ENABLED_PREF_NAME = "browser.backup.scheduled.enabled"; const BACKUP_ARCHIVE_ENABLED_PREF_NAME = "browser.backup.archive.enabled"; -const BACKUP_ARCHIVE_ENABLED_OVERRIDE_PREF_NAME = - "browser.backup.archive.overridePlatformCheck"; const BACKUP_RESTORE_ENABLED_PREF_NAME = "browser.backup.restore.enabled"; -const BACKUP_RESTORE_ENABLED_OVERRIDE_PREF_NAME = - "browser.backup.restore.overridePlatformCheck"; const IDLE_THRESHOLD_SECONDS_PREF_NAME = "browser.backup.scheduled.idle-threshold-seconds"; const MINIMUM_TIME_BETWEEN_BACKUPS_SECONDS_PREF_NAME = @@ -637,17 +633,7 @@ export class BackupService extends EventTarget { // Check if disabled by Nimbus killswitch. const archiveKillswitchTriggered = lazy.NimbusFeatures.backupService.getVariable("archiveKillswitch"); - const archiveOverrideEnabled = Services.prefs.getBoolPref( - BACKUP_ARCHIVE_ENABLED_OVERRIDE_PREF_NAME, - false - ); - // This is explicitly checking for archiveKillswitchTriggered !== false because - // we now also (potentially) want to use this nimbus setting for doing staged rollout - // of the feature. What this means is that if the value is: - // - true: feature is turned off ("killed") - // - undefined: feature is turned off (not launched yet) - // - false: feature is turned on - if (archiveKillswitchTriggered !== false && !archiveOverrideEnabled) { + if (archiveKillswitchTriggered) { return { enabled: false, reason: "Archiving a profile disabled remotely.", @@ -689,20 +675,6 @@ export class BackupService extends EventTarget { }; } - if ( - !this.#osSupportsBackup && - !Services.prefs.getBoolPref( - BACKUP_ARCHIVE_ENABLED_OVERRIDE_PREF_NAME, - false - ) - ) { - return { - enabled: false, - reason: "Backup creation not enabled on this os version yet", - internalReason: "os version", - }; - } - return { enabled: true }; } @@ -715,17 +687,7 @@ export class BackupService extends EventTarget { // Check if disabled by Nimbus killswitch. const restoreKillswitchTriggered = lazy.NimbusFeatures.backupService.getVariable("restoreKillswitch"); - const restoreOverrideEnabled = Services.prefs.getBoolPref( - BACKUP_RESTORE_ENABLED_OVERRIDE_PREF_NAME, - false - ); - // This is explicitly checking for restoreKillswitchTriggered !== false because - // we now also (potentially) want to use this nimbus setting for doing staged rollout - // of the feature. What this means is that if the value is: - // - true: feature is turned off ("killed") - // - undefined: feature is turned off (not launched yet) - // - false: feature is turned on - if (restoreKillswitchTriggered !== false && !restoreOverrideEnabled) { + if (restoreKillswitchTriggered) { return { enabled: false, reason: "Restore from backup disabled remotely.", @@ -766,19 +728,6 @@ export class BackupService extends EventTarget { internalReason: "selectable profiles", }; } - if ( - !this.#osSupportsRestore && - !Services.prefs.getBoolPref( - BACKUP_RESTORE_ENABLED_OVERRIDE_PREF_NAME, - false - ) - ) { - return { - enabled: false, - reason: "Backup restore not enabled on this os version yet", - internalReason: "os version", - }; - } return { enabled: true }; } @@ -871,6 +820,8 @@ export class BackupService extends EventTarget { embeddedComponentPersistentData: {}, recoveryErrorCode: ERRORS.NONE, backupErrorCode: lazy.backupErrorCode, + archiveEnabledStatus: this.archiveEnabledStatus.enabled, + restoreEnabledStatus: this.restoreEnabledStatus.enabled, }; /** @@ -1279,17 +1230,6 @@ export class BackupService extends EventTarget { return this.#instance; } - static checkOsSupportsBackup(osParams) { - // Currently we only want to show Backup on Windows 10 devices. - // The first build of Windows 11 is 22000 - return ( - osParams.name == "Windows_NT" && - osParams.version == "10.0" && - osParams.build && - Number(osParams.build) < 22000 - ); - } - /** * Create a BackupService instance. * @@ -1350,25 +1290,8 @@ export class BackupService extends EventTarget { } Glean.browserBackup.restoredProfileData.set(payload); }); - const osParams = { - name: Services.sysinfo.getProperty("name"), - version: Services.sysinfo.getProperty("version"), - build: Services.sysinfo.getProperty("build"), - }; - this.#osSupportsBackup = BackupService.checkOsSupportsBackup(osParams); - this.#osSupportsRestore = true; - this.#lastSeenArchiveStatus = this.archiveEnabledStatus; - this.#lastSeenRestoreStatus = this.restoreEnabledStatus; } - // Backup is currently limited to Windows 10. Will be populated by constructor - #osSupportsBackup = false; - // Restore is not limited, but leaving this in place if restrictions are needed. - #osSupportsRestore = true; - // Remembering status allows us to notify observers when the status changes - #lastSeenArchiveStatus = false; - #lastSeenRestoreStatus = false; - /** * Returns a reference to a Promise that will resolve with undefined once * postRecovery steps have had a chance to run. This will also be resolved @@ -4216,50 +4139,20 @@ export class BackupService extends EventTarget { * 2. If archive is disabled, clean up any backup files */ #handleStatusChange() { - const archiveStatus = this.archiveEnabledStatus; - const restoreStatus = this.restoreEnabledStatus; // Update the BackupService state before notifying observers about the // state change this.#_state.archiveEnabledStatus = this.archiveEnabledStatus.enabled; this.#_state.restoreEnabledStatus = this.restoreEnabledStatus.enabled; - this.#updateGleanEnablement(archiveStatus, restoreStatus); - if ( - archiveStatus.enabled != this.#lastSeenArchiveStatus || - restoreStatus.enabled != this.#lastSeenRestoreStatus - ) { - this.#lastSeenArchiveStatus = archiveStatus.enabled; - this.#lastSeenRestoreStatus = restoreStatus.enabled; - this.#notifyStatusObservers(); - } - if (!archiveStatus.enabled) { + this.#notifyStatusObservers(); + + if (!this.archiveEnabledStatus.enabled) { // We won't wait for this promise to accept/reject since rejections are // ignored anyways this.cleanupBackupFiles(); } } - #updateGleanEnablement(archiveStatus, restoreStatus) { - Glean.browserBackup.archiveEnabled.set(archiveStatus.enabled); - Glean.browserBackup.restoreEnabled.set(restoreStatus.enabled); - if (!archiveStatus.enabled) { - this.#wasArchivePreviouslyDisabled = true; - Glean.browserBackup.archiveDisabledReason.set( - archiveStatus.internalReason - ); - } else if (this.#wasArchivePreviouslyDisabled) { - Glean.browserBackup.archiveDisabledReason.set("reenabled"); - } - if (!restoreStatus.enabled) { - this.#wasRestorePreviouslyDisabled = true; - Glean.browserBackup.restoreDisabledReason.set( - restoreStatus.internalReason - ); - } else if (this.#wasRestorePreviouslyDisabled) { - Glean.browserBackup.restoreDisabledReason.set("reenabled"); - } - } - /** * Notify any listeners about the availability of the backup service, then * update relevant telemetry metrics. @@ -4270,6 +4163,24 @@ export class BackupService extends EventTarget { ); Services.obs.notifyObservers(null, "backup-service-status-updated"); + + let status = this.archiveEnabledStatus; + Glean.browserBackup.archiveEnabled.set(status.enabled); + if (!status.enabled) { + this.#wasArchivePreviouslyDisabled = true; + Glean.browserBackup.archiveDisabledReason.set(status.internalReason); + } else if (this.#wasArchivePreviouslyDisabled) { + Glean.browserBackup.archiveDisabledReason.set("reenabled"); + } + + status = this.restoreEnabledStatus; + Glean.browserBackup.restoreEnabled.set(status.enabled); + if (!status.enabled) { + this.#wasRestorePreviouslyDisabled = true; + Glean.browserBackup.restoreDisabledReason.set(status.internalReason); + } else if (this.#wasRestorePreviouslyDisabled) { + Glean.browserBackup.restoreDisabledReason.set("reenabled"); + } } async cleanupBackupFiles() { diff --git a/browser/components/backup/metrics.yaml b/browser/components/backup/metrics.yaml @@ -716,7 +716,7 @@ browser.backup: description: > Only set if `browser.backup.enabled` is `false`. Possible reasons are "nimbus", "pref" (non-Nimbus), "policy", "sanitizeOnShutdown", - "selectable profiles", "os version". + "selectable profiles". bugs: - https://bugzilla.mozilla.org/show_bug.cgi?id=1992808 data_reviews: diff --git a/browser/components/backup/tests/browser/browser.toml b/browser/components/backup/tests/browser/browser.toml @@ -4,8 +4,6 @@ prefs = [ "browser.backup.archive.enabled=true", "browser.backup.restore.enabled=true", "browser.backup.scheduled.enabled=false", - "browser.backup.archive.overridePlatformCheck=true", - "browser.backup.restore.overridePlatformCheck=true", ] support-files = [ "head.js", diff --git a/browser/components/backup/tests/chrome/chrome.toml b/browser/components/backup/tests/chrome/chrome.toml @@ -3,8 +3,6 @@ prefs = [ "browser.backup.scheduled.enabled=false", "browser.backup.archive.enabled=true", "browser.backup.restore.enabled=true", - "browser.backup.archive.overridePlatformCheck=true", - "browser.backup.restore.overridePlatformCheck=true", "privacy.sanitize.sanitizeOnShutdown=false" ] support-files = ["head.js"] diff --git a/browser/components/backup/tests/chrome/test_disable_backup_encryption.html b/browser/components/backup/tests/chrome/test_disable_backup_encryption.html @@ -5,7 +5,6 @@ <title>Tests for the disable-backup-encryption component</title> <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> <script src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script> - <script type="application/javascript" src="head.js"></script> <script src="chrome://browser/content/backup/disable-backup-encryption.mjs" type="module" diff --git a/browser/components/backup/tests/chrome/test_restore_from_backup.html b/browser/components/backup/tests/chrome/test_restore_from_backup.html @@ -5,7 +5,6 @@ <title>Tests for the restore-from-backup component</title> <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> <script src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script> - <script type="application/javascript" src="head.js"></script> <script src="chrome://browser/content/backup/restore-from-backup.mjs" type="module" diff --git a/browser/components/backup/tests/chrome/test_turn_off_scheduled_backups.html b/browser/components/backup/tests/chrome/test_turn_off_scheduled_backups.html @@ -5,7 +5,6 @@ <title>Tests for the turn-off-scheduled-backups component</title> <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> <script src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script> - <script type="application/javascript" src="head.js"></script> <script src="chrome://browser/content/backup/turn-off-scheduled-backups.mjs" type="module" diff --git a/browser/components/backup/tests/marionette/test_backup.py b/browser/components/backup/tests/marionette/test_backup.py @@ -27,8 +27,6 @@ class BackupTest(MarionetteTestCase): "browser.backup.log": True, "browser.backup.archive.enabled": True, "browser.backup.restore.enabled": True, - "browser.backup.archive.overridePlatformCheck": True, - "browser.backup.restore.overridePlatformCheck": True, # Necessary to test Session Restore from backup, which relies on # the crash restore mechanism. "browser.sessionstore.resume_from_crash": True, diff --git a/browser/components/backup/tests/xpcshell/test_BackupService.js b/browser/components/backup/tests/xpcshell/test_BackupService.js @@ -1272,14 +1272,15 @@ add_task(async function test_getBackupFileInfo_error_handling() { */ add_task(async function test_changing_prefs_cleanup() { let sandbox = sinon.createSandbox(); - Services.prefs.setBoolPref(BACKUP_ARCHIVE_ENABLED_PREF_NAME, true); - let bs = new BackupService(); - bs.initStatusObservers(); + let bs = BackupService.init(); + let cleanupStub = sandbox.stub(bs, "cleanupBackupFiles"); let statusUpdatePromise = TestUtils.topicObserved( "backup-service-status-updated" ); + Services.prefs.setBoolPref(BACKUP_ARCHIVE_ENABLED_PREF_NAME, false); + await statusUpdatePromise; Assert.equal( @@ -1298,33 +1299,3 @@ add_task(async function test_changing_prefs_cleanup() { Services.prefs.clearUserPref(BACKUP_ARCHIVE_ENABLED_PREF_NAME); }); - -add_task(function test_checkOsSupportsBackup_win10() { - const osParams = { - name: "Windows_NT", - version: "10.0", - build: "20000", - }; - const result = BackupService.checkOsSupportsBackup(osParams); - Assert.ok(result); -}); - -add_task(function test_checkOsSupportsBackup_win11() { - const osParams = { - name: "Windows_NT", - version: "10.0", - build: "22000", - }; - const result = BackupService.checkOsSupportsBackup(osParams); - Assert.ok(!result); -}); - -add_task(function test_checkOsSupportsBackup_linux() { - const osParams = { - name: "Linux", - version: "10.0", - build: "22000", - }; - const result = BackupService.checkOsSupportsBackup(osParams); - Assert.ok(!result); -}); diff --git a/browser/components/backup/tests/xpcshell/test_BackupService_enabled.js b/browser/components/backup/tests/xpcshell/test_BackupService_enabled.js @@ -12,11 +12,7 @@ const { NimbusTestUtils } = ChromeUtils.importESModule( const BACKUP_DIR_PREF_NAME = "browser.backup.location"; const BACKUP_ARCHIVE_ENABLED_PREF_NAME = "browser.backup.archive.enabled"; -const BACKUP_ARCHIVE_ENABLED_OVERRIDE_PREF_NAME = - "browser.backup.archive.overridePlatformCheck"; const BACKUP_RESTORE_ENABLED_PREF_NAME = "browser.backup.restore.enabled"; -const BACKUP_RESTORE_ENABLED_OVERRIDE_PREF_NAME = - "browser.backup.restore.overridePlatformCheck"; const SANITIZE_ON_SHUTDOWN_PREF_NAME = "privacy.sanitize.sanitizeOnShutdown"; const SELECTABLE_PROFILES_CREATED_PREF_NAME = "browser.profiles.created"; @@ -51,32 +47,20 @@ add_setup(async () => { add_task(async function test_archive_killswitch_enrollment() { let cleanupExperiment; - const savedPref = Services.prefs.getBoolPref( - BACKUP_ARCHIVE_ENABLED_OVERRIDE_PREF_NAME, - false - ); await archiveTemplate({ internalReason: "nimbus", async disable() { - Services.prefs.setBoolPref( - BACKUP_ARCHIVE_ENABLED_OVERRIDE_PREF_NAME, - false - ); cleanupExperiment = await NimbusTestUtils.enrollWithFeatureConfig({ featureId: "backupService", value: { archiveKillswitch: true }, }); }, async enable() { - Services.prefs.setBoolPref( - BACKUP_ARCHIVE_ENABLED_OVERRIDE_PREF_NAME, - savedPref - ); await cleanupExperiment(); }, // Nimbus calls onUpdate if any experiments are running, meaning that the // observer service will be notified twice, i.e. one spurious call. - startup: 0, + startup: 1, }); }); @@ -84,7 +68,6 @@ add_task(async function test_archive_enabled_pref() { await archiveTemplate({ internalReason: "pref", async disable() { - Services.prefs.unlockPref(BACKUP_ARCHIVE_ENABLED_PREF_NAME); Services.prefs.setBoolPref(BACKUP_ARCHIVE_ENABLED_PREF_NAME, false); }, async enable() { @@ -94,26 +77,20 @@ add_task(async function test_archive_enabled_pref() { }); add_task(async function test_archive_policy() { - let storedDefault; await archiveTemplate({ internalReason: "policy", - disable: () => { - Services.prefs.unlockPref(BACKUP_ARCHIVE_ENABLED_PREF_NAME); - const defaults = Services.prefs.getDefaultBranch(""); - storedDefault = defaults.getBoolPref(BACKUP_ARCHIVE_ENABLED_PREF_NAME); - defaults.setBoolPref(BACKUP_ARCHIVE_ENABLED_PREF_NAME, false); - defaults.lockPref(BACKUP_ARCHIVE_ENABLED_PREF_NAME); - return 0; + async disable() { + Services.prefs.setBoolPref(BACKUP_ARCHIVE_ENABLED_PREF_NAME, false); + Services.prefs.lockPref(BACKUP_ARCHIVE_ENABLED_PREF_NAME); + return 1; }, - enable: () => { - const defaults = Services.prefs.getDefaultBranch(""); - defaults.setBoolPref(BACKUP_ARCHIVE_ENABLED_PREF_NAME, storedDefault); + async enable() { Services.prefs.unlockPref(BACKUP_ARCHIVE_ENABLED_PREF_NAME); Services.prefs.setBoolPref(BACKUP_ARCHIVE_ENABLED_PREF_NAME, true); - return 0; + return 1; }, // At startup, there wouldn't have been a spurious call. - startup: 0, + startup: -1, }); }); @@ -141,88 +118,22 @@ add_task(async function test_archive_selectable_profiles() { }); }); -add_task(async function test_archive_disabled_unsupported_os() { - const sandbox = sinon.createSandbox(); - const archiveWasEnabled = Services.prefs.getBoolPref( - BACKUP_ARCHIVE_ENABLED_OVERRIDE_PREF_NAME, - false - ); - Services.prefs.setBoolPref(BACKUP_ARCHIVE_ENABLED_OVERRIDE_PREF_NAME, false); - sandbox.stub(BackupService, "checkOsSupportsBackup").returns(false); - const cleanupExperiment = await NimbusTestUtils.enrollWithFeatureConfig({ - featureId: "backupService", - value: { archiveKillswitch: false }, - }); - - try { - const bs = new BackupService(); - const status = bs.archiveEnabledStatus; - Assert.equal(false, status.enabled); - Assert.equal("os version", status.internalReason); - } finally { - sandbox.restore(); - Services.prefs.setBoolPref( - BACKUP_ARCHIVE_ENABLED_OVERRIDE_PREF_NAME, - archiveWasEnabled - ); - await cleanupExperiment(); - } -}); - -add_task(async function test_archive_enabled_supported_os() { - const sandbox = sinon.createSandbox(); - const archiveWasEnabled = Services.prefs.getBoolPref( - BACKUP_ARCHIVE_ENABLED_OVERRIDE_PREF_NAME, - false - ); - Services.prefs.setBoolPref(BACKUP_ARCHIVE_ENABLED_OVERRIDE_PREF_NAME, false); - sandbox.stub(BackupService, "checkOsSupportsBackup").returns(true); - const cleanupExperiment = await NimbusTestUtils.enrollWithFeatureConfig({ - featureId: "backupService", - value: { archiveKillswitch: false }, - }); - try { - const bs = new BackupService(); - const status = bs.archiveEnabledStatus; - Assert.equal(true, status.enabled); - } finally { - sandbox.restore(); - Services.prefs.setBoolPref( - BACKUP_ARCHIVE_ENABLED_OVERRIDE_PREF_NAME, - archiveWasEnabled - ); - await cleanupExperiment(); - } -}); - add_task(async function test_restore_killswitch_enrollment() { let cleanupExperiment; - const savedPref = Services.prefs.getBoolPref( - BACKUP_RESTORE_ENABLED_OVERRIDE_PREF_NAME, - false - ); await restoreTemplate({ internalReason: "nimbus", async disable() { - Services.prefs.setBoolPref( - BACKUP_RESTORE_ENABLED_OVERRIDE_PREF_NAME, - false - ); cleanupExperiment = await NimbusTestUtils.enrollWithFeatureConfig({ featureId: "backupService", value: { restoreKillswitch: true }, }); }, async enable() { - Services.prefs.setBoolPref( - BACKUP_RESTORE_ENABLED_OVERRIDE_PREF_NAME, - savedPref - ); await cleanupExperiment(); }, // Nimbus calls onUpdate if any experiments are running, meaning that the // observer service will be notified twice, i.e. one spurious call. - startup: 0, + startup: 1, }); }); @@ -239,24 +150,20 @@ add_task(async function test_restore_enabled_pref() { }); add_task(async function test_restore_policy() { - let storedDefault; await restoreTemplate({ internalReason: "policy", async disable() { - const defaults = Services.prefs.getDefaultBranch(""); - storedDefault = defaults.getBoolPref(BACKUP_RESTORE_ENABLED_PREF_NAME); - defaults.setBoolPref(BACKUP_RESTORE_ENABLED_PREF_NAME, false); + Services.prefs.setBoolPref(BACKUP_RESTORE_ENABLED_PREF_NAME, false); Services.prefs.lockPref(BACKUP_RESTORE_ENABLED_PREF_NAME); - return 0; + return 1; }, async enable() { Services.prefs.unlockPref(BACKUP_RESTORE_ENABLED_PREF_NAME); - const defaults = Services.prefs.getDefaultBranch(""); - defaults.setBoolPref(BACKUP_RESTORE_ENABLED_PREF_NAME, storedDefault); - return 0; + Services.prefs.setBoolPref(BACKUP_RESTORE_ENABLED_PREF_NAME, true); + return 1; }, // At startup, there wouldn't have been a spurious call. - startup: 0, + startup: -1, }); }); diff --git a/browser/components/backup/tests/xpcshell/test_BackupService_wrongPassword.js b/browser/components/backup/tests/xpcshell/test_BackupService_wrongPassword.js @@ -28,14 +28,12 @@ add_setup(async function () { PathUtils.tempDir, "wrongPasswordTestBackup" ); - bs = new BackupService({ FakeBackupResource1 }); await bs.enableEncryption(correctPassword); testBackupPath = (await bs.createBackup({ profilePath: testBackupDirPath })) .archivePath; registerCleanupFunction(async () => { sandbox.restore(); - bs = null; await IOUtils.remove(testBackupDirPath, { recursive: true }); }); diff --git a/browser/components/backup/tests/xpcshell/xpcshell.toml b/browser/components/backup/tests/xpcshell/xpcshell.toml @@ -1,15 +1,11 @@ [DEFAULT] -run-if = [ - "os != 'android'", -] +run-if = ["os != 'android'"] head = "head.js" firefox-appdir = "browser" prefs = [ "browser.backup.log=true", "browser.backup.archive.enabled=true", "browser.backup.restore.enabled=true", - "browser.backup.archive.overridePlatformCheck=true", - "browser.backup.restore.overridePlatformCheck=true", ] ["test_AddonsBackupResource.js"] @@ -49,9 +45,7 @@ support-files = [ ["test_BackupService_internalPostRecovery.js"] ["test_BackupService_onedrive.js"] -run-if = [ - "os == 'win'", -] +run-if = ["os == 'win'"] run-sequentially = ["true"] # Mock Windows registry interferes with normal operations ["test_BackupService_recoverFromSnapshotFolder.js"] diff --git a/browser/components/preferences/tests/browser.toml b/browser/components/preferences/tests/browser.toml @@ -2,8 +2,6 @@ prefs = [ "extensions.formautofill.addresses.available='on'", "signon.management.page.os-auth.enabled=true", - "browser.backup.archive.overridePlatformCheck=true", - "browser.backup.restore.overridePlatformCheck=true", ] support-files = [ "head.js", diff --git a/toolkit/components/nimbus/FeatureManifest.yaml b/toolkit/components/nimbus/FeatureManifest.yaml @@ -4806,10 +4806,12 @@ backupService: pref: browser.backup.scheduled.minimum-time-between-backups-seconds archiveKillswitch: type: boolean + default: false description: >- Disables backup archiving, overrides all other configs when true. restoreKillswitch: type: boolean + default: false description: >- Disables backup restoration, overrides all other configs when true.