fix(webkit): clear workers on navigation
This commit is contained in:
parent
bb3f12245c
commit
d39d61c9e5
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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');
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue