Index: third_party/WebKit/Source/devtools/front_end/terminal/xterm.js/src/EventEmitter.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/terminal/xterm.js/src/EventEmitter.js b/third_party/WebKit/Source/devtools/front_end/terminal/xterm.js/src/EventEmitter.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b17fbc77929e004846765c845398e856c9079c7b |
--- /dev/null |
+++ b/third_party/WebKit/Source/devtools/front_end/terminal/xterm.js/src/EventEmitter.js |
@@ -0,0 +1,64 @@ |
+/** |
+ * EventEmitter |
+ */ |
+ |
+function EventEmitter() { |
+ this._events = this._events || {}; |
+} |
+ |
+EventEmitter.prototype.addListener = function(type, listener) { |
+ this._events[type] = this._events[type] || []; |
+ this._events[type].push(listener); |
+}; |
+ |
+EventEmitter.prototype.on = EventEmitter.prototype.addListener; |
+ |
+EventEmitter.prototype.removeListener = function(type, listener) { |
+ if (!this._events[type]) return; |
+ |
+ var obj = this._events[type] |
+ , i = obj.length; |
+ |
+ while (i--) { |
+ if (obj[i] === listener || obj[i].listener === listener) { |
+ obj.splice(i, 1); |
+ return; |
+ } |
+ } |
+}; |
+ |
+EventEmitter.prototype.off = EventEmitter.prototype.removeListener; |
+ |
+EventEmitter.prototype.removeAllListeners = function(type) { |
+ if (this._events[type]) delete this._events[type]; |
+}; |
+ |
+EventEmitter.prototype.once = function(type, listener) { |
+ var self = this; |
+ function on() { |
+ var args = Array.prototype.slice.call(arguments); |
+ this.removeListener(type, on); |
+ return listener.apply(this, args); |
+ } |
+ on.listener = listener; |
+ return this.on(type, on); |
+}; |
+ |
+EventEmitter.prototype.emit = function(type) { |
+ if (!this._events[type]) return; |
+ |
+ var args = Array.prototype.slice.call(arguments, 1) |
+ , obj = this._events[type] |
+ , l = obj.length |
+ , i = 0; |
+ |
+ for (; i < l; i++) { |
+ obj[i].apply(this, args); |
+ } |
+}; |
+ |
+EventEmitter.prototype.listeners = function(type) { |
+ return this._events[type] = this._events[type] || []; |
+}; |
+ |
+export { EventEmitter }; |