Commit 428a9426 authored by Nika Layzell's avatar Nika Layzell
Browse files

Bug 1886852 - Avoid registering unnecessary MessageManager listeners when SHIP...

Bug 1886852 - Avoid registering unnecessary MessageManager listeners when SHIP is enabled, r=smaug, a=dsmith

Differential Revision: https://phabricator.services.mozilla.com/D205377
parent 7b1a7bc7
Loading
Loading
Loading
Loading
+18 −9
Original line number Diff line number Diff line
@@ -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,6 +1607,7 @@ var SessionStoreInternal = {
    // internal data about the window.
    aWindow.__SSi = this._generateWindowID();

    if (!Services.appinfo.sessionHistoryInParent) {
      let mm = aWindow.getGroupMessageManager("browsers");
      MESSAGES.forEach(msg => {
        let listenWhenClosed = CLOSED_MESSAGES.has(msg);
@@ -1607,7 +1615,6 @@ var SessionStoreInternal = {
      });

      // Load the frame script after registering listeners.
    if (!Services.appinfo.sessionHistoryInParent) {
      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);

    if (!Services.appinfo.sessionHistoryInParent) {
      let mm = aWindow.getGroupMessageManager("browsers");
      MESSAGES.forEach(msg => mm.removeMessageListener(msg, this));
    }

    this._saveableClosedWindowData.delete(winData);
    delete aWindow.__SSi;