Changeset 110681 in webkit
- Timestamp:
- Mar 14, 2012 2:59:50 AM (12 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r110678 r110681 1 2012-03-12 Vsevolod Vlasov <vsevik@chromium.org> 2 3 Web Inspector: Introduce SnippetsScriptMapping. 4 https://bugs.webkit.org/show_bug.cgi?id=80890 5 6 Reviewed by Pavel Feldman. 7 8 * inspector/front-end/ScriptMapping.js: 9 (WebInspector.MainScriptMapping): 10 (WebInspector.MainScriptMapping.prototype.addScript): 11 (WebInspector.MainScriptMapping.prototype._mappingForScript): 12 * inspector/front-end/SnippetsModel.js: 13 (WebInspector.SnippetsModel.prototype.snippetForId): 14 (WebInspector.SnippetsModel.prototype.snippetForSourceURL): 15 (WebInspector.SnippetsScriptMapping): 16 (WebInspector.SnippetsScriptMapping.prototype.uiSourceCodeList): 17 (WebInspector.SnippetsScriptMapping.prototype.addScript): 18 (WebInspector.SnippetsScriptMapping.prototype._snippetAdded): 19 (WebInspector.SnippetsScriptMapping.prototype._releaseSnippetScript.get if): 20 (WebInspector.SnippetsScriptMapping.prototype._releaseSnippetScript): 21 (WebInspector.SnippetsScriptMapping.prototype._snippetDeleted.get this): 22 (WebInspector.SnippetsScriptMapping.prototype._snippetDeleted): 23 (WebInspector.SnippetsScriptMapping.prototype.reset): 24 (WebInspector.SnippetContentProvider): 25 1 26 2012-03-14 Sheriff Bot <webkit.review.bot@gmail.com> 2 27 -
trunk/Source/WebCore/inspector/front-end/ScriptMapping.js
r110549 r110681 71 71 { 72 72 this._mappings = []; 73 73 74 this._resourceMapping = new WebInspector.ResourceScriptMapping(); 74 this._resourceMapping.addEventListener(WebInspector.ScriptMapping.Events.UISourceCodeListChanged, this._handleUISourceCodeListChanged, this);75 75 this._mappings.push(this._resourceMapping); 76 76 77 if (WebInspector.experimentsSettings.snippetsSupport.isEnabled()) { 78 this._snippetsMapping = new WebInspector.SnippetsScriptMapping(); 79 this._mappings.push(this._snippetsMapping); 80 } 81 82 for (var i = 0; i < this._mappings.length; ++i) 83 this._mappings[i].addEventListener(WebInspector.ScriptMapping.Events.UISourceCodeListChanged, this._handleUISourceCodeListChanged, this); 84 77 85 this._mappingForScriptId = {}; 78 86 this._mappingForUISourceCode = new Map(); … … 156 164 this._liveLocationsForScriptId[script.scriptId] = []; 157 165 158 var mapping = this._resourceMapping; 159 166 var mapping = this._mappingForScript(script); 160 167 this._mappingForScriptId[script.scriptId] = mapping; 161 168 mapping.addScript(script); 169 }, 170 171 /** 172 * @param {WebInspector.Script} script 173 * @return {WebInspector.ScriptMapping} 174 */ 175 _mappingForScript: function(script) 176 { 177 if (WebInspector.experimentsSettings.snippetsSupport.isEnabled()) { 178 if (WebInspector.snippetsModel.snippetIdForSourceURL(script.sourceURL)) 179 return this._snippetsMapping; 180 } 181 182 return this._resourceMapping; 162 183 }, 163 184 -
trunk/Source/WebCore/inspector/front-end/SnippetsModel.js
r110576 r110681 44 44 SnippetAdded: "SnippetAdded", 45 45 SnippetRenamed: "SnippetRenamed", 46 Snippet Deleted: "SnippetDeleted",46 SnippetRemoved: "SnippetRemoved", 47 47 } 48 48 … … 82 82 this._snippets.splice(i, 1); 83 83 this._saveSettings(); 84 this.dispatchEventToListeners(WebInspector.SnippetsModel.EventTypes.Snippet Deleted, snippet);84 this.dispatchEventToListeners(WebInspector.SnippetsModel.EventTypes.SnippetRemoved, snippet); 85 85 break; 86 86 } … … 135 135 { 136 136 return this._snippets[snippetId]; 137 }, 138 139 /** 140 * @param {string} sourceURL 141 * @return {string} 142 */ 143 snippetIdForSourceURL: function(sourceURL) 144 { 145 // FIXME: to be implemented. 146 return null; 147 }, 148 149 /** 150 * @param {string} sourceURL 151 * @return {WebInspector.Snippet} 152 */ 153 snippetForSourceURL: function(sourceURL) 154 { 155 // FIXME: to be implemented. 156 return null; 137 157 } 138 158 } … … 156 176 } 157 177 178 WebInspector.Snippet.evaluatedSnippetExtraLinesCount = 2; 179 158 180 /** 159 181 * @param {Object} serializedSnippet … … 222 244 223 245 WebInspector.Snippet.prototype.__proto__ = WebInspector.Object.prototype; 246 247 /** 248 * @constructor 249 * @extends {WebInspector.ScriptMapping} 250 */ 251 WebInspector.SnippetsScriptMapping = function() 252 { 253 this._snippetForScriptId = {}; 254 this._uiSourceCodeForScriptId = {}; 255 this._scriptForUISourceCode = new Map(); 256 this._snippetForUISourceCode = new Map(); 257 this._uiSourceCodeForSnippet = new Map(); 258 259 WebInspector.snippetsModel.addEventListener(WebInspector.SnippetsModel.EventTypes.SnippetAdded, this._snippetAdded.bind(this)); 260 WebInspector.snippetsModel.addEventListener(WebInspector.SnippetsModel.EventTypes.SnippetRemoved, this._snippetRemoved.bind(this)); 261 } 262 263 WebInspector.SnippetsScriptMapping.prototype = { 264 /** 265 * @param {DebuggerAgent.Location} rawLocation 266 * @return {WebInspector.UILocation} 267 */ 268 rawLocationToUILocation: function(rawLocation) 269 { 270 var uiSourceCode = this._uiSourceCodeForScriptId[rawLocation.scriptId]; 271 272 var snippet = this._snippetForScriptId[rawLocation.scriptId]; 273 if (snippet) { 274 var uiLineNumber = rawLocation.lineNumber - WebInspector.Snippet.evaluatedSnippetExtraLinesCount; 275 return new WebInspector.UILocation(uiSourceCode, uiLineNumber, rawLocation.columnNumber || 0); 276 } 277 278 return new WebInspector.UILocation(uiSourceCode, rawLocation.lineNumber, rawLocation.columnNumber || 0); 279 }, 280 281 /** 282 * @param {WebInspector.UISourceCode} uiSourceCode 283 * @param {number} lineNumber 284 * @param {number} columnNumber 285 * @return {DebuggerAgent.Location} 286 */ 287 uiLocationToRawLocation: function(uiSourceCode, lineNumber, columnNumber) 288 { 289 var script = this._scriptForUISourceCode.get(uiSourceCode); 290 if (!script) 291 return null; 292 293 var snippet = this._snippetForUISourceCode.get(uiSourceCode); 294 if (snippet) { 295 var rawLineNumber = lineNumber + WebInspector.Snippet.evaluatedSnippetExtraLinesCount; 296 return WebInspector.debuggerModel.createRawLocation(script, rawLineNumber, columnNumber); 297 } 298 299 return WebInspector.debuggerModel.createRawLocation(script, lineNumber, columnNumber); 300 }, 301 302 /** 303 * @return {Array.<WebInspector.UISourceCode>} 304 */ 305 uiSourceCodeList: function() 306 { 307 var result = []; 308 for (var uiSourceCode in this._uiSourceCodeForSnippet.values()) 309 result.push(uiSourceCode); 310 result = result.concat(this._releasedUISourceCodes()); 311 return result; 312 }, 313 314 /** 315 * @return {Array.<WebInspector.UISourceCode>} 316 */ 317 _releasedUISourceCodes: function() 318 { 319 var result = []; 320 for (var scriptId in this._uiSourceCodeForScriptId) { 321 var uiSourceCode = this._uiSourceCodeForScriptId[scriptId]; 322 if (this._snippetForUISourceCode.get(uiSourceCode)) 323 continue; 324 result.push(uiSourceCode); 325 } 326 return result; 327 }, 328 329 /** 330 * @param {WebInspector.Script} script 331 */ 332 addScript: function(script) 333 { 334 var snippet = WebInspector.snippetsModel.snippetForSourceURL(script.sourceURL); 335 if (!snippet) { 336 this._createUISourceCodeForScript(script); 337 return; 338 } 339 this._releaseSnippetScript(snippet); 340 var uiSourceCode = this._uiSourceCodeForSnippet.get(snippet); 341 this._uiSourceCodeForScriptId[script.scriptId] = uiSourceCode; 342 this._snippetForScriptId[script.scriptId] = snippet; 343 this._scriptForUISourceCode.put(uiSourceCode, script); 344 var data = { removedItems: [], addedItems: [], scriptIds: [script.scriptId] }; 345 this.dispatchEventToListeners(WebInspector.ScriptMapping.Events.UISourceCodeListChanged, data); 346 }, 347 348 /** 349 * @param {WebInspector.Event} event 350 */ 351 _snippetAdded: function(event) 352 { 353 var snippet = /** @type {WebInspector.Snippet} */ event.data; 354 var uiSourceCodeId = ""; // FIXME: to be implemented. 355 var uiSourceCodeURL = ""; // FIXME: to be implemented. 356 var uiSourceCode = new WebInspector.UISourceCode(uiSourceCodeId, uiSourceCodeURL, new WebInspector.SnippetContentProvider(snippet)); 357 uiSourceCode.isSnippet = true; 358 uiSourceCode.isEditable = true; 359 this._uiSourceCodeForSnippet.put(snippet, uiSourceCode); 360 this._snippetForUISourceCode.put(uiSourceCode, snippet); 361 var data = { removedItems: [], addedItems: [uiSourceCode], scriptIds: [] }; 362 this.dispatchEventToListeners(WebInspector.ScriptMapping.Events.UISourceCodeListChanged, data); 363 }, 364 365 /** 366 * @param {WebInspector.Script} script 367 */ 368 _createUISourceCodeForScript: function(script) 369 { 370 var uiSourceCode = new WebInspector.UISourceCode(script.sourceURL, script.sourceURL, new WebInspector.ScriptContentProvider(script)); 371 uiSourceCode.isSnippetEvaluation = true; 372 this._uiSourceCodeForScriptId[script.scriptId] = uiSourceCode; 373 this._scriptForUISourceCode.put(uiSourceCode, script); 374 var data = { removedItems: [], addedItems: [uiSourceCode], scriptIds: [script.scriptId] }; 375 this.dispatchEventToListeners(WebInspector.ScriptMapping.Events.UISourceCodeListChanged, data); 376 }, 377 378 /** 379 * @param {WebInspector.Snippet} snippet 380 */ 381 _releaseSnippetScript: function(snippet) 382 { 383 var uiSourceCode = this._uiSourceCodeForSnippet.get(snippet); 384 var script = this._scriptForUISourceCode.get(uiSourceCode); 385 if (!script) 386 return; 387 388 delete this._uiSourceCodeForScriptId[script.scriptId]; 389 delete this._snippetForScriptId[script.scriptId]; 390 this._scriptForUISourceCode.remove(uiSourceCode); 391 392 this._createUISourceCodeForScript(script); 393 }, 394 395 /** 396 * @param {WebInspector.Event} event 397 */ 398 _snippetRemoved: function(event) 399 { 400 var snippet = /** @type {WebInspector.Snippet} */ event.data; 401 var uiSourceCode = this._uiSourceCodeForSnippet.get(snippet); 402 this._releaseSnippetScript(snippet); 403 this._uiSourceCodeForSnippet.remove(snippet); 404 this._snippetForUISourceCode.remove(uiSourceCode); 405 var data = { removedItems: [uiSourceCode], addedItems: [], scriptIds: [] }; 406 this.dispatchEventToListeners(WebInspector.ScriptMapping.Events.UISourceCodeListChanged, data); 407 }, 408 409 reset: function() 410 { 411 var removedUISourceCodes = this._releasedUISourceCodes(); 412 this._snippetForScriptId = {}; 413 this._uiSourceCodeForScriptId = {}; 414 this._scriptForUISourceCode = new Map(); 415 var data = { removedItems: removedUISourceCodes, addedItems: [], scriptIds: [] }; 416 this.dispatchEventToListeners(WebInspector.ScriptMapping.Events.UISourceCodeListChanged, data); 417 } 418 } 419 420 WebInspector.SnippetsScriptMapping.prototype.__proto__ = WebInspector.ScriptMapping.prototype; 421 422 /** 423 * @constructor 424 * @extends {WebInspector.StaticContentProvider} 425 * @param {WebInspector.Snippet} snippet 426 */ 427 WebInspector.SnippetContentProvider = function(snippet) 428 { 429 WebInspector.StaticContentProvider.call(this, "text/javascript", snippet.content); 430 } 431 432 WebInspector.SnippetContentProvider.prototype.__proto__ = WebInspector.StaticContentProvider.prototype; 433 434 /** 435 * @type {?WebInspector.SnippetsModel} 436 */ 437 WebInspector.snippetsModel = null;
Note: See TracChangeset
for help on using the changeset viewer.