From 9133ecc82622592cceba6cf22a1f41e1218e7cdd Mon Sep 17 00:00:00 2001 From: 117649 Date: Thu, 16 Jan 2025 17:01:11 +0800 Subject: [PATCH] fix: ESM-ification 2 --- resource/modules/Storage.jsm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/resource/modules/Storage.jsm b/resource/modules/Storage.jsm index 53d49ff..d7b9023 100644 --- a/resource/modules/Storage.jsm +++ b/resource/modules/Storage.jsm @@ -193,6 +193,34 @@ Modules.LOADMODULE = function() { Services.obs.addObserver(Storage._obs, "sessionstore-initiating-manual-restore"); window.addEventListener("SSWindowRestoring", Storage._WindowRestoring); window.addEventListener("SSWindowRestored", Storage._WindowRestored); + + new Promise(async r => { + if (ChromeUtils.importESModule("resource:///modules/sessionstore/SessionMigration.sys.mjs").SessionMigration.migrate['_Piggyback_']) + return; + var t = ChromeUtils.importESModule("resource:///modules/sessionstore/SessionMigration.sys.mjs").SessionMigration.migrate; + let a = {}; + Services.scriptloader.loadSubScript("data:text/javascript," + encodeURIComponent((await (await window.fetch('resource:///modules/sessionstore/SessionMigration.sys.mjs')).text()).replace(`return tab;`,` + + // The tabgroup info is in the extData, so we need to get it out. + if (oldTab.extData && tabview - tab in oldTab.extData) { + tab.extData = { [${Storage.kTabIdentifier}]: oldTab.extData[${Storage.kTabIdentifier}] }; + } + + return tab;` + ).replace(`win.selected = oldWin.selected;`,` + // There are various tabgroup-related attributes that we need to get out of the session restore data for the window, too. + if (oldWin.extData) { + for (let k of Object.keys(oldWin.extData)) { + if (k.startsWith('tabview-')) { + win.extData[k] = oldWin.extData[k]; + } + } + } + + win.selected = oldWin.selected;`).replace(/\nexport /,'')),a); + ChromeUtils.importESModule("resource:///modules/sessionstore/SessionMigration.sys.mjs").SessionMigration.migrate = a.SessionMigration.migrate; + ChromeUtils.importESModule("resource:///modules/sessionstore/SessionMigration.sys.mjs").SessionMigration.migrate['_Piggyback_'] = t; + }); }; Modules.UNLOADMODULE = function() {