diff --git a/src/frames.ts b/src/frames.ts index 1103702679..cbb5363164 100644 --- a/src/frames.ts +++ b/src/frames.ts @@ -71,6 +71,11 @@ export class FrameManager { this._mainFrame = undefined as any as Frame; } + dispose() { + for (const frame of this._frames.values()) + frame._stopNetworkIdleTimer(); + } + mainFrame(): Frame { return this._mainFrame; } @@ -926,6 +931,7 @@ export class Frame { } _onDetached() { + this._stopNetworkIdleTimer(); this._detached = true; this._detachedCallback(); for (const data of this._contextData.values()) { diff --git a/src/page.ts b/src/page.ts index b1ac1e0cc1..ced9ebe8c4 100644 --- a/src/page.ts +++ b/src/page.ts @@ -145,6 +145,7 @@ export class Page extends EventEmitter { } _didClose() { + this._frameManager.dispose(); assert(this._closedState !== 'closed', 'Page closed twice'); this._closedState = 'closed'; this.emit(Events.Page.Close); @@ -152,11 +153,13 @@ export class Page extends EventEmitter { } _didCrash() { + this._frameManager.dispose(); this.emit(Events.Page.Crash); this._crashedCallback(new Error('Page crashed')); } _didDisconnect() { + this._frameManager.dispose(); assert(!this._disconnected, 'Page disconnected twice'); this._disconnected = true; this._disconnectedCallback(new Error('Page closed'));