ma1 pushed to branch base-browser-115.9.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits: 8e8ac7a1 by Nika Layzell at 2024-03-26T18:23:53+01:00 Bug 1886852 - Avoid registering unnecessary MessageManager listeners when SHIP is enabled, r=smaug!
Differential Revision: https://phabricator.services.mozilla.com/D205377 - - - - -
1 changed file:
- browser/components/sessionstore/SessionStore.sys.mjs
Changes:
===================================== browser/components/sessionstore/SessionStore.sys.mjs ===================================== @@ -1422,6 +1422,13 @@ var SessionStoreInternal = { * and thus enables communication with OOP tabs. */ receiveMessage(aMessage) { + if (Services.appinfo.sessionHistoryInParent) { + throw new Error( + `received unexpected message '${aMessage.name}' with ` + + `sessionHistoryInParent enabled` + ); + } + // If we got here, that means we're dealing with a frame message // manager message, so the target will be a xul:browser. var browser = aMessage.target; @@ -1600,14 +1607,14 @@ var SessionStoreInternal = { // internal data about the window. aWindow.__SSi = this._generateWindowID();
- let mm = aWindow.getGroupMessageManager("browsers"); - MESSAGES.forEach(msg => { - let listenWhenClosed = CLOSED_MESSAGES.has(msg); - mm.addMessageListener(msg, this, listenWhenClosed); - }); - - // Load the frame script after registering listeners. if (!Services.appinfo.sessionHistoryInParent) { + let mm = aWindow.getGroupMessageManager("browsers"); + MESSAGES.forEach(msg => { + let listenWhenClosed = CLOSED_MESSAGES.has(msg); + mm.addMessageListener(msg, this, listenWhenClosed); + }); + + // Load the frame script after registering listeners. mm.loadFrameScript( "chrome://browser/content/content-sessionStore.js", true, @@ -2083,8 +2090,10 @@ var SessionStoreInternal = { // Cache the window state until it is completely gone. DyingWindowCache.set(aWindow, winData);
- let mm = aWindow.getGroupMessageManager("browsers"); - MESSAGES.forEach(msg => mm.removeMessageListener(msg, this)); + if (!Services.appinfo.sessionHistoryInParent) { + let mm = aWindow.getGroupMessageManager("browsers"); + MESSAGES.forEach(msg => mm.removeMessageListener(msg, this)); + }
this._saveableClosedWindowData.delete(winData); delete aWindow.__SSi;
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/8e8ac7a1...
tbb-commits@lists.torproject.org