123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- /*
- * vim: ts=4:sw=4:expandtab
- *
- * Implements EventTarget
- * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget
- *
- */
- ;(function () {
- 'use strict';
- window.textsecure = window.textsecure || {};
- function EventTarget() {
- }
- EventTarget.prototype = {
- constructor: EventTarget,
- dispatchEvent: function(ev) {
- if (!(ev instanceof Event)) {
- throw new Error('Expects an event');
- }
- if (this.listeners === null || typeof this.listeners !== 'object') {
- this.listeners = {};
- }
- var listeners = this.listeners[ev.type];
- if (typeof listeners === 'object') {
- for (var i=0; i < listeners.length; ++i) {
- if (typeof listeners[i] === 'function') {
- listeners[i].call(null, ev);
- }
- }
- }
- },
- addEventListener: function(eventName, callback) {
- if (typeof eventName !== 'string') {
- throw new Error('First argument expects a string');
- }
- if (typeof callback !== 'function') {
- throw new Error('Second argument expects a function');
- }
- if (this.listeners === null || typeof this.listeners !== 'object') {
- this.listeners = {};
- }
- var listeners = this.listeners[eventName];
- if (typeof listeners !== 'object') {
- listeners = [];
- }
- listeners.push(callback);
- this.listeners[eventName] = listeners;
- },
- removeEventListener: function(eventName, callback) {
- if (typeof eventName !== 'string') {
- throw new Error('First argument expects a string');
- }
- if (typeof callback !== 'function') {
- throw new Error('Second argument expects a function');
- }
- if (this.listeners === null || typeof this.listeners !== 'object') {
- this.listeners = {};
- }
- var listeners = this.listeners[eventName];
- if (typeof listeners === 'object') {
- for (var i=0; i < listeners.length; ++ i) {
- if (listeners[i] === callback) {
- listeners.splice(i, 1);
- return;
- }
- }
- }
- this.listeners[eventName] = listeners;
- },
- extend: function(obj) {
- for (var prop in obj) {
- this[prop] = obj[prop];
- }
- return this;
- }
- };
- textsecure.EventTarget = EventTarget;
- }());
|