mirror of
https://github.com/puppeteer/puppeteer
synced 2024-06-14 14:02:48 +00:00
Do not leak event listeners on navigation
This patch: - introduces helper.addEventListener/helper.removeEventListeners to simplify event management - moves NavigatorWatchdog over to the helper.addEventListener to stop leaking event listeners
This commit is contained in:
@@ -115,6 +115,26 @@ class Helper {
|
||||
return `"${text}"`;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {!EventEmitter} emitter
|
||||
* @param {string} eventName
|
||||
* @param {function(?)} handler
|
||||
* @return {{emitter: !EventEmitter, eventName: string, handler: function(?)}}
|
||||
*/
|
||||
static addEventListener(emitter, eventName, handler) {
|
||||
emitter.on(eventName, handler);
|
||||
return { emitter, eventName, handler };
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {!Array<{emitter: !EventEmitter, eventName: string, handler: function(?)}>}
|
||||
*/
|
||||
static removeEventListeners(listeners) {
|
||||
for (let listener of listeners)
|
||||
listener.emitter.removeListener(listener.eventName, listener.handler);
|
||||
listeners.splice(0, listeners.length);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Helper;
|
||||
|
||||
Reference in New Issue
Block a user