Index: ext/common.js |
=================================================================== |
--- a/ext/common.js |
+++ b/ext/common.js |
@@ -10,42 +10,46 @@ |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
* GNU General Public License for more details. |
* |
* You should have received a copy of the GNU General Public License |
* along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
*/ |
+/* global defineNamespace */ |
+ |
"use strict"; |
+const internal = Symbol(); |
+ |
{ |
window.ext = {}; |
- let EventTarget = ext._EventTarget = function() |
+ defineNamespace(ext, internal); |
+ |
+ let EventTarget = ext[internal].EventTarget = function() |
{ |
- this._listeners = new Set(); |
+ defineNamespace(this, internal); |
+ |
+ this[internal].listeners = new Set(); |
}; |
EventTarget.prototype = { |
addListener(listener) |
{ |
- this._listeners.add(listener); |
+ this[internal].listeners.add(listener); |
}, |
removeListener(listener) |
{ |
- this._listeners.delete(listener); |
- }, |
- _dispatch(...args) |
- { |
- let results = []; |
- |
- for (let listener of this._listeners) |
- results.push(listener(...args)); |
- |
- return results; |
+ this[internal].listeners.delete(listener); |
} |
}; |
+ ext[internal].dispatchEvent = (eventTarget, ...args) => |
+ [...eventTarget[internal].listeners].map( |
+ listener => listener(...args) |
+ ); |
+ |
/* Message passing */ |
- ext.onMessage = new ext._EventTarget(); |
+ ext.onMessage = new ext[internal].EventTarget(); |
} |