browser(firefox): ensure detachedFromTarget is always sent (#4505)

browser(firefox): ensure detachedFromTarget is always sent

LinkedBrowser can throw when removing listeners in PageTarget.dispose,
and that prevents BrowserHandler from sending Browser.detachedFromTarget.

Using a try-catch seems good enough.
This commit is contained in:
Dmitry Gozman 2020-11-20 10:48:06 -08:00 committed by GitHub
parent a0587949a5
commit 14a96ca21f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 3 deletions

View File

@ -1,2 +1,2 @@
1212
Changed: lushnikov@chromium.org Thu 19 Nov 2020 08:08:27 AM PST
1213
Changed: dgozman@gmail.com Fri Nov 20 07:01:37 PST 2020

View File

@ -521,7 +521,14 @@ class PageTarget {
this._browserContext.pages.delete(this);
this._registry._browserToTarget.delete(this._linkedBrowser);
this._registry._browserBrowsingContextToTarget.delete(this._linkedBrowser.browsingContext);
helper.removeListeners(this._eventListeners);
try {
helper.removeListeners(this._eventListeners);
} catch (e) {
// In some cases, removing listeners from this._linkedBrowser fails
// because it is already half-destroyed.
if (e)
dump(e.message + '\n' + e.stack + '\n');
}
this._registry.emit(TargetRegistry.Events.TargetDestroyed, this);
}
}