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 22 matching lines...) Expand all Loading... |
33 * @implements {WebInspector.ScriptSourceMapping} | 33 * @implements {WebInspector.ScriptSourceMapping} |
34 * @param {!WebInspector.DebuggerModel} debuggerModel | 34 * @param {!WebInspector.DebuggerModel} debuggerModel |
35 * @param {!WebInspector.Workspace} workspace | 35 * @param {!WebInspector.Workspace} workspace |
36 * @param {!WebInspector.DebuggerWorkspaceBinding} debuggerWorkspaceBinding | 36 * @param {!WebInspector.DebuggerWorkspaceBinding} debuggerWorkspaceBinding |
37 */ | 37 */ |
38 WebInspector.ResourceScriptMapping = function(debuggerModel, workspace, debugger
WorkspaceBinding) | 38 WebInspector.ResourceScriptMapping = function(debuggerModel, workspace, debugger
WorkspaceBinding) |
39 { | 39 { |
40 this._target = debuggerModel.target(); | 40 this._target = debuggerModel.target(); |
41 this._debuggerModel = debuggerModel; | 41 this._debuggerModel = debuggerModel; |
42 this._workspace = workspace; | 42 this._workspace = workspace; |
43 this._workspace.addEventListener(WebInspector.Workspace.Events.UISourceCodeA
dded, this._uiSourceCodeAddedToWorkspace, this); | 43 this._workspace.addEventListener(WebInspector.Workspace.Events.UISourceCodeA
dded, this._uiSourceCodeAdded, this); |
| 44 this._workspace.addEventListener(WebInspector.Workspace.Events.UISourceCodeR
emoved, this._uiSourceCodeRemoved, this); |
44 this._debuggerWorkspaceBinding = debuggerWorkspaceBinding; | 45 this._debuggerWorkspaceBinding = debuggerWorkspaceBinding; |
45 this._boundURLs = new StringSet(); | 46 this._boundURLs = new StringSet(); |
46 | 47 |
| 48 /** @type {!Map.<!WebInspector.UISourceCode, !WebInspector.ResourceScriptFil
e>} */ |
| 49 this._uiSourceCodeToScriptFile = new Map(); |
| 50 |
47 debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.GlobalObjec
tCleared, this._debuggerReset, this); | 51 debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.GlobalObjec
tCleared, this._debuggerReset, this); |
48 } | 52 } |
49 | 53 |
50 WebInspector.ResourceScriptMapping.prototype = { | 54 WebInspector.ResourceScriptMapping.prototype = { |
51 /** | 55 /** |
52 * @param {!WebInspector.RawLocation} rawLocation | 56 * @param {!WebInspector.RawLocation} rawLocation |
53 * @return {?WebInspector.UILocation} | 57 * @return {?WebInspector.UILocation} |
54 */ | 58 */ |
55 rawLocationToUILocation: function(rawLocation) | 59 rawLocationToUILocation: function(rawLocation) |
56 { | 60 { |
57 var debuggerModelLocation = /** @type {!WebInspector.DebuggerModel.Locat
ion} */ (rawLocation); | 61 var debuggerModelLocation = /** @type {!WebInspector.DebuggerModel.Locat
ion} */ (rawLocation); |
58 var script = debuggerModelLocation.script(); | 62 var script = debuggerModelLocation.script(); |
59 var uiSourceCode = this._workspaceUISourceCodeForScript(script); | 63 var uiSourceCode = this._workspaceUISourceCodeForScript(script); |
60 if (!uiSourceCode) | 64 if (!uiSourceCode) |
61 return null; | 65 return null; |
62 var scriptFile = uiSourceCode.scriptFileForTarget(this._target); | 66 var scriptFile = this.scriptFile(uiSourceCode); |
63 if (scriptFile && ((scriptFile.hasDivergedFromVM() && !scriptFile.isMerg
ingToVM()) || scriptFile.isDivergingFromVM())) | 67 if (scriptFile && ((scriptFile.hasDivergedFromVM() && !scriptFile.isMerg
ingToVM()) || scriptFile.isDivergingFromVM())) |
64 return null; | 68 return null; |
65 return uiSourceCode.uiLocation(debuggerModelLocation.lineNumber, debugge
rModelLocation.columnNumber || 0); | 69 return uiSourceCode.uiLocation(debuggerModelLocation.lineNumber, debugge
rModelLocation.columnNumber || 0); |
66 }, | 70 }, |
67 | 71 |
68 /** | 72 /** |
69 * @param {!WebInspector.UISourceCode} uiSourceCode | 73 * @param {!WebInspector.UISourceCode} uiSourceCode |
70 * @param {number} lineNumber | 74 * @param {number} lineNumber |
71 * @param {number} columnNumber | 75 * @param {number} columnNumber |
72 * @return {?WebInspector.DebuggerModel.Location} | 76 * @return {?WebInspector.DebuggerModel.Location} |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
105 /** | 109 /** |
106 * @param {!WebInspector.UISourceCode} uiSourceCode | 110 * @param {!WebInspector.UISourceCode} uiSourceCode |
107 * @param {number} lineNumber | 111 * @param {number} lineNumber |
108 * @return {boolean} | 112 * @return {boolean} |
109 */ | 113 */ |
110 uiLineHasMapping: function(uiSourceCode, lineNumber) | 114 uiLineHasMapping: function(uiSourceCode, lineNumber) |
111 { | 115 { |
112 return true; | 116 return true; |
113 }, | 117 }, |
114 | 118 |
115 _uiSourceCodeAddedToWorkspace: function(event) | 119 /** |
| 120 * @param {!WebInspector.UISourceCode} uiSourceCode |
| 121 * @return {?WebInspector.ResourceScriptFile} |
| 122 */ |
| 123 scriptFile: function(uiSourceCode) |
| 124 { |
| 125 return this._uiSourceCodeToScriptFile.get(uiSourceCode) || null; |
| 126 }, |
| 127 |
| 128 /** |
| 129 * @param {!WebInspector.UISourceCode} uiSourceCode |
| 130 * @param {?WebInspector.ResourceScriptFile} scriptFile |
| 131 */ |
| 132 _setScriptFile: function(uiSourceCode, scriptFile) |
| 133 { |
| 134 if (scriptFile) |
| 135 this._uiSourceCodeToScriptFile.put(uiSourceCode, scriptFile); |
| 136 else |
| 137 this._uiSourceCodeToScriptFile.remove(uiSourceCode); |
| 138 }, |
| 139 |
| 140 /** |
| 141 * @param {!WebInspector.Event} event |
| 142 */ |
| 143 _uiSourceCodeAdded: function(event) |
116 { | 144 { |
117 var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data
); | 145 var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data
); |
| 146 if (!uiSourceCode.url) |
| 147 return; |
118 if (uiSourceCode.project().isServiceProject()) | 148 if (uiSourceCode.project().isServiceProject()) |
119 return; | 149 return; |
120 if (!uiSourceCode.url) | |
121 return; | |
122 | 150 |
123 var scripts = this._scriptsForUISourceCode(uiSourceCode); | 151 var scripts = this._scriptsForUISourceCode(uiSourceCode); |
124 if (!scripts.length) | 152 if (!scripts.length) |
125 return; | 153 return; |
126 | 154 |
127 this._bindUISourceCodeToScripts(uiSourceCode, scripts); | 155 this._bindUISourceCodeToScripts(uiSourceCode, scripts); |
128 }, | 156 }, |
129 | 157 |
130 /** | 158 /** |
| 159 * @param {!WebInspector.Event} event |
| 160 */ |
| 161 _uiSourceCodeRemoved: function(event) |
| 162 { |
| 163 var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data
); |
| 164 if (!uiSourceCode.url) |
| 165 return; |
| 166 if (uiSourceCode.project().isServiceProject()) |
| 167 return; |
| 168 |
| 169 this._unbindUISourceCode(uiSourceCode); |
| 170 }, |
| 171 |
| 172 /** |
131 * @param {!WebInspector.UISourceCode} uiSourceCode | 173 * @param {!WebInspector.UISourceCode} uiSourceCode |
132 */ | 174 */ |
133 _hasMergedToVM: function(uiSourceCode) | 175 _hasMergedToVM: function(uiSourceCode) |
134 { | 176 { |
135 var scripts = this._scriptsForUISourceCode(uiSourceCode); | 177 var scripts = this._scriptsForUISourceCode(uiSourceCode); |
136 if (!scripts.length) | 178 if (!scripts.length) |
137 return; | 179 return; |
138 for (var i = 0; i < scripts.length; ++i) | 180 for (var i = 0; i < scripts.length; ++i) |
139 this._debuggerWorkspaceBinding.updateLocations(scripts[i]); | 181 this._debuggerWorkspaceBinding.updateLocations(scripts[i]); |
140 }, | 182 }, |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
174 }, | 216 }, |
175 | 217 |
176 /** | 218 /** |
177 * @param {!WebInspector.UISourceCode} uiSourceCode | 219 * @param {!WebInspector.UISourceCode} uiSourceCode |
178 * @param {!Array.<!WebInspector.Script>} scripts | 220 * @param {!Array.<!WebInspector.Script>} scripts |
179 */ | 221 */ |
180 _bindUISourceCodeToScripts: function(uiSourceCode, scripts) | 222 _bindUISourceCodeToScripts: function(uiSourceCode, scripts) |
181 { | 223 { |
182 console.assert(scripts.length); | 224 console.assert(scripts.length); |
183 var scriptFile = new WebInspector.ResourceScriptFile(this, uiSourceCode,
scripts); | 225 var scriptFile = new WebInspector.ResourceScriptFile(this, uiSourceCode,
scripts); |
184 uiSourceCode.setScriptFileForTarget(this._target, scriptFile); | 226 this._setScriptFile(uiSourceCode, scriptFile); |
185 for (var i = 0; i < scripts.length; ++i) | 227 for (var i = 0; i < scripts.length; ++i) |
186 this._debuggerWorkspaceBinding.updateLocations(scripts[i]); | 228 this._debuggerWorkspaceBinding.updateLocations(scripts[i]); |
187 uiSourceCode.setSourceMappingForTarget(this._target, this); | 229 this._debuggerWorkspaceBinding.setSourceMapping(this._target, uiSourceCo
de, this); |
188 this._boundURLs.add(uiSourceCode.url); | 230 this._boundURLs.add(uiSourceCode.url); |
189 }, | 231 }, |
190 | 232 |
191 /** | 233 /** |
192 * @param {!WebInspector.UISourceCode} uiSourceCode | 234 * @param {!WebInspector.UISourceCode} uiSourceCode |
193 */ | 235 */ |
194 _unbindUISourceCode: function(uiSourceCode) | 236 _unbindUISourceCode: function(uiSourceCode) |
195 { | 237 { |
196 var scriptFile = /** @type {!WebInspector.ResourceScriptFile} */ (uiSour
ceCode.scriptFileForTarget(this._target)); | 238 var scriptFile = this.scriptFile(uiSourceCode); |
197 if (scriptFile) { | 239 if (scriptFile) { |
198 scriptFile.dispose(); | 240 scriptFile.dispose(); |
199 uiSourceCode.setScriptFileForTarget(this._target, null); | 241 this._setScriptFile(uiSourceCode, null); |
200 } | 242 } |
201 uiSourceCode.setSourceMappingForTarget(this._target, null); | 243 this._debuggerWorkspaceBinding.setSourceMapping(this._target, uiSourceCo
de, null); |
202 }, | 244 }, |
203 | 245 |
204 _debuggerReset: function() | 246 _debuggerReset: function() |
205 { | 247 { |
206 var boundURLs = this._boundURLs.values(); | 248 var boundURLs = this._boundURLs.values(); |
207 for (var i = 0; i < boundURLs.length; ++i) | 249 for (var i = 0; i < boundURLs.length; ++i) |
208 { | 250 { |
209 var uiSourceCode = this._workspace.uiSourceCodeForURL(boundURLs[i]); | 251 var uiSourceCode = this._workspace.uiSourceCodeForURL(boundURLs[i]); |
210 if (!uiSourceCode) | 252 if (!uiSourceCode) |
211 continue; | 253 continue; |
212 this._unbindUISourceCode(uiSourceCode); | 254 this._unbindUISourceCode(uiSourceCode); |
213 } | 255 } |
214 this._boundURLs.clear(); | 256 this._boundURLs.clear(); |
215 }, | 257 }, |
216 | 258 |
217 dispose: function() | 259 dispose: function() |
218 { | 260 { |
219 this._debuggerReset(); | 261 this._debuggerReset(); |
220 this._workspace.removeEventListener(WebInspector.Workspace.Events.UISour
ceCodeAdded, this._uiSourceCodeAddedToWorkspace, this); | 262 this._workspace.removeEventListener(WebInspector.Workspace.Events.UISour
ceCodeAdded, this._uiSourceCodeAdded, this); |
| 263 this._workspace.removeEventListener(WebInspector.Workspace.Events.UISour
ceCodeRemoved, this._uiSourceCodeRemoved, this); |
221 } | 264 } |
222 | 265 |
223 } | 266 } |
224 | 267 |
225 /** | 268 /** |
226 * @constructor | 269 * @constructor |
227 * @extends {WebInspector.Object} | 270 * @extends {WebInspector.Object} |
228 * @param {!WebInspector.ResourceScriptMapping} resourceScriptMapping | 271 * @param {!WebInspector.ResourceScriptMapping} resourceScriptMapping |
229 * @param {!WebInspector.UISourceCode} uiSourceCode | 272 * @param {!WebInspector.UISourceCode} uiSourceCode |
230 * @param {!Array.<!WebInspector.Script>} scripts | 273 * @param {!Array.<!WebInspector.Script>} scripts |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
388 */ | 431 */ |
389 addSourceMapURL: function(sourceMapURL) | 432 addSourceMapURL: function(sourceMapURL) |
390 { | 433 { |
391 if (!this._script) | 434 if (!this._script) |
392 return; | 435 return; |
393 this._script.addSourceMapURL(sourceMapURL); | 436 this._script.addSourceMapURL(sourceMapURL); |
394 }, | 437 }, |
395 | 438 |
396 __proto__: WebInspector.Object.prototype | 439 __proto__: WebInspector.Object.prototype |
397 } | 440 } |
OLD | NEW |