Bug 1336763 - If browser.permitUnload times out in CanCloseWindow, make sure to check the rest of the browsers belonging to other processes before returning a result. r?dao
MozReview-Commit-ID: D59PVfsbDV0
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -6419,21 +6419,32 @@ var IndexedDBPromptHelper = {
function CanCloseWindow() {
// Avoid redundant calls to canClose from showing multiple
// PermitUnload dialogs.
if (Services.startup.shuttingDown || window.skipNextCanClose) {
return true;
}
+ let timedOutProcesses = new WeakSet();
+
for (let browser of gBrowser.browsers) {
+ let pmm = browser.messageManager.processMessageManager;
+
+ if (timedOutProcesses.has(pmm)) {
+ continue;
+ }
+
let {permitUnload, timedOut} = browser.permitUnload();
+
if (timedOut) {
- return true;
- }
+ timedOutProcesses.add(pmm);
+ continue;
+ }
+
if (!permitUnload) {
return false;
}
}
return true;
}
function WindowIsClosing() {