mirror of
https://github.com/shaka-project/shaka-player.git
synced 2026-06-26 17:46:26 +03:00
feat: Add a way to listen to all events on a specific target
Change-Id: Ia7874430692edd289129dd38a1f59feee9fdc44b
This commit is contained in:
@@ -49,6 +49,18 @@ shaka.util.FakeEventTarget = class {
|
||||
this.listeners_.push(type, listener);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add an event listener to this object that is invoked for all events types
|
||||
* the object fires.
|
||||
*
|
||||
* @param {shaka.util.FakeEventTarget.ListenerType} listener The callback or
|
||||
* listener object to invoke.
|
||||
* @exportInterface
|
||||
*/
|
||||
listenToAllEvents(listener) {
|
||||
this.addEventListener(shaka.util.FakeEventTarget.ALL_EVENTS_, listener);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove an event listener from this object.
|
||||
*
|
||||
@@ -78,7 +90,12 @@ shaka.util.FakeEventTarget = class {
|
||||
goog.asserts.assert(event instanceof shaka.util.FakeEvent,
|
||||
'FakeEventTarget can only dispatch FakeEvents!');
|
||||
|
||||
const listeners = this.listeners_.get(event.type) || [];
|
||||
let listeners = this.listeners_.get(event.type) || [];
|
||||
const universalListeners =
|
||||
this.listeners_.get(shaka.util.FakeEventTarget.ALL_EVENTS_);
|
||||
if (universalListeners) {
|
||||
listeners = listeners.concat(universalListeners);
|
||||
}
|
||||
|
||||
// Execute this event on listeners until the event has been stopped or we
|
||||
// run out of listeners.
|
||||
@@ -120,3 +137,10 @@ shaka.util.FakeEventTarget = class {
|
||||
* @exportInterface
|
||||
*/
|
||||
shaka.util.FakeEventTarget.ListenerType;
|
||||
|
||||
|
||||
/**
|
||||
* @const {string}
|
||||
* @private
|
||||
*/
|
||||
shaka.util.FakeEventTarget.ALL_EVENTS_ = 'All';
|
||||
|
||||
Reference in New Issue
Block a user