From 263927c717e7eb7146091839930f36424d7bd5bf Mon Sep 17 00:00:00 2001 From: janekptacijarabaci Date: Wed, 11 Apr 2018 12:12:49 +0200 Subject: [PALEMOON] Login Manager Prompter: win.gBrowser is undefined --- toolkit/components/passwordmgr/nsLoginManagerPrompter.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'toolkit/components') diff --git a/toolkit/components/passwordmgr/nsLoginManagerPrompter.js b/toolkit/components/passwordmgr/nsLoginManagerPrompter.js index b66489234..08c1e59e6 100644 --- a/toolkit/components/passwordmgr/nsLoginManagerPrompter.js +++ b/toolkit/components/passwordmgr/nsLoginManagerPrompter.js @@ -1408,9 +1408,11 @@ LoginManagerPrompter.prototype = { let windows = Services.wm.getEnumerator(null); while (windows.hasMoreElements()) { let win = windows.getNext(); - let browser = win.gBrowser.getBrowserForContentWindow(aWindow); - if (browser) { - return { win, browser }; + if (win.gBrowser) { + let browser = win.gBrowser.getBrowserForContentWindow(aWindow); + if (browser) { + return { win, browser }; + } } } return null; -- cgit v1.2.3 From 6d10eb1aff1f927a9a1ac0cf2dc49a179a8b1529 Mon Sep 17 00:00:00 2001 From: janekptacijarabaci Date: Thu, 12 Apr 2018 07:06:16 +0200 Subject: Revert "[PALEMOON] Login Manager Prompter: win.gBrowser is undefined" This reverts commit 263927c717e7eb7146091839930f36424d7bd5bf. --- toolkit/components/passwordmgr/nsLoginManagerPrompter.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'toolkit/components') diff --git a/toolkit/components/passwordmgr/nsLoginManagerPrompter.js b/toolkit/components/passwordmgr/nsLoginManagerPrompter.js index 08c1e59e6..b66489234 100644 --- a/toolkit/components/passwordmgr/nsLoginManagerPrompter.js +++ b/toolkit/components/passwordmgr/nsLoginManagerPrompter.js @@ -1408,11 +1408,9 @@ LoginManagerPrompter.prototype = { let windows = Services.wm.getEnumerator(null); while (windows.hasMoreElements()) { let win = windows.getNext(); - if (win.gBrowser) { - let browser = win.gBrowser.getBrowserForContentWindow(aWindow); - if (browser) { - return { win, browser }; - } + let browser = win.gBrowser.getBrowserForContentWindow(aWindow); + if (browser) { + return { win, browser }; } } return null; -- cgit v1.2.3 From 33f860b25e1db06f18d06eba9fcdd2de895d9dbc Mon Sep 17 00:00:00 2001 From: janekptacijarabaci Date: Thu, 12 Apr 2018 09:27:21 +0200 Subject: moebius#117: Login Manager Prompter - auth: Throws an errors https://github.com/MoonchildProductions/moebius/pull/117 --- .../passwordmgr/nsLoginManagerPrompter.js | 29 +++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'toolkit/components') diff --git a/toolkit/components/passwordmgr/nsLoginManagerPrompter.js b/toolkit/components/passwordmgr/nsLoginManagerPrompter.js index b66489234..720e80446 100644 --- a/toolkit/components/passwordmgr/nsLoginManagerPrompter.js +++ b/toolkit/components/passwordmgr/nsLoginManagerPrompter.js @@ -808,6 +808,9 @@ LoginManagerPrompter.prototype = { */ _showLoginCaptureDoorhanger(login, type) { let { browser } = this._getNotifyWindow(); + if (!browser) { + return; + } let saveMsgNames = { prompt: login.username === "" ? "rememberLoginMsgNoUser" @@ -1405,10 +1408,34 @@ LoginManagerPrompter.prototype = { * Given a content DOM window, returns the chrome window and browser it's in. */ _getChromeWindow: function (aWindow) { + // Handle non-e10s toolkit consumers. + if (!Cu.isCrossProcessWrapper(aWindow)) { + let chromeWin = aWindow.QueryInterface(Ci.nsIInterfaceRequestor) + .getInterface(Ci.nsIWebNavigation) + .QueryInterface(Ci.nsIDocShell) + .chromeEventHandler.ownerGlobal; + if (!chromeWin) { + return null; + } + + // gBrowser only exists on some apps, like Firefox. + let tabbrowser = chromeWin.gBrowser || + (typeof chromeWin.getBrowser == "function" ? chromeWin.getBrowser() : null); + // At least serve the chrome window if getBrowser() + // or getBrowserForContentWindow() are not supported. + if (!tabbrowser || typeof tabbrowser.getBrowserForContentWindow != "function") { + return { win: chromeWin }; + } + + let browser = tabbrowser.getBrowserForContentWindow(aWindow); + return { win: chromeWin, browser }; + } + let windows = Services.wm.getEnumerator(null); while (windows.hasMoreElements()) { let win = windows.getNext(); - let browser = win.gBrowser.getBrowserForContentWindow(aWindow); + let tabbrowser = win.gBrowser || win.getBrowser(); + let browser = tabbrowser.getBrowserForContentWindow(aWindow); if (browser) { return { win, browser }; } -- cgit v1.2.3