Skip to content

Commit 0b93277

Browse files
committed
restore driver methods to class body
1 parent 95b7b88 commit 0b93277

File tree

1 file changed

+46
-41
lines changed

1 file changed

+46
-41
lines changed

lighthouse-core/gather/driver.js

Lines changed: 46 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,52 @@ class Driver {
141141
return this._connection.wsEndpoint();
142142
}
143143

144+
/**
145+
* Bind listeners for protocol events.
146+
* @template {keyof LH.CrdpEvents} E
147+
* @param {E} eventName
148+
* @param {(...args: IsTuple<LH.CrdpEvents[E]>) => void} cb
149+
*/
150+
on(eventName, cb) {
151+
if (this._eventEmitter === null) {
152+
throw new Error('connect() must be called before attempting to listen to events.');
153+
}
154+
155+
// log event listeners being bound
156+
log.formatProtocol('listen for event =>', {method: eventName}, 'verbose');
157+
this._eventEmitter.on(eventName, cb);
158+
}
159+
160+
/**
161+
* Bind a one-time listener for protocol events. Listener is removed once it
162+
* has been called.
163+
* @template {keyof LH.CrdpEvents} E
164+
* @param {E} eventName
165+
* @param {(...args: IsTuple<LH.CrdpEvents[E]>) => void} cb
166+
*/
167+
once(eventName, cb) {
168+
if (this._eventEmitter === null) {
169+
throw new Error('connect() must be called before attempting to listen to events.');
170+
}
171+
// log event listeners being bound
172+
log.formatProtocol('listen once for event =>', {method: eventName}, 'verbose');
173+
this._eventEmitter.once(eventName, cb);
174+
}
175+
176+
/**
177+
* Unbind event listener.
178+
* @template {keyof LH.CrdpEvents} E
179+
* @param {E} eventName
180+
* @param {Function} cb
181+
*/
182+
off(eventName, cb) {
183+
if (this._eventEmitter === null) {
184+
throw new Error('connect() must be called before attempting to remove an event listener.');
185+
}
186+
187+
this._eventEmitter.removeListener(eventName, cb);
188+
}
189+
144190
/**
145191
* Debounce enabling or disabling domains to prevent driver users from
146192
* stomping on each other. Maintains an internal count of the times a domain
@@ -1129,45 +1175,4 @@ class Driver {
11291175
}
11301176
}
11311177

1132-
// Declared outside class body because function expressions can be typed via more expressive @type
1133-
/**
1134-
* Bind listeners for protocol events.
1135-
* @type {CrdpEventEmitter['on']}
1136-
*/
1137-
Driver.prototype.on = function on(eventName, cb) {
1138-
if (this._eventEmitter === null) {
1139-
throw new Error('connect() must be called before attempting to listen to events.');
1140-
}
1141-
1142-
// log event listeners being bound
1143-
log.formatProtocol('listen for event =>', {method: eventName}, 'verbose');
1144-
this._eventEmitter.on(eventName, cb);
1145-
};
1146-
1147-
/**
1148-
* Bind a one-time listener for protocol events. Listener is removed once it
1149-
* has been called.
1150-
* @type {CrdpEventEmitter['once']}
1151-
*/
1152-
Driver.prototype.once = function once(eventName, cb) {
1153-
if (this._eventEmitter === null) {
1154-
throw new Error('connect() must be called before attempting to listen to events.');
1155-
}
1156-
// log event listeners being bound
1157-
log.formatProtocol('listen once for event =>', {method: eventName}, 'verbose');
1158-
this._eventEmitter.once(eventName, cb);
1159-
};
1160-
1161-
/**
1162-
* Unbind event listener.
1163-
* @type {CrdpEventEmitter['removeListener']}
1164-
*/
1165-
Driver.prototype.off = function off(eventName, cb) {
1166-
if (this._eventEmitter === null) {
1167-
throw new Error('connect() must be called before attempting to remove an event listener.');
1168-
}
1169-
1170-
this._eventEmitter.removeListener(eventName, cb);
1171-
};
1172-
11731178
module.exports = Driver;

0 commit comments

Comments
 (0)