fix(webkit): clear workers on navigation

This commit is contained in:
Yury Semikhatsky 2020-01-17 17:27:37 -08:00
parent bb3f12245c
commit d39d61c9e5
2 changed files with 10 additions and 2 deletions

View file

@ -190,6 +190,8 @@ export class WKPage implements PageDelegate {
} }
_onFrameAttached(frameId: string, parentFrameId: string | null) { _onFrameAttached(frameId: string, parentFrameId: string | null) {
if (!parentFrameId)
this._workers.clear();
this._page._frameManager.frameAttached(frameId, parentFrameId); this._page._frameManager.frameAttached(frameId, parentFrameId);
} }
@ -202,6 +204,8 @@ export class WKPage implements PageDelegate {
frame._contextDestroyed(context); frame._contextDestroyed(context);
} }
} }
if (!framePayload.parentId)
this._workers.clear();
this._page._frameManager.frameCommittedNewDocumentNavigation(framePayload.id, framePayload.url, framePayload.name || '', framePayload.loaderId, initial); this._page._frameManager.frameCommittedNewDocumentNavigation(framePayload.id, framePayload.url, framePayload.name || '', framePayload.loaderId, initial);
} }

View file

@ -31,8 +31,7 @@ export class WKWorkers {
setSession(session: WKSession) { setSession(session: WKSession) {
helper.removeEventListeners(this._sessionListeners); helper.removeEventListeners(this._sessionListeners);
this._page._clearWorkers(); this.clear();
this._workerSessions.clear();
this._sessionListeners = [ this._sessionListeners = [
helper.addEventListener(session, 'Worker.workerCreated', async (event: Protocol.Worker.workerCreatedPayload) => { helper.addEventListener(session, 'Worker.workerCreated', async (event: Protocol.Worker.workerCreatedPayload) => {
const worker = new Worker(event.url); const worker = new Worker(event.url);
@ -73,6 +72,11 @@ export class WKWorkers {
]; ];
} }
clear() {
this._page._clearWorkers();
this._workerSessions.clear();
}
async initializeSession(session: WKSession) { async initializeSession(session: WKSession) {
await session.send('Worker.enable'); await session.send('Worker.enable');
} }