Index: third_party/WebKit/Source/devtools/front_end/sdk/DebuggerModel.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/sdk/DebuggerModel.js b/third_party/WebKit/Source/devtools/front_end/sdk/DebuggerModel.js |
index 657d96b6bdd6a58aa2b452f7f7bababdbb69889b..de8325dce00f3b77a455d466fe60c09674335d3c 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/sdk/DebuggerModel.js |
+++ b/third_party/WebKit/Source/devtools/front_end/sdk/DebuggerModel.js |
@@ -49,8 +49,8 @@ SDK.DebuggerModel = class extends SDK.SDKModel { |
/** @type {?SDK.DebuggerPausedDetails} */ |
this._debuggerPausedDetails = null; |
- /** @type {!Object.<string, !SDK.Script>} */ |
- this._scripts = {}; |
+ /** @type {!Map<string, !SDK.Script>} */ |
+ this._scripts = new Map(); |
dgozman
2017/04/05 18:22:55
Is it as performant? We have a lot of scripts!
lushnikov
2017/04/06 03:32:35
According to
https://docs.google.com/spreadsheets
|
/** @type {!Map.<string, !Array.<!SDK.Script>>} */ |
this._scriptsBySourceURL = new Map(); |
/** @type {!Array.<!SDK.Script>} */ |
@@ -345,17 +345,17 @@ SDK.DebuggerModel = class extends SDK.SDKModel { |
this._sourceMapManager.detachSourceMap(scriptWithSourceMap); |
this._sourceMapIdToScript.clear(); |
- this._scripts = {}; |
+ this._scripts.clear(); |
this._scriptsBySourceURL.clear(); |
this._stringMap.clear(); |
this._discardableScripts = []; |
} |
/** |
- * @return {!Object.<string, !SDK.Script>} |
+ * @return {!Array<!SDK.Script>} |
*/ |
- get scripts() { |
- return this._scripts; |
+ scripts() { |
+ return Array.from(this._scripts.values()); |
dgozman
2017/04/05 18:22:55
Is this method performance-critical? Does it make
lushnikov
2017/04/06 03:32:35
No, it's used by blackbox model only
|
} |
/** |
@@ -363,7 +363,7 @@ SDK.DebuggerModel = class extends SDK.SDKModel { |
* @return {?SDK.Script} |
*/ |
scriptForId(scriptId) { |
- return this._scripts[scriptId] || null; |
+ return this._scripts.get(scriptId) || null; |
} |
/** |
@@ -381,7 +381,8 @@ SDK.DebuggerModel = class extends SDK.SDKModel { |
* @param {function(?Protocol.Error, !Protocol.Runtime.ExceptionDetails=)} callback |
*/ |
setScriptSource(scriptId, newSource, callback) { |
- this._scripts[scriptId].editSource(newSource, this._didEditScriptSource.bind(this, scriptId, newSource, callback)); |
+ this._scripts.get(scriptId).editSource( |
+ newSource, this._didEditScriptSource.bind(this, scriptId, newSource, callback)); |
} |
/** |
@@ -567,13 +568,19 @@ SDK.DebuggerModel = class extends SDK.SDKModel { |
this._sourceMapManager.detachSourceMap(script); |
} |
} |
+ var affectedScripts = []; |
+ for (var script of this._scripts.values()) { |
+ if (script.executionContextId === executionContext.id) |
+ affectedScripts.push(script); |
+ } |
+ this.dispatchEventToListeners(SDK.DebuggerModel.Events.ExecutionContextDestroyed, affectedScripts); |
} |
/** |
* @param {!SDK.Script} script |
*/ |
_registerScript(script) { |
- this._scripts[script.scriptId] = script; |
+ this._scripts.set(script.scriptId, script); |
if (script.isAnonymousScript()) |
return; |
@@ -590,7 +597,7 @@ SDK.DebuggerModel = class extends SDK.SDKModel { |
*/ |
_unregisterScript(script) { |
console.assert(script.isAnonymousScript()); |
- delete this._scripts[script.scriptId]; |
+ this._scripts.delete(script.scriptId); |
} |
_collectDiscardedScripts() { |
@@ -918,6 +925,7 @@ SDK.DebuggerModel.Events = { |
DebuggerWasDisabled: Symbol('DebuggerWasDisabled'), |
DebuggerPaused: Symbol('DebuggerPaused'), |
DebuggerResumed: Symbol('DebuggerResumed'), |
+ ExecutionContextDestroyed: Symbol('ExecutionContextDestroyed'), |
dgozman
2017/04/05 18:22:55
DiscardedScriptSources, and merge with DiscardedAn
lushnikov
2017/04/06 03:32:35
As discussed offline, i'm started to listen to Run
|
ParsedScriptSource: Symbol('ParsedScriptSource'), |
FailedToParseScriptSource: Symbol('FailedToParseScriptSource'), |
DiscardedAnonymousScriptSource: Symbol('DiscardedAnonymousScriptSource'), |