browser(firefox): fix a race between Browser.close and closing context (#8294)

This commit is contained in:
Dmitry Gozman 2021-08-18 14:47:21 -07:00 committed by GitHub
parent 4d7956c70b
commit 4344b3810a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 16 additions and 6 deletions

View File

@ -1,2 +1,2 @@
1279
Changed: yurys@chromium.org Fri 13 Aug 2021 07:00:48 PM PDT
1280
Changed: dgozman@gmail.com Wed Aug 18 14:34:33 PDT 2021

View File

@ -305,7 +305,12 @@ async function waitForWindowClosed(browserWindow) {
await new Promise((resolve => {
const listener = {
onCloseWindow: window => {
if (window === browserWindow) {
let domWindow;
if (window instanceof Ci.nsIAppWindow)
domWindow = window.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowInternal || Ci.nsIDOMWindow);
else
domWindow = window;
if (domWindow === browserWindow) {
Services.wm.removeListener(listener);
resolve();
}

View File

@ -1,2 +1,2 @@
1284
Changed: yurys@chromium.org Fri 13 Aug 2021 07:00:24 PM PDT
1285
Changed: dgozman@gmail.com Wed Aug 18 14:34:33 PDT 2021

View File

@ -305,7 +305,12 @@ async function waitForWindowClosed(browserWindow) {
await new Promise((resolve => {
const listener = {
onCloseWindow: window => {
if (window === browserWindow) {
let domWindow;
if (window instanceof Ci.nsIAppWindow)
domWindow = window.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowInternal || Ci.nsIDOMWindow);
else
domWindow = window;
if (domWindow === browserWindow) {
Services.wm.removeListener(listener);
resolve();
}