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 1280
Changed: yurys@chromium.org Fri 13 Aug 2021 07:00:48 PM PDT 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 => { await new Promise((resolve => {
const listener = { const listener = {
onCloseWindow: window => { 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); Services.wm.removeListener(listener);
resolve(); resolve();
} }

View file

@ -1,2 +1,2 @@
1284 1285
Changed: yurys@chromium.org Fri 13 Aug 2021 07:00:24 PM PDT 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 => { await new Promise((resolve => {
const listener = { const listener = {
onCloseWindow: window => { 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); Services.wm.removeListener(listener);
resolve(); resolve();
} }