fix(workers): emit workerdestroyed event when clearing workers (#618)
This commit is contained in:
parent
056fbbd53e
commit
060fbf7428
|
|
@ -520,7 +520,10 @@ export class Page extends platform.EventEmitter {
|
||||||
}
|
}
|
||||||
|
|
||||||
_clearWorkers() {
|
_clearWorkers() {
|
||||||
this._workers.clear();
|
for (const [workerId, worker] of this._workers) {
|
||||||
|
this.emit(Events.Page.WorkerDestroyed, worker);
|
||||||
|
this._workers.delete(workerId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -80,7 +80,22 @@ module.exports.describe = function({testRunner, expect, FFOX, CHROMIUM, WEBKIT})
|
||||||
page.evaluate(() => new Worker(URL.createObjectURL(new Blob(['console.log(1)'], {type: 'application/javascript'}))));
|
page.evaluate(() => new Worker(URL.createObjectURL(new Blob(['console.log(1)'], {type: 'application/javascript'}))));
|
||||||
await workerCreatedPromise;
|
await workerCreatedPromise;
|
||||||
expect(page.workers().length).toBe(1);
|
expect(page.workers().length).toBe(1);
|
||||||
|
let destroyed = false;
|
||||||
|
page.once('workerdestroyed', () => destroyed = true);
|
||||||
|
await page.goto(server.PREFIX + '/one-style.html');
|
||||||
|
expect(destroyed).toBe(true);
|
||||||
|
expect(page.workers().length).toBe(0);
|
||||||
|
});
|
||||||
|
it('should clear upon cross-process navigation', async function({server, page}) {
|
||||||
|
await page.goto(server.EMPTY_PAGE);
|
||||||
|
const workerCreatedPromise = page.waitForEvent('workercreated');
|
||||||
|
page.evaluate(() => new Worker(URL.createObjectURL(new Blob(['console.log(1)'], {type: 'application/javascript'}))));
|
||||||
|
await workerCreatedPromise;
|
||||||
|
expect(page.workers().length).toBe(1);
|
||||||
|
let destroyed = false;
|
||||||
|
page.once('workerdestroyed', () => destroyed = true);
|
||||||
await page.goto(server.CROSS_PROCESS_PREFIX + '/empty.html');
|
await page.goto(server.CROSS_PROCESS_PREFIX + '/empty.html');
|
||||||
|
expect(destroyed).toBe(true);
|
||||||
expect(page.workers().length).toBe(0);
|
expect(page.workers().length).toBe(0);
|
||||||
});
|
});
|
||||||
it('should report network activity', async function({page, server}) {
|
it('should report network activity', async function({page, server}) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue