| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. | 2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 15 matching lines...) Expand all Loading... |
| 26 /** | 26 /** |
| 27 * @constructor | 27 * @constructor |
| 28 * @implements {WebInspector.EventTarget} | 28 * @implements {WebInspector.EventTarget} |
| 29 */ | 29 */ |
| 30 WebInspector.Object = function() { | 30 WebInspector.Object = function() { |
| 31 } | 31 } |
| 32 | 32 |
| 33 WebInspector.Object.prototype = { | 33 WebInspector.Object.prototype = { |
| 34 /** | 34 /** |
| 35 * @override | 35 * @override |
| 36 * @param {string} eventType | 36 * @param {string|symbol} eventType |
| 37 * @param {function(!WebInspector.Event)} listener | 37 * @param {function(!WebInspector.Event)} listener |
| 38 * @param {!Object=} thisObject | 38 * @param {!Object=} thisObject |
| 39 * @return {!WebInspector.EventTarget.EventDescriptor} | 39 * @return {!WebInspector.EventTarget.EventDescriptor} |
| 40 */ | 40 */ |
| 41 addEventListener: function(eventType, listener, thisObject) | 41 addEventListener: function(eventType, listener, thisObject) |
| 42 { | 42 { |
| 43 if (!listener) | 43 if (!listener) |
| 44 console.assert(false); | 44 console.assert(false); |
| 45 | 45 |
| 46 if (!this._listeners) | 46 if (!this._listeners) |
| 47 this._listeners = new Map(); | 47 this._listeners = new Map(); |
| 48 if (!this._listeners.has(eventType)) | 48 if (!this._listeners.has(eventType)) |
| 49 this._listeners.set(eventType, []); | 49 this._listeners.set(eventType, []); |
| 50 this._listeners.get(eventType).push({ thisObject: thisObject, listener:
listener }); | 50 this._listeners.get(eventType).push({ thisObject: thisObject, listener:
listener }); |
| 51 return new WebInspector.EventTarget.EventDescriptor(this, eventType, thi
sObject, listener); | 51 return new WebInspector.EventTarget.EventDescriptor(this, eventType, thi
sObject, listener); |
| 52 }, | 52 }, |
| 53 | 53 |
| 54 /** | 54 /** |
| 55 * @override | 55 * @override |
| 56 * @param {string} eventType | 56 * @param {string|symbol} eventType |
| 57 * @param {function(!WebInspector.Event)} listener | 57 * @param {function(!WebInspector.Event)} listener |
| 58 * @param {!Object=} thisObject | 58 * @param {!Object=} thisObject |
| 59 */ | 59 */ |
| 60 removeEventListener: function(eventType, listener, thisObject) | 60 removeEventListener: function(eventType, listener, thisObject) |
| 61 { | 61 { |
| 62 console.assert(listener); | 62 console.assert(listener); |
| 63 | 63 |
| 64 if (!this._listeners || !this._listeners.has(eventType)) | 64 if (!this._listeners || !this._listeners.has(eventType)) |
| 65 return; | 65 return; |
| 66 var listeners = this._listeners.get(eventType); | 66 var listeners = this._listeners.get(eventType); |
| 67 for (var i = 0; i < listeners.length; ++i) { | 67 for (var i = 0; i < listeners.length; ++i) { |
| 68 if (listeners[i].listener === listener && listeners[i].thisObject ==
= thisObject) | 68 if (listeners[i].listener === listener && listeners[i].thisObject ==
= thisObject) |
| 69 listeners.splice(i--, 1); | 69 listeners.splice(i--, 1); |
| 70 } | 70 } |
| 71 | 71 |
| 72 if (!listeners.length) | 72 if (!listeners.length) |
| 73 this._listeners.delete(eventType); | 73 this._listeners.delete(eventType); |
| 74 }, | 74 }, |
| 75 | 75 |
| 76 /** | 76 /** |
| 77 * @override | 77 * @override |
| 78 */ | 78 */ |
| 79 removeAllListeners: function() | 79 removeAllListeners: function() |
| 80 { | 80 { |
| 81 delete this._listeners; | 81 delete this._listeners; |
| 82 }, | 82 }, |
| 83 | 83 |
| 84 /** | 84 /** |
| 85 * @override | 85 * @override |
| 86 * @param {string} eventType | 86 * @param {string|symbol} eventType |
| 87 * @return {boolean} | 87 * @return {boolean} |
| 88 */ | 88 */ |
| 89 hasEventListeners: function(eventType) | 89 hasEventListeners: function(eventType) |
| 90 { | 90 { |
| 91 if (!this._listeners || !this._listeners.has(eventType)) | 91 return this._listeners && this._listeners.has(eventType); |
| 92 return false; | |
| 93 return true; | |
| 94 }, | 92 }, |
| 95 | 93 |
| 96 /** | 94 /** |
| 97 * @override | 95 * @override |
| 98 * @param {string} eventType | 96 * @param {string|symbol} eventType |
| 99 * @param {*=} eventData | 97 * @param {*=} eventData |
| 100 * @return {boolean} | 98 * @return {boolean} |
| 101 */ | 99 */ |
| 102 dispatchEventToListeners: function(eventType, eventData) | 100 dispatchEventToListeners: function(eventType, eventData) |
| 103 { | 101 { |
| 104 if (!this._listeners || !this._listeners.has(eventType)) | 102 if (!this._listeners || !this._listeners.has(eventType)) |
| 105 return false; | 103 return false; |
| 106 | 104 |
| 107 var event = new WebInspector.Event(this, eventType, eventData); | 105 var event = new WebInspector.Event(this, eventType, eventData); |
| 108 var listeners = this._listeners.get(eventType).slice(0); | 106 var listeners = this._listeners.get(eventType).slice(0); |
| 109 for (var i = 0; i < listeners.length; ++i) { | 107 for (var i = 0; i < listeners.length; ++i) { |
| 110 listeners[i].listener.call(listeners[i].thisObject, event); | 108 listeners[i].listener.call(listeners[i].thisObject, event); |
| 111 if (event._stoppedPropagation) | 109 if (event._stoppedPropagation) |
| 112 break; | 110 break; |
| 113 } | 111 } |
| 114 | 112 |
| 115 return event.defaultPrevented; | 113 return event.defaultPrevented; |
| 116 } | 114 } |
| 117 } | 115 } |
| 118 | 116 |
| 119 /** | 117 /** |
| 120 * @constructor | 118 * @constructor |
| 121 * @param {!WebInspector.EventTarget} target | 119 * @param {!WebInspector.EventTarget} target |
| 122 * @param {string} type | 120 * @param {string|symbol} type |
| 123 * @param {*=} data | 121 * @param {*=} data |
| 124 */ | 122 */ |
| 125 WebInspector.Event = function(target, type, data) | 123 WebInspector.Event = function(target, type, data) |
| 126 { | 124 { |
| 127 this.target = target; | 125 this.target = target; |
| 128 this.type = type; | 126 this.type = type; |
| 129 this.data = data; | 127 this.data = data; |
| 130 this.defaultPrevented = false; | 128 this.defaultPrevented = false; |
| 131 this._stoppedPropagation = false; | 129 this._stoppedPropagation = false; |
| 132 } | 130 } |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 166 WebInspector.EventTarget.removeEventListeners = function(eventList) | 164 WebInspector.EventTarget.removeEventListeners = function(eventList) |
| 167 { | 165 { |
| 168 for (var i = 0; i < eventList.length; ++i) { | 166 for (var i = 0; i < eventList.length; ++i) { |
| 169 var eventInfo = eventList[i]; | 167 var eventInfo = eventList[i]; |
| 170 eventInfo.eventTarget.removeEventListener(eventInfo.eventType, eventInfo
.method, eventInfo.receiver); | 168 eventInfo.eventTarget.removeEventListener(eventInfo.eventType, eventInfo
.method, eventInfo.receiver); |
| 171 } | 169 } |
| 172 } | 170 } |
| 173 | 171 |
| 174 WebInspector.EventTarget.prototype = { | 172 WebInspector.EventTarget.prototype = { |
| 175 /** | 173 /** |
| 176 * @param {string} eventType | 174 * @param {string|symbol} eventType |
| 177 * @param {function(!WebInspector.Event)} listener | 175 * @param {function(!WebInspector.Event)} listener |
| 178 * @param {!Object=} thisObject | 176 * @param {!Object=} thisObject |
| 179 * @return {!WebInspector.EventTarget.EventDescriptor} | 177 * @return {!WebInspector.EventTarget.EventDescriptor} |
| 180 */ | 178 */ |
| 181 addEventListener: function(eventType, listener, thisObject) { }, | 179 addEventListener: function(eventType, listener, thisObject) { }, |
| 182 | 180 |
| 183 /** | 181 /** |
| 184 * @param {string} eventType | 182 * @param {string|symbol} eventType |
| 185 * @param {function(!WebInspector.Event)} listener | 183 * @param {function(!WebInspector.Event)} listener |
| 186 * @param {!Object=} thisObject | 184 * @param {!Object=} thisObject |
| 187 */ | 185 */ |
| 188 removeEventListener: function(eventType, listener, thisObject) { }, | 186 removeEventListener: function(eventType, listener, thisObject) { }, |
| 189 | 187 |
| 190 removeAllListeners: function() { }, | 188 removeAllListeners: function() { }, |
| 191 | 189 |
| 192 /** | 190 /** |
| 193 * @param {string} eventType | 191 * @param {string|symbol} eventType |
| 194 * @return {boolean} | 192 * @return {boolean} |
| 195 */ | 193 */ |
| 196 hasEventListeners: function(eventType) { }, | 194 hasEventListeners: function(eventType) { }, |
| 197 | 195 |
| 198 /** | 196 /** |
| 199 * @param {string} eventType | 197 * @param {string|symbol} eventType |
| 200 * @param {*=} eventData | 198 * @param {*=} eventData |
| 201 * @return {boolean} | 199 * @return {boolean} |
| 202 */ | 200 */ |
| 203 dispatchEventToListeners: function(eventType, eventData) { }, | 201 dispatchEventToListeners: function(eventType, eventData) { }, |
| 204 } | 202 } |
| 205 | 203 |
| 206 /** | 204 /** |
| 207 * @constructor | 205 * @constructor |
| 208 * @param {!WebInspector.EventTarget} eventTarget | 206 * @param {!WebInspector.EventTarget} eventTarget |
| 209 * @param {string} eventType | 207 * @param {string|symbol} eventType |
| 210 * @param {(!Object|undefined)} receiver | 208 * @param {(!Object|undefined)} receiver |
| 211 * @param {function(?):?} method | 209 * @param {function(?):?} method |
| 212 */ | 210 */ |
| 213 WebInspector.EventTarget.EventDescriptor = function(eventTarget, eventType, rece
iver, method) | 211 WebInspector.EventTarget.EventDescriptor = function(eventTarget, eventType, rece
iver, method) |
| 214 { | 212 { |
| 215 this.eventTarget = eventTarget; | 213 this.eventTarget = eventTarget; |
| 216 this.eventType = eventType; | 214 this.eventType = eventType; |
| 217 this.receiver = receiver; | 215 this.receiver = receiver; |
| 218 this.method = method; | 216 this.method = method; |
| 219 } | 217 } |
| OLD | NEW |