From 062f91cc52a6ad23543cc24bd0196a7713263728 Mon Sep 17 00:00:00 2001 From: Brendan Kenny Date: Tue, 14 Aug 2018 17:57:58 -0700 Subject: [PATCH] restore driver methods to class body --- lighthouse-core/gather/driver.js | 87 +++++++++++++++++--------------- 1 file changed, 46 insertions(+), 41 deletions(-) diff --git a/lighthouse-core/gather/driver.js b/lighthouse-core/gather/driver.js index 68bc623f8c27..fc6d5072c43b 100644 --- a/lighthouse-core/gather/driver.js +++ b/lighthouse-core/gather/driver.js @@ -133,6 +133,52 @@ class Driver { return this._connection.wsEndpoint(); } + /** + * Bind listeners for protocol events. + * @template {keyof LH.CrdpEvents} E + * @param {E} eventName + * @param {(...args: IsTuple) => void} cb + */ + on(eventName, cb) { + if (this._eventEmitter === null) { + throw new Error('connect() must be called before attempting to listen to events.'); + } + + // log event listeners being bound + log.formatProtocol('listen for event =>', {method: eventName}, 'verbose'); + this._eventEmitter.on(eventName, cb); + } + + /** + * Bind a one-time listener for protocol events. Listener is removed once it + * has been called. + * @template {keyof LH.CrdpEvents} E + * @param {E} eventName + * @param {(...args: IsTuple) => void} cb + */ + once(eventName, cb) { + if (this._eventEmitter === null) { + throw new Error('connect() must be called before attempting to listen to events.'); + } + // log event listeners being bound + log.formatProtocol('listen once for event =>', {method: eventName}, 'verbose'); + this._eventEmitter.once(eventName, cb); + } + + /** + * Unbind event listener. + * @template {keyof LH.CrdpEvents} E + * @param {E} eventName + * @param {Function} cb + */ + off(eventName, cb) { + if (this._eventEmitter === null) { + throw new Error('connect() must be called before attempting to remove an event listener.'); + } + + this._eventEmitter.removeListener(eventName, cb); + } + /** * Debounce enabling or disabling domains to prevent driver users from * stomping on each other. Maintains an internal count of the times a domain @@ -1121,45 +1167,4 @@ class Driver { } } -// Declared outside class body because function expressions can be typed via more expressive @type -/** - * Bind listeners for protocol events. - * @type {CrdpEventEmitter['on']} - */ -Driver.prototype.on = function on(eventName, cb) { - if (this._eventEmitter === null) { - throw new Error('connect() must be called before attempting to listen to events.'); - } - - // log event listeners being bound - log.formatProtocol('listen for event =>', {method: eventName}, 'verbose'); - this._eventEmitter.on(eventName, cb); -}; - -/** - * Bind a one-time listener for protocol events. Listener is removed once it - * has been called. - * @type {CrdpEventEmitter['once']} - */ -Driver.prototype.once = function once(eventName, cb) { - if (this._eventEmitter === null) { - throw new Error('connect() must be called before attempting to listen to events.'); - } - // log event listeners being bound - log.formatProtocol('listen once for event =>', {method: eventName}, 'verbose'); - this._eventEmitter.once(eventName, cb); -}; - -/** - * Unbind event listener. - * @type {CrdpEventEmitter['removeListener']} - */ -Driver.prototype.off = function off(eventName, cb) { - if (this._eventEmitter === null) { - throw new Error('connect() must be called before attempting to remove an event listener.'); - } - - this._eventEmitter.removeListener(eventName, cb); -}; - module.exports = Driver;