| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 
| 3  * Copyright (C) 2006-present eyeo GmbH | 3  * Copyright (C) 2006-present eyeo GmbH | 
| 4  * | 4  * | 
| 5  * Adblock Plus is free software: you can redistribute it and/or modify | 5  * Adblock Plus is free software: you can redistribute it and/or modify | 
| 6  * it under the terms of the GNU General Public License version 3 as | 6  * it under the terms of the GNU General Public License version 3 as | 
| 7  * published by the Free Software Foundation. | 7  * published by the Free Software Foundation. | 
| 8  * | 8  * | 
| 9  * Adblock Plus is distributed in the hope that it will be useful, | 9  * Adblock Plus is distributed in the hope that it will be useful, | 
| 10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
| 12  * GNU General Public License for more details. | 12  * GNU General Public License for more details. | 
| 13  * | 13  * | 
| 14  * You should have received a copy of the GNU General Public License | 14  * You should have received a copy of the GNU General Public License | 
| 15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 
| 16  */ | 16  */ | 
| 17 | 17 | 
| 18 "use strict"; | 18 "use strict"; | 
| 19 | 19 | 
| 20 /** | 20 /** | 
| 21  * Registers and emits named events. | 21  * Registers and emits named events. | 
| 22  * | 22  * | 
| 23  * @constructor | 23  * @constructor | 
| 24  */ | 24  */ | 
| 25 exports.EventEmitter = function() | 25 exports.EventEmitter = function() | 
| 26 { | 26 { | 
| 27   this._listeners = Object.create(null); | 27   this._listeners = new Map(); | 
| 28 }; | 28 }; | 
| 29 | 29 | 
| 30 exports.EventEmitter.prototype = { | 30 exports.EventEmitter.prototype = { | 
| 31   /** | 31   /** | 
| 32    * Adds a listener for the specified event name. | 32    * Adds a listener for the specified event name. | 
| 33    * | 33    * | 
| 34    * @param {string}   name | 34    * @param {string}   name | 
| 35    * @param {function} listener | 35    * @param {function} listener | 
| 36    */ | 36    */ | 
| 37   on(name, listener) | 37   on(name, listener) | 
| 38   { | 38   { | 
| 39     if (name in this._listeners) | 39     let listeners = this._listeners.get(name); | 
| 40       this._listeners[name].push(listener); | 40     if (listeners) | 
|  | 41       listeners.push(listener); | 
| 41     else | 42     else | 
| 42       this._listeners[name] = [listener]; | 43       this._listeners.set(name, [listener]); | 
| 43   }, | 44   }, | 
| 44 | 45 | 
| 45   /** | 46   /** | 
| 46    * Removes a listener for the specified event name. | 47    * Removes a listener for the specified event name. | 
| 47    * | 48    * | 
| 48    * @param {string}   name | 49    * @param {string}   name | 
| 49    * @param {function} listener | 50    * @param {function} listener | 
| 50    */ | 51    */ | 
| 51   off(name, listener) | 52   off(name, listener) | 
| 52   { | 53   { | 
| 53     let listeners = this._listeners[name]; | 54     let listeners = this._listeners.get(name); | 
| 54     if (listeners) | 55     if (listeners) | 
| 55     { | 56     { | 
| 56       let idx = listeners.indexOf(listener); | 57       let idx = listeners.indexOf(listener); | 
| 57       if (idx != -1) | 58       if (idx != -1) | 
| 58         listeners.splice(idx, 1); | 59         listeners.splice(idx, 1); | 
| 59     } | 60     } | 
| 60   }, | 61   }, | 
| 61 | 62 | 
| 62   /** | 63   /** | 
| 63    * Adds a one time listener and returns a promise that | 64    * Adds a one time listener and returns a promise that | 
| (...skipping 16 matching lines...) Expand all  Loading... | 
| 80   }, | 81   }, | 
| 81 | 82 | 
| 82   /** | 83   /** | 
| 83    * Returns a copy of the array of listeners for the specified event. | 84    * Returns a copy of the array of listeners for the specified event. | 
| 84    * | 85    * | 
| 85    * @param {string} name | 86    * @param {string} name | 
| 86    * @return {function[]} | 87    * @return {function[]} | 
| 87    */ | 88    */ | 
| 88   listeners(name) | 89   listeners(name) | 
| 89   { | 90   { | 
| 90     let listeners = this._listeners[name]; | 91     let listeners = this._listeners.get(name); | 
| 91     return listeners ? listeners.slice() : []; | 92     return listeners ? listeners.slice() : []; | 
| 92   }, | 93   }, | 
| 93 | 94 | 
| 94   /** | 95   /** | 
| 95    * Calls all previously added listeners for the given event name. | 96    * Calls all previously added listeners for the given event name. | 
| 96    * | 97    * | 
| 97    * @param {string} name | 98    * @param {string} name | 
| 98    * @param {...*}   [arg] | 99    * @param {...*}   [arg] | 
| 99    */ | 100    */ | 
| 100   emit(name, ...args) | 101   emit(name, ...args) | 
| 101   { | 102   { | 
| 102     let listeners = this.listeners(name); | 103     let listeners = this.listeners(name); | 
| 103     for (let listener of listeners) | 104     for (let listener of listeners) | 
| 104       listener(...args); | 105       listener(...args); | 
| 105   } | 106   } | 
| 106 }; | 107 }; | 
| OLD | NEW | 
|---|