From 4344b3810a46632d1f6403bddcce822d440b8c3f Mon Sep 17 00:00:00 2001 From: Dmitry Gozman Date: Wed, 18 Aug 2021 14:47:21 -0700 Subject: [PATCH] browser(firefox): fix a race between Browser.close and closing context (#8294) --- browser_patches/firefox-beta/BUILD_NUMBER | 4 ++-- .../firefox-beta/juggler/protocol/BrowserHandler.js | 7 ++++++- browser_patches/firefox/BUILD_NUMBER | 4 ++-- browser_patches/firefox/juggler/protocol/BrowserHandler.js | 7 ++++++- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/browser_patches/firefox-beta/BUILD_NUMBER b/browser_patches/firefox-beta/BUILD_NUMBER index 34b1c99202..7bd3ed058b 100644 --- a/browser_patches/firefox-beta/BUILD_NUMBER +++ b/browser_patches/firefox-beta/BUILD_NUMBER @@ -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 diff --git a/browser_patches/firefox-beta/juggler/protocol/BrowserHandler.js b/browser_patches/firefox-beta/juggler/protocol/BrowserHandler.js index e24924afdb..accad571a7 100644 --- a/browser_patches/firefox-beta/juggler/protocol/BrowserHandler.js +++ b/browser_patches/firefox-beta/juggler/protocol/BrowserHandler.js @@ -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(); } diff --git a/browser_patches/firefox/BUILD_NUMBER b/browser_patches/firefox/BUILD_NUMBER index 499b198bfe..ce211723cb 100644 --- a/browser_patches/firefox/BUILD_NUMBER +++ b/browser_patches/firefox/BUILD_NUMBER @@ -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 diff --git a/browser_patches/firefox/juggler/protocol/BrowserHandler.js b/browser_patches/firefox/juggler/protocol/BrowserHandler.js index e24924afdb..accad571a7 100644 --- a/browser_patches/firefox/juggler/protocol/BrowserHandler.js +++ b/browser_patches/firefox/juggler/protocol/BrowserHandler.js @@ -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(); }