diff --git a/src/webkit/wkPage.ts b/src/webkit/wkPage.ts index c82a031015..293cc0a0c5 100644 --- a/src/webkit/wkPage.ts +++ b/src/webkit/wkPage.ts @@ -190,6 +190,8 @@ export class WKPage implements PageDelegate { } _onFrameAttached(frameId: string, parentFrameId: string | null) { + if (!parentFrameId) + this._workers.clear(); this._page._frameManager.frameAttached(frameId, parentFrameId); } @@ -202,6 +204,8 @@ export class WKPage implements PageDelegate { frame._contextDestroyed(context); } } + if (!framePayload.parentId) + this._workers.clear(); this._page._frameManager.frameCommittedNewDocumentNavigation(framePayload.id, framePayload.url, framePayload.name || '', framePayload.loaderId, initial); } diff --git a/src/webkit/wkWorkers.ts b/src/webkit/wkWorkers.ts index e2ed737752..18213fe7bb 100644 --- a/src/webkit/wkWorkers.ts +++ b/src/webkit/wkWorkers.ts @@ -31,8 +31,7 @@ export class WKWorkers { setSession(session: WKSession) { helper.removeEventListeners(this._sessionListeners); - this._page._clearWorkers(); - this._workerSessions.clear(); + this.clear(); this._sessionListeners = [ helper.addEventListener(session, 'Worker.workerCreated', async (event: Protocol.Worker.workerCreatedPayload) => { const worker = new Worker(event.url); @@ -73,6 +72,11 @@ export class WKWorkers { ]; } + clear() { + this._page._clearWorkers(); + this._workerSessions.clear(); + } + async initializeSession(session: WKSession) { await session.send('Worker.enable'); }