tor-browser

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

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:
Mbrowser/app/profile/firefox.js | 3---
Mbrowser/components/backup/resources/SessionStoreBackupResource.sys.mjs | 42------------------------------------------
Mbrowser/components/backup/tests/marionette/test_backup.py | 32--------------------------------
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")