diff --git a/browser/base/content/tabbrowser.xml b/browser/base/content/tabbrowser.xml index 976a888bc678..6ea01ab3a039 100644 --- a/browser/base/content/tabbrowser.xml +++ b/browser/base/content/tabbrowser.xml @@ -2368,12 +2368,12 @@ // processes the event queue and may lead to another removeTab() // call before permitUnload() returns. aTab._pendingPermitUnload = true; - let {permitUnload} = browser.permitUnload(); + let {permitUnload, timedOut} = browser.permitUnload(); delete aTab._pendingPermitUnload; // If we were closed during onbeforeunload, we return false now // so we don't (try to) close the same tab again. Of course, we // also stop if the unload was cancelled by the user: - if (aTab.closing || !permitUnload) { + if (aTab.closing || (!timedOut && !permitUnload)) { // NB: deliberately keep the _closedDuringPermitUnload set to // true so we keep exiting early in case of multiple calls. return false; diff --git a/toolkit/content/widgets/browser.xml b/toolkit/content/widgets/browser.xml index eefc8807b7e5..ead98e871c88 100644 --- a/toolkit/content/widgets/browser.xml +++ b/toolkit/content/widgets/browser.xml @@ -1312,7 +1312,7 @@