Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 Google 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 are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | 23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 29 */ | 29 */ |
| 30 | 30 |
| 31 /** | 31 /** |
| 32 * @constructor | 32 * @constructor |
| 33 * @implements {WebInspector.ScriptSourceMapping} | 33 */ |
| 34 WebInspector.SourceMappingWithScriptFile = function() | |
| 35 { | |
| 36 } | |
| 37 | |
| 38 WebInspector.SourceMappingWithScriptFile.prototype = { | |
| 39 /** | |
| 40 * @param {!WebInspector.UISourceCode} uiSourceCode | |
| 41 * @return {?WebInspector.ScriptFile} | |
| 42 */ | |
| 43 scriptFile: function(uiSourceCode) | |
| 44 { | |
| 45 return null; | |
| 46 } | |
| 47 } | |
| 48 | |
| 49 /** | |
| 50 * @constructor | |
| 51 * @extends {WebInspector.SourceMappingWithScriptFile} | |
| 52 * @implements {WebInspector.SourceMapping} | |
| 34 * @param {!WebInspector.DebuggerModel} debuggerModel | 53 * @param {!WebInspector.DebuggerModel} debuggerModel |
| 35 * @param {!WebInspector.Workspace} workspace | 54 * @param {!WebInspector.Workspace} workspace |
| 36 */ | 55 */ |
| 37 WebInspector.ResourceScriptMapping = function(debuggerModel, workspace) | 56 WebInspector.ResourceScriptMapping = function(debuggerModel, workspace) |
| 38 { | 57 { |
| 58 WebInspector.SourceMappingWithScriptFile.call(this); | |
| 59 | |
| 39 this._debuggerModel = debuggerModel; | 60 this._debuggerModel = debuggerModel; |
| 40 this._workspace = workspace; | 61 this._workspace = workspace; |
| 41 this._workspace.addEventListener(WebInspector.Workspace.Events.UISourceCodeA dded, this._uiSourceCodeAddedToWorkspace, this); | 62 this._workspace.addEventListener(WebInspector.Workspace.Events.UISourceCodeA dded, this._uiSourceCodeAddedToWorkspace, this); |
| 42 this._boundURLs = new StringSet(); | 63 this._boundURLs = new StringSet(); |
| 64 /** @type {!Map.<!WebInspector.UISourceCode, !WebInspector.ResourceScriptFil e>} */ | |
| 65 this._scriptFiles = new Map(); | |
| 43 | 66 |
| 44 debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.GlobalObjec tCleared, this._debuggerReset, this); | 67 debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.GlobalObjec tCleared, this._debuggerReset, this); |
| 45 } | 68 } |
| 46 | 69 |
| 47 WebInspector.ResourceScriptMapping.prototype = { | 70 WebInspector.ResourceScriptMapping.prototype = { |
| 48 /** | 71 /** |
| 49 * @param {!WebInspector.RawLocation} rawLocation | 72 * @param {!WebInspector.RawLocation} rawLocation |
| 50 * @return {?WebInspector.UILocation} | 73 * @return {?WebInspector.UILocation} |
| 51 */ | 74 */ |
| 52 rawLocationToUILocation: function(rawLocation) | 75 rawLocationToUILocation: function(rawLocation) |
| 53 { | 76 { |
| 54 var debuggerModelLocation = /** @type {!WebInspector.DebuggerModel.Locat ion} */ (rawLocation); | 77 var debuggerModelLocation = /** @type {!WebInspector.DebuggerModel.Locat ion} */ (rawLocation); |
| 55 var script = debuggerModelLocation.script(); | 78 var script = debuggerModelLocation.script(); |
| 56 var uiSourceCode = this._workspaceUISourceCodeForScript(script); | 79 var uiSourceCode = this._workspaceUISourceCodeForScript(script); |
| 57 if (!uiSourceCode) | 80 if (!uiSourceCode) |
| 58 return null; | 81 return null; |
| 59 var scriptFile = uiSourceCode.scriptFile(); | 82 var scriptFile = /** @type {?WebInspector.ResourceScriptFile} */ (this._ scriptFiles.get(uiSourceCode)); |
| 60 if (scriptFile && ((scriptFile.hasDivergedFromVM() && !scriptFile.isMerg ingToVM()) || scriptFile.isDivergingFromVM())) | 83 if (scriptFile && ((scriptFile.hasDivergedFromVM() && !scriptFile.isMerg ingToVM()) || scriptFile.isDivergingFromVM())) |
| 61 return null; | 84 return null; |
| 62 return new WebInspector.UILocation(uiSourceCode, debuggerModelLocation.l ineNumber, debuggerModelLocation.columnNumber || 0); | 85 return new WebInspector.UILocation(uiSourceCode, debuggerModelLocation.l ineNumber, debuggerModelLocation.columnNumber || 0); |
| 63 }, | 86 }, |
| 64 | 87 |
| 65 /** | 88 /** |
| 66 * @param {!WebInspector.UISourceCode} uiSourceCode | 89 * @param {!WebInspector.UISourceCode} uiSourceCode |
| 67 * @param {number} lineNumber | 90 * @param {number} lineNumber |
| 68 * @param {number} columnNumber | 91 * @param {number} columnNumber |
| 69 * @return {?WebInspector.DebuggerModel.Location} | 92 * @return {?WebInspector.DebuggerModel.Location} |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 160 return this._debuggerModel.scriptsForSourceURL(uiSourceCode.url); | 183 return this._debuggerModel.scriptsForSourceURL(uiSourceCode.url); |
| 161 }, | 184 }, |
| 162 | 185 |
| 163 /** | 186 /** |
| 164 * @param {!WebInspector.UISourceCode} uiSourceCode | 187 * @param {!WebInspector.UISourceCode} uiSourceCode |
| 165 * @param {!Array.<!WebInspector.Script>} scripts | 188 * @param {!Array.<!WebInspector.Script>} scripts |
| 166 */ | 189 */ |
| 167 _bindUISourceCodeToScripts: function(uiSourceCode, scripts) | 190 _bindUISourceCodeToScripts: function(uiSourceCode, scripts) |
| 168 { | 191 { |
| 169 console.assert(scripts.length); | 192 console.assert(scripts.length); |
| 170 var scriptFile = new WebInspector.ResourceScriptFile(this, uiSourceCode, scripts); | 193 this._scriptFiles.put(uiSourceCode, new WebInspector.ResourceScriptFile( this, uiSourceCode, scripts)); |
| 171 uiSourceCode.setScriptFile(scriptFile); | |
| 172 for (var i = 0; i < scripts.length; ++i) | 194 for (var i = 0; i < scripts.length; ++i) |
| 173 scripts[i].updateLocations(); | 195 scripts[i].updateLocations(); |
| 174 uiSourceCode.setSourceMapping(this); | 196 uiSourceCode.setSourceMapping(this); |
| 175 this._boundURLs.add(uiSourceCode.url); | 197 this._boundURLs.add(uiSourceCode.url); |
| 176 }, | 198 }, |
| 177 | 199 |
| 178 /** | 200 /** |
| 179 * @param {!WebInspector.UISourceCode} uiSourceCode | 201 * @param {!WebInspector.UISourceCode} uiSourceCode |
| 180 */ | 202 */ |
| 181 _unbindUISourceCode: function(uiSourceCode) | 203 _unbindUISourceCode: function(uiSourceCode) |
| 182 { | 204 { |
| 183 var scriptFile = /** @type {!WebInspector.ResourceScriptFile} */ (uiSour ceCode.scriptFile()); | 205 var scriptFile = /** @type {?WebInspector.ResourceScriptFile} */ (this._ scriptFiles.get(uiSourceCode)); |
| 184 if (scriptFile) { | 206 if (scriptFile) { |
| 185 scriptFile.dispose(); | 207 scriptFile.dispose(); |
| 186 uiSourceCode.setScriptFile(null); | 208 this._scriptFiles.remove(uiSourceCode); |
| 187 } | 209 } |
| 188 uiSourceCode.setSourceMapping(null); | 210 uiSourceCode.setSourceMapping(null); |
| 189 }, | 211 }, |
| 190 | 212 |
| 191 _debuggerReset: function() | 213 _debuggerReset: function() |
| 192 { | 214 { |
| 193 var boundURLs = this._boundURLs.values(); | 215 var boundURLs = this._boundURLs.values(); |
| 194 for (var i = 0; i < boundURLs.length; ++i) | 216 for (var i = 0; i < boundURLs.length; ++i) |
| 195 { | 217 { |
| 196 var uiSourceCode = this._workspace.uiSourceCodeForURL(boundURLs[i]); | 218 var uiSourceCode = this._workspace.uiSourceCodeForURL(boundURLs[i]); |
| 197 if (!uiSourceCode) | 219 if (!uiSourceCode) |
| 198 continue; | 220 continue; |
| 199 this._unbindUISourceCode(uiSourceCode); | 221 this._unbindUISourceCode(uiSourceCode); |
| 200 } | 222 } |
| 201 this._boundURLs.clear(); | 223 this._boundURLs.clear(); |
| 224 this._scriptFiles.clear(); | |
| 202 }, | 225 }, |
| 226 | |
| 227 /** | |
| 228 * @param {!WebInspector.UISourceCode} uiSourceCode | |
| 229 * @return {?WebInspector.ResourceScriptFile} | |
| 230 */ | |
| 231 scriptFile: function(uiSourceCode) | |
| 232 { | |
| 233 return this._scriptFiles.get(uiSourceCode) || null; | |
|
vsevik
2014/04/09 10:39:42
|| null is redundant
| |
| 234 }, | |
| 235 | |
| 236 __proto__: WebInspector.SourceMappingWithScriptFile.prototype | |
| 203 } | 237 } |
| 204 | 238 |
| 205 /** | 239 /** |
| 206 * @interface | 240 * @interface |
| 207 * @extends {WebInspector.EventTarget} | 241 * @extends {WebInspector.EventTarget} |
| 208 */ | 242 */ |
| 209 WebInspector.ScriptFile = function() | 243 WebInspector.ScriptFile = function() |
| 210 { | 244 { |
| 211 } | 245 } |
| 212 | 246 |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 375 }, | 409 }, |
| 376 | 410 |
| 377 dispose: function() | 411 dispose: function() |
| 378 { | 412 { |
| 379 this._uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events. WorkingCopyCommitted, this._workingCopyCommitted, this); | 413 this._uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events. WorkingCopyCommitted, this._workingCopyCommitted, this); |
| 380 this._uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events. WorkingCopyChanged, this._workingCopyChanged, this); | 414 this._uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events. WorkingCopyChanged, this._workingCopyChanged, this); |
| 381 }, | 415 }, |
| 382 | 416 |
| 383 __proto__: WebInspector.Object.prototype | 417 __proto__: WebInspector.Object.prototype |
| 384 } | 418 } |
| OLD | NEW |