Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(255)

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/common/Object.js

Issue 2261933002: DevTools: Use JS symbols instead of strings for eligible events. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698