diff --git a/src/server/browserContext.ts b/src/server/browserContext.ts index 71c7a01e3f..9d5c7bf29e 100644 --- a/src/server/browserContext.ts +++ b/src/server/browserContext.ts @@ -131,6 +131,8 @@ export abstract class BrowserContext extends SdkObject { this._closedStatus = 'closed'; this._deleteAllDownloads(); this._downloads.clear(); + if (this._isPersistentContext) + this._onClosePersistent(); this._closePromiseFulfill!(new Error('Context closed')); this.emit(BrowserContext.Events.Close); } @@ -151,7 +153,7 @@ export abstract class BrowserContext extends SdkObject { abstract _doExposeBinding(binding: PageBinding): Promise; abstract _doUpdateRequestInterception(): Promise; abstract _doClose(): Promise; - abstract _onClosePersistent(): Promise; + abstract _onClosePersistent(): void; abstract _doCancelDownload(uuid: string): Promise; async cookies(urls: string | string[] | undefined = []): Promise { @@ -285,7 +287,6 @@ export abstract class BrowserContext extends SdkObject { // Close all the pages instead of the context, // because we cannot close the default context. await Promise.all(this.pages().map(page => page.close(metadata))); - await this._onClosePersistent(); } else { // Close the context. await this._doClose(); diff --git a/src/server/chromium/crBrowser.ts b/src/server/chromium/crBrowser.ts index de158fd2ca..da984ff572 100644 --- a/src/server/chromium/crBrowser.ts +++ b/src/server/chromium/crBrowser.ts @@ -470,7 +470,9 @@ export class CRBrowserContext extends BrowserContext { } } - async _onClosePersistent() { + _onClosePersistent() { + // When persistent context is closed, we do not necessary get Target.detachedFromTarget + // for all the background pages. for (const [targetId, backgroundPage] of this._browser._backgroundPages.entries()) { if (backgroundPage._browserContext === this && backgroundPage._initializedPage) { backgroundPage.didClose(); diff --git a/src/server/firefox/ffBrowser.ts b/src/server/firefox/ffBrowser.ts index 7d0bc7c015..6b0fc9d080 100644 --- a/src/server/firefox/ffBrowser.ts +++ b/src/server/firefox/ffBrowser.ts @@ -323,7 +323,7 @@ export class FFBrowserContext extends BrowserContext { await this._browser._connection.send('Browser.setRequestInterception', { browserContextId: this._browserContextId, enabled: !!this._requestInterceptor }); } - async _onClosePersistent() {} + _onClosePersistent() {} async _doClose() { assert(this._browserContextId); diff --git a/src/server/webkit/wkBrowser.ts b/src/server/webkit/wkBrowser.ts index 0c3531094f..98900b0995 100644 --- a/src/server/webkit/wkBrowser.ts +++ b/src/server/webkit/wkBrowser.ts @@ -319,7 +319,7 @@ export class WKBrowserContext extends BrowserContext { await (page._delegate as WKPage).updateRequestInterception(); } - async _onClosePersistent() {} + _onClosePersistent() {} async _doClose() { assert(this._browserContextId);