| |
| /* |
| * weinre is available under *either* the terms of the modified BSD license *or* the |
| * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text. |
| * |
| * Copyright (c) 2010, 2011 IBM Corporation |
| */ |
| |
| requireClass ./Ex |
| requireClass ./Weinre |
| |
| //----------------------------------------------------------------------------- |
| class EventListeners |
| this._listeners = [] |
| |
| //----------------------------------------------------------------------------- |
| method add(listener, useCapture) |
| this._listeners.push([listener, useCapture]) |
| |
| //----------------------------------------------------------------------------- |
| method remove(listener, useCapture) |
| for (var i=0; i<this._listeners.length; i++) { |
| var listener = this._listeners[i] |
| if (listener[0] != listener) continue; |
| if (listener[1] != useCapture) continue; |
| |
| this._listeners.splice(i,1) |
| return |
| } |
| |
| //----------------------------------------------------------------------------- |
| method fire(event) |
| this._listeners.slice().forEach(function(listener) { |
| var listener = listener[0] |
| |
| if (typeof listener == "function") { |
| try { |
| listener.call(null, event) |
| } |
| catch(e) { |
| Weinre.logError(arguments.callee.signature + " invocation exception: " + e) |
| } |
| return |
| } |
| |
| if (typeof listener.handleEvent != "function") { |
| throw new Ex(arguments, "listener does not implement the handleEvent() method") |
| } |
| |
| try { |
| listener.handleEvent.call(listener, event) |
| } |
| catch(e) { |
| Weinre.logError(arguments.callee.signature + " invocation exception: " + e) |
| } |
| }) |