Changeset 109351 in webkit
- Timestamp:
- Mar 1, 2012 9:30:47 AM (12 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r109349 r109351 1 2012-03-01 Pavel Podivilov <podivilov@chromium.org> 2 3 Web Inspector: use live location to update console message bubbles. 4 https://bugs.webkit.org/show_bug.cgi?id=80023 5 6 Reviewed by Vsevolod Vlasov. 7 8 * inspector/front-end/DebuggerPresentationModel.js: 9 (WebInspector.DebuggerPresentationModel): 10 (WebInspector.DebuggerPresentationModel.prototype._uiSourceCodeListChanged): 11 (WebInspector.DebuggerPresentationModel.prototype._consoleMessageAdded): 12 (WebInspector.DebuggerPresentationModel.prototype._addConsoleMessageToScript.updateLocation): 13 (WebInspector.DebuggerPresentationModel.prototype._addConsoleMessageToScript): 14 (WebInspector.DebuggerPresentationModel.prototype._addPendingConsoleMessage): 15 (WebInspector.DebuggerPresentationModel.prototype._addPendingConsoleMessagesToScript): 16 (WebInspector.DebuggerPresentationModel.prototype._consoleCleared): 17 (WebInspector.DebuggerPresentationModel.prototype.messagesForUISourceCode): 18 (WebInspector.DebuggerPresentationModel.prototype._scriptForURLAndLocation): 19 (WebInspector.DebuggerPresentationModel.prototype._debuggerReset): 20 * inspector/front-end/RawSourceCode.js: 21 (WebInspector.RawSourceCode): 22 1 23 2012-03-01 Vsevolod Vlasov <vsevik@chromium.org> 2 24 -
trunk/Source/WebCore/inspector/front-end/DebuggerPresentationModel.js
r109328 r109351 45 45 this._breakpointManager = new WebInspector.BreakpointManager(WebInspector.settings.breakpoints, this._breakpointAdded.bind(this), this._breakpointRemoved.bind(this), WebInspector.debuggerModel); 46 46 47 this._pendingConsoleMessages = {}; 48 this._consoleMessageLiveLocations = []; 49 this._presentationConsoleMessages = []; 50 47 51 WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.ParsedScriptSource, this._parsedScriptSource, this); 48 52 WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.FailedToParseScriptSource, this._failedToParseScriptSource, this); … … 150 154 this._rawSourceCodeForDocumentURL[script.sourceURL] = rawSourceCode; 151 155 156 this._addPendingConsoleMessagesToScript(script); 157 152 158 if (rawSourceCode.uiSourceCodeList().length) 153 159 this._uiSourceCodeListChanged(rawSourceCode, []); … … 205 211 206 212 this._restoreBreakpoints(rawSourceCode); 207 this._restoreConsoleMessages(rawSourceCode);208 213 this._restoreExecutionLine(rawSourceCode); 209 214 … … 230 235 for (var lineNumber in breakpoints) 231 236 this._breakpointAdded(breakpoints[lineNumber]); 232 }233 },234 235 /**236 * @param {WebInspector.RawSourceCode} rawSourceCode237 */238 _restoreConsoleMessages: function(rawSourceCode)239 {240 var messages = rawSourceCode.messages;241 for (var i = 0; i < messages.length; ++i) {242 var message = messages[i];243 var uiLocation = rawSourceCode.rawLocationToUILocation(message.location);244 if (uiLocation)245 message._presentationMessage = new WebInspector.PresentationConsoleMessage(uiLocation.uiSourceCode, uiLocation.lineNumber, message);246 237 } 247 238 }, … … 358 349 return; 359 350 360 var rawSourceCode = this._rawSourceCodeForScriptWithURL(message.url); 361 if (!rawSourceCode) 351 var script = this._scriptForURLAndLocation(message.url, message.location); 352 if (script) 353 this._addConsoleMessageToScript(message, script); 354 else 355 this._addPendingConsoleMessage(message); 356 }, 357 358 /** 359 * @param {WebInspector.ConsoleMessage} message 360 * @param {WebInspector.Script} script 361 */ 362 _addConsoleMessageToScript: function(message, script) 363 { 364 var rawSourceCode = this._rawSourceCodeForScript(script); 365 function updateLocation(uiLocation) 366 { 367 var presentationMessage = new WebInspector.PresentationConsoleMessage(uiLocation.uiSourceCode, uiLocation.lineNumber, message); 368 this._presentationConsoleMessages.push(presentationMessage); 369 this.dispatchEventToListeners(WebInspector.DebuggerPresentationModel.Events.ConsoleMessageAdded, presentationMessage); 370 } 371 var liveLocation = rawSourceCode.createLiveLocation(message.location, updateLocation.bind(this)); 372 liveLocation.init(); 373 this._consoleMessageLiveLocations.push(liveLocation); 374 }, 375 376 /** 377 * @param {WebInspector.ConsoleMessage} message 378 */ 379 _addPendingConsoleMessage: function(message) 380 { 381 if (!this._pendingConsoleMessages[message.url]) 382 this._pendingConsoleMessages[message.url] = []; 383 this._pendingConsoleMessages[message.url].push(message); 384 }, 385 386 /** 387 * @param {WebInspector.Script} script 388 */ 389 _addPendingConsoleMessagesToScript: function(script) 390 { 391 var messages = this._pendingConsoleMessages[script.sourceURL]; 392 if (!messages) 362 393 return; 363 394 364 rawSourceCode.messages.push(message); 365 var uiLocation = rawSourceCode.rawLocationToUILocation(message.location); 366 if (uiLocation) { 367 message._presentationMessage = new WebInspector.PresentationConsoleMessage(uiLocation.uiSourceCode, uiLocation.lineNumber, message); 368 this.dispatchEventToListeners(WebInspector.DebuggerPresentationModel.Events.ConsoleMessageAdded, message._presentationMessage); 369 } 395 var pendingMessages = []; 396 for (var i = 0; i < messages.length; i++) { 397 var message = messages[i]; 398 if (script === this._scriptForURLAndLocation(message.url, message.location)) 399 this._addConsoleMessageToScript(messages, script); 400 else 401 pendingMessages.push(message); 402 } 403 404 if (pendingMessages.length) 405 this._pendingConsoleMessages[script.sourceURL] = pendingMessages; 406 else 407 delete this._pendingConsoleMessages[script.sourceURL]; 370 408 }, 371 409 372 410 _consoleCleared: function() 373 411 { 374 for (var i = 0; i < this._rawSourceCodes.length; ++i) 375 this._rawSourceCodes[i].messages = []; 412 this._pendingConsoleMessages = {}; 413 for (var i = 0; i < this._consoleMessageLiveLocations.length; ++i) 414 this._consoleMessageLiveLocations[i].dispose(); 415 this._consoleMessageLiveLocations = []; 416 this._presentationConsoleMessages = []; 376 417 this.dispatchEventToListeners(WebInspector.DebuggerPresentationModel.Events.ConsoleMessagesCleared); 377 418 }, … … 402 443 /** 403 444 * @param {WebInspector.UISourceCode} uiSourceCode 404 * @return {Array.<WebInspector. ConsoleMessage>}445 * @return {Array.<WebInspector.PresentationConsoleMessage>} 405 446 */ 406 447 messagesForUISourceCode: function(uiSourceCode) 407 448 { 408 var rawSourceCode = uiSourceCode.rawSourceCode;409 449 var messages = []; 410 for (var i = 0; i < rawSourceCode.messages.length; ++i) 411 messages.push(rawSourceCode.messages[i]._presentationMessage); 450 for (var i = 0; i < this._presentationConsoleMessages.length; ++i) { 451 var message = this._presentationConsoleMessages[i]; 452 if (message.uiSourceCode === uiSourceCode) 453 messages.push(message); 454 } 412 455 return messages; 413 456 }, … … 627 670 }, 628 671 672 /** 673 * @param {string} url 674 * @param {DebuggerAgent.Location} rawLocation 675 */ 676 _scriptForURLAndLocation: function(url, rawLocation) 677 { 678 var scripts = WebInspector.debuggerModel.scriptsForURL(url); 679 for (var i = 0; i < scripts.length; ++i) { 680 var script = scripts[i]; 681 if (script.lineOffset > rawLocation.lineNumber || (script.lineOffset === rawLocation.lineNumber && script.columnOffset > rawLocation.columnNumber)) 682 continue; 683 if (script.endLine < rawLocation.lineNumber || (script.endLine === rawLocation.lineNumber && script.endColumn <= rawLocation.columnNumber)) 684 continue; 685 return script; 686 } 687 return null; 688 }, 689 629 690 _debuggerReset: function() 630 691 { … … 643 704 this._selectedCallFrame = null; 644 705 this._breakpointManager.debuggerReset(); 706 this._pendingConsoleMessages = {}; 707 this._consoleMessageLiveLocations = []; 708 this._presentationConsoleMessages = []; 645 709 this.dispatchEventToListeners(WebInspector.DebuggerPresentationModel.Events.DebuggerReset); 646 710 } -
trunk/Source/WebCore/inspector/front-end/RawSourceCode.js
r109328 r109351 52 52 this._compilerSourceMapping = compilerSourceMapping; 53 53 this._resource = resource; 54 this.messages = [];55 54 56 55 this._useTemporaryContent = !this._compilerSourceMapping && this._resource && !this._resource.finished;
Note: See TracChangeset
for help on using the changeset viewer.