commit 18ff6e0d20dd477271c1f59da6420b29a5aaf783
parent b05a254d771304b0a594a64f9a10a1f0771ff577
Author: Atila Butkovits <abutkovits@mozilla.com>
Date: Tue, 4 Nov 2025 04:14:39 +0200
Revert "Bug 1993688 - Flush tab state before getting setting store state to backup. r=mconley,sthompson" for causing mass failures.
This reverts commit 75ff40df4021290701c453be1eaaf120637d04b6.
Diffstat:
3 files changed, 0 insertions(+), 77 deletions(-)
diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js
@@ -3464,9 +3464,6 @@ pref("browser.backup.disabled-on-idle-backup-retry", false);
// removing for any reason.
pref("browser.backup.max-num-unremovable-staging-items", 5);
pref("browser.backup.scheduled.user-disabled", false);
-// How many milliseconds to wait for tab state to flush before continuing the
-// backup process.
-pref("browser.backup.tab-flush-timeout", 5000)
#ifdef NIGHTLY_BUILD
// Pref to enable the new profiles
diff --git a/browser/components/backup/resources/SessionStoreBackupResource.sys.mjs b/browser/components/backup/resources/SessionStoreBackupResource.sys.mjs
@@ -2,8 +2,6 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";
-
import {
BackupResource,
bytesToFuzzyKilobytes,
@@ -12,28 +10,9 @@ import {
const lazy = {};
ChromeUtils.defineESModuleGetters(lazy, {
- BrowserWindowTracker: "resource:///modules/BrowserWindowTracker.sys.mjs",
SessionStore: "resource:///modules/sessionstore/SessionStore.sys.mjs",
- setTimeout: "resource://gre/modules/Timer.sys.mjs",
- TabStateFlusher: "resource:///modules/sessionstore/TabStateFlusher.sys.mjs",
-});
-
-ChromeUtils.defineLazyGetter(lazy, "logConsole", function () {
- return console.createInstance({
- prefix: "SessionStoreBackupResource",
- maxLogLevel: Services.prefs.getBoolPref("browser.backup.log", false)
- ? "Debug"
- : "Warn",
- });
});
-XPCOMUtils.defineLazyPreferenceGetter(
- lazy,
- "TAB_FLUSH_TIMEOUT",
- "browser.backup.tab-flush-timeout",
- 5000
-);
-
/**
* Class representing Session store related files within a user profile.
*/
@@ -65,27 +44,6 @@ export class SessionStoreBackupResource extends BackupResource {
profilePath = PathUtils.profileDir,
_isEncrypting = false
) {
- // Flush tab state so backups receive the correct url to restore.
- await Promise.race([
- Promise.allSettled(
- lazy.BrowserWindowTracker.orderedWindows.map(
- lazy.TabStateFlusher.flushWindow
- )
- ),
- new Promise((_, reject) =>
- lazy.setTimeout(reject, lazy.TAB_FLUSH_TIMEOUT, { timeout: true })
- ),
- ]).catch(e => {
- if (e?.timeout) {
- lazy.logConsole.warn("Timed out waiting while flushing tab state.");
- } else {
- lazy.logConsole.error(
- "Unrecognized error while flushing tab state.",
- e
- );
- }
- });
-
let sessionStoreState = this.#sessionStore.getCurrentState(true);
let sessionStorePath = PathUtils.join(stagingPath, "sessionstore.jsonlz4");
diff --git a/browser/components/backup/tests/marionette/test_backup.py b/browser/components/backup/tests/marionette/test_backup.py
@@ -27,9 +27,6 @@ class BackupTest(MarionetteTestCase):
"browser.backup.log": True,
"browser.backup.archive.enabled": True,
"browser.backup.restore.enabled": True,
- # Necessary to test Session Restore from backup, which relies on
- # the crash restore mechanism.
- "browser.sessionstore.resume_from_crash": True,
}
)
@@ -97,11 +94,6 @@ class BackupTest(MarionetteTestCase):
# to be flushed to disk and to be made ready for backup
self.marionette.restart()
- # We want to validate that TabState is flushed before serializing the
- # backup, so run this test in the same browser instance we invoke the
- # backup in.
- self.add_test_sessionstore()
-
# Put the OSKeyStore label back, since it would have been cleared
# from memory during the restart.
self.marionette.execute_script(
@@ -262,7 +254,6 @@ class BackupTest(MarionetteTestCase):
self.verify_recovered_preferences()
self.verify_recovered_permissions()
self.verify_recovered_payment_methods(osKeyStoreLabel)
- self.verify_recovered_sessionstore()
# Clean up the temporary OSKeyStore label
self.marionette.execute_async_script(
@@ -868,26 +859,3 @@ class BackupTest(MarionetteTestCase):
script_args=[osKeyStoreLabel],
)
self.assertTrue(cardExists)
-
- def add_test_sessionstore(self):
- with self.marionette.using_context("content"):
- self.marionette.navigate("about:mozilla")
-
- def verify_recovered_sessionstore(self):
- [tabCount, url] = self.marionette.execute_script(
- """
- const { SessionStore } = ChromeUtils.importESModule(
- "resource:///modules/sessionstore/SessionStore.sys.mjs"
- );
- const session = SessionStore.getCurrentState(true);
- const win = session.windows[0];
- const tabLen = win.tabs.length;
- const tab = win.tabs[0];
- const entry = tab.entries[0];
- const url = entry.url;
- return [tabLen, url];
- """
- )
-
- self.assertEqual(tabCount, 1)
- self.assertEqual(url, "about:mozilla")