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

Unified Diff: third_party/WebKit/Source/devtools/front_end/sdk/TargetManager.js

Issue 2284663003: DevTools: Use a Map for modelListeners in TargetManager (Closed)
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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/devtools/front_end/sdk/TargetManager.js
diff --git a/third_party/WebKit/Source/devtools/front_end/sdk/TargetManager.js b/third_party/WebKit/Source/devtools/front_end/sdk/TargetManager.js
index 7bd2427a9c7ffe9e9786ce03d5373c94363b407a..39f1e99f926e56e1a6d6ab6ff8e3fec33737aa28 100644
--- a/third_party/WebKit/Source/devtools/front_end/sdk/TargetManager.js
+++ b/third_party/WebKit/Source/devtools/front_end/sdk/TargetManager.js
@@ -16,8 +16,8 @@ WebInspector.TargetManager = function()
/** @type {!Array.<!WebInspector.TargetManager.Observer>} */
this._observers = [];
this._observerCapabiliesMaskSymbol = Symbol("observerCapabilitiesMask");
- /** @type {!Object.<string, !Array.<{modelClass: !Function, thisObject: (!Object|undefined), listener: function(!WebInspector.Event)}>>} */
- this._modelListeners = {};
+ /** @type {!Map<symbol, !Array<{modelClass: !Function, thisObject: (!Object|undefined), listener: function(!WebInspector.Event)}>>} */
lushnikov 2016/08/26 19:34:45 technically, this should be (symbol|string)
dgozman 2016/08/26 20:52:49 I hope we don't have strings anymore! Let's change
alph 2016/08/26 21:00:33 I'll keep it just symbol and make sure there are n
+ this._modelListeners = new Map();
this._isSuspended = false;
}
@@ -115,7 +115,7 @@ WebInspector.TargetManager.prototype = {
/**
* @param {!Function} modelClass
- * @param {string} eventType
+ * @param {symbol} eventType
lushnikov 2016/08/26 19:34:45 (symbol|string) as well
alph 2016/08/26 21:00:34 ditto
* @param {function(!WebInspector.Event)} listener
* @param {!Object=} thisObject
*/
@@ -126,20 +126,20 @@ WebInspector.TargetManager.prototype = {
if (model)
model.addEventListener(eventType, listener, thisObject);
}
- if (!this._modelListeners[eventType])
- this._modelListeners[eventType] = [];
- this._modelListeners[eventType].push({ modelClass: modelClass, thisObject: thisObject, listener: listener });
+ if (!this._modelListeners.has(eventType))
+ this._modelListeners.set(eventType, []);
+ this._modelListeners.get(eventType).push({ modelClass: modelClass, thisObject: thisObject, listener: listener });
},
/**
* @param {!Function} modelClass
- * @param {string} eventType
+ * @param {symbol} eventType
lushnikov 2016/08/26 19:34:45 ditto
alph 2016/08/26 21:00:34 ditto
* @param {function(!WebInspector.Event)} listener
* @param {!Object=} thisObject
*/
removeModelListener: function(modelClass, eventType, listener, thisObject)
{
- if (!this._modelListeners[eventType])
+ if (!this._modelListeners.has(eventType))
return;
for (var i = 0; i < this._targets.length; ++i) {
@@ -148,13 +148,13 @@ WebInspector.TargetManager.prototype = {
model.removeEventListener(eventType, listener, thisObject);
}
- var listeners = this._modelListeners[eventType];
+ var listeners = this._modelListeners.get(eventType);
for (var i = 0; i < listeners.length; ++i) {
if (listeners[i].modelClass === modelClass && listeners[i].listener === listener && listeners[i].thisObject === thisObject)
listeners.splice(i--, 1);
}
if (!listeners.length)
- delete this._modelListeners[eventType];
+ this._modelListeners.delete(eventType);
},
/**
@@ -257,12 +257,12 @@ WebInspector.TargetManager.prototype = {
for (var i = 0; i < copy.length; ++i)
copy[i].targetAdded(target);
- for (var eventType in this._modelListeners) {
- var listeners = this._modelListeners[eventType];
+ for (var pair of this._modelListeners) {
lushnikov 2016/08/26 19:34:45 nit: this probably never compiles - there are no t
alph 2016/08/26 21:00:34 yeah. it seems to treat them as having value type.
+ var listeners = pair[1];
for (var i = 0; i < listeners.length; ++i) {
var model = target.model(listeners[i].modelClass);
if (model)
- model.addEventListener(eventType, listeners[i].listener, listeners[i].thisObject);
+ model.addEventListener(pair[0], listeners[i].listener, listeners[i].thisObject);
}
}
@@ -293,12 +293,12 @@ WebInspector.TargetManager.prototype = {
for (var i = 0; i < copy.length; ++i)
copy[i].targetRemoved(target);
- for (var eventType in this._modelListeners) {
- var listeners = this._modelListeners[eventType];
+ for (var pair of this._modelListeners) {
+ var listeners = pair[1];
for (var i = 0; i < listeners.length; ++i) {
var model = target.model(listeners[i].modelClass);
if (model)
- model.removeEventListener(eventType, listeners[i].listener, listeners[i].thisObject);
+ model.removeEventListener(pair[0], listeners[i].listener, listeners[i].thisObject);
}
}
},
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698