Changeset 96694 in webkit
- Timestamp:
- Oct 5, 2011 4:41:07 AM (13 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r96687 r96694 1 2011-10-04 Ilya Tikhonovsky <loislo@chromium.org> 2 3 Web Inspector: debuggerPresentatioModel.linkifyLocation leaks updateAnchor closure instances. 4 https://bugs.webkit.org/show_bug.cgi?id=69146 5 6 In many places we use linkifyLocation function to produce a link node which updates automatically when the source file is changed on the fly. 7 Such changes happen when we use pretty print or another operation that changes the source code somehow. 8 linkifyLocation associates a new instance of updateAnchor closure with the each link node and add the closure to the SourceMappingUpdated event's list. 9 As the result the node<->closure pairs wouldn't be collected until reset the UI and DebuggerPresentationModel. 10 11 Reviewed by Pavel Feldman. 12 13 * inspector/debugger/linkifier-expected.txt: Added. 14 * inspector/debugger/linkifier.html: Added. 15 1 16 2011-10-05 Hans Wennborg <hans@chromium.org> 2 17 -
trunk/Source/WebCore/ChangeLog
r96693 r96694 1 2011-10-04 Ilya Tikhonovsky <loislo@chromium.org> 2 3 Web Inspector: debuggerPresentatioModel.linkifyLocation leaks updateAnchor closure instances. 4 https://bugs.webkit.org/show_bug.cgi?id=69146 5 6 In many places we use linkifyLocation function to produce a link node which updates automatically when the source file is changed on the fly. 7 Such changes happen when we use pretty print or another operation that changes the source code somehow. 8 linkifyLocation associates a new instance of updateAnchor closure with the each link node and add the closure to the SourceMappingUpdated event's list. 9 As the result the node<->closure pairs wouldn't be collected until reset the UI and DebuggerPresentationModel. 10 11 Reviewed by Pavel Feldman. 12 13 Test: inspector/debugger/linkifier.html 14 15 * inspector/front-end/ConsoleMessage.js: 16 (WebInspector.ConsoleMessageImpl): 17 (WebInspector.ConsoleMessageImpl.prototype._linkifyLocation): 18 * inspector/front-end/ConsoleView.js: 19 (WebInspector.ConsoleView.prototype._consoleCleared): 20 (WebInspector.ConsoleCommandResult): 21 (WebInspector.ConsoleMessage.create): 22 (WebInspector.ConsoleMessage.createTextMessage): 23 * inspector/front-end/DebuggerPresentationModel.js: 24 (WebInspector.DebuggerPresentationModel.prototype.createLinkifier): 25 (WebInspector.DebuggerPresentationModel.Linkifier): 26 (WebInspector.DebuggerPresentationModel.Linkifier.prototype.linkifyLocation): 27 (WebInspector.DebuggerPresentationModel.Linkifier.prototype.reset): 28 (WebInspector.DebuggerPresentationModel.Linkifier.prototype._updateSourceAnchors): 29 (WebInspector.DebuggerPresentationModel.Linkifier.prototype._updateAnchor): 30 * inspector/front-end/EventListenersSidebarPane.js: 31 (WebInspector.EventListenersSidebarPane.prototype.update.callback): 32 (WebInspector.EventListenersSidebarPane.prototype.update): 33 (): 34 * inspector/front-end/NetworkPanel.js: 35 (WebInspector.NetworkLogView): 36 (WebInspector.NetworkLogView.prototype._reset): 37 (WebInspector.NetworkDataGridNode.prototype._refreshInitiatorCell): 38 * inspector/front-end/ProfileDataGridTree.js: 39 (WebInspector.ProfileDataGridNode.prototype.createCell): 40 * inspector/front-end/ProfileView.js: 41 (WebInspector.CPUProfileView): 42 (WebInspector.CPUProfileView.prototype._resetClicked): 43 * inspector/front-end/TimelinePanel.js: 44 (WebInspector.TimelinePanel): 45 (WebInspector.TimelinePanel.prototype._linkifyLocation): 46 (WebInspector.TimelinePanel.prototype._linkifyCallFrame): 47 (WebInspector.TimelinePanel.prototype._clearPanel): 48 (WebInspector.TimelinePanel.FormattedRecord): 49 (WebInspector.TimelinePanel.FormattedRecord.prototype._generatePopupContent): 50 (WebInspector.TimelinePanel.FormattedRecord.prototype._getRecordDetails): 51 (WebInspector.TimelinePanel.PopupContentHelper): 52 (WebInspector.TimelinePanel.PopupContentHelper.prototype._appendLinkRow): 53 (WebInspector.TimelinePanel.PopupContentHelper.prototype._appendStackTrace): 54 * inspector/front-end/inspector.js: 55 1 56 2011-10-03 Andreas Kling <kling@webkit.org> 2 57 -
trunk/Source/WebCore/inspector/front-end/ConsoleMessage.js
r96519 r96694 29 29 */ 30 30 31 WebInspector.ConsoleMessage.create = function(source, type, level, line, url, repeatCount, message, parameters, stackTrace, request)32 {33 return new WebInspector.ConsoleMessageImpl(source, type, level, line, url, repeatCount, message, parameters, stackTrace, request);34 }35 36 WebInspector.ConsoleMessage.createTextMessage = function(text, level)37 {38 level = level || WebInspector.ConsoleMessage.MessageLevel.Log;39 return new WebInspector.ConsoleMessageImpl(WebInspector.ConsoleMessage.MessageSource.ConsoleAPI, WebInspector.ConsoleMessage.MessageType.Log, level, 0, null, 1, null, [text], null);40 }41 42 31 /** 43 32 * @constructor 44 33 * @extends {WebInspector.ConsoleMessage} 34 * @param {WebInspector.DebuggerPresentationModel.Linkifier} linkifier 45 35 * @param {Array.<RuntimeAgent.RemoteObject>=} parameters 46 36 * @param {ConsoleAgent.StackTrace=} stackTrace 47 37 * @param {WebInspector.Resource=} request 48 38 */ 49 WebInspector.ConsoleMessageImpl = function(source, type, level, line, url, repeatCount, message, parameters, stackTrace, request)39 WebInspector.ConsoleMessageImpl = function(source, type, level, line, url, repeatCount, message, linkifier, parameters, stackTrace, request) 50 40 { 51 41 WebInspector.ConsoleMessage.call(); 52 42 43 this._linkifier = linkifier; 53 44 this.source = source; 54 45 this.type = type; … … 195 186 lineNumber = lineNumber ? lineNumber - 1 : undefined; 196 187 columnNumber = columnNumber ? columnNumber - 1 : 0; 197 return WebInspector.debuggerPresentationModel.linkifyLocation(url, lineNumber, columnNumber, "console-message-url");188 return this._linkifier.linkifyLocation(url, lineNumber, columnNumber, "console-message-url"); 198 189 }, 199 190 -
trunk/Source/WebCore/inspector/front-end/ConsoleView.js
r96575 r96694 111 111 WebInspector.console.addEventListener(WebInspector.ConsoleModel.Events.MessageAdded, this._consoleMessageAdded, this); 112 112 WebInspector.console.addEventListener(WebInspector.ConsoleModel.Events.ConsoleCleared, this._consoleCleared, this); 113 114 this._linkifier = WebInspector.debuggerPresentationModel.createLinkifier(); 113 115 } 114 116 … … 327 329 328 330 this.dispatchEventToListeners(WebInspector.ConsoleView.Events.ConsoleCleared); 331 332 this._linkifier.reset(); 329 333 }, 330 334 … … 618 622 WebInspector.settings.consoleHistory.set(this.prompt.history.slice(-30)); 619 623 620 this._appendConsoleMessage(new WebInspector.ConsoleCommandResult(result, wasThrown, commandMessage ));624 this._appendConsoleMessage(new WebInspector.ConsoleCommandResult(result, wasThrown, commandMessage, this._linkifier)); 621 625 } 622 626 this.evalInInspectedWindow(str, "console", true, undefined, undefined, printResult.bind(this)); … … 695 699 * @constructor 696 700 */ 697 WebInspector.ConsoleCommandResult = function(result, wasThrown, originatingCommand )701 WebInspector.ConsoleCommandResult = function(result, wasThrown, originatingCommand, linkifier) 698 702 { 699 703 var level = (wasThrown ? WebInspector.ConsoleMessage.MessageLevel.Error : WebInspector.ConsoleMessage.MessageLevel.Log); 700 704 this.originatingCommand = originatingCommand; 701 WebInspector.ConsoleMessageImpl.call(this, WebInspector.ConsoleMessage.MessageSource.JS, WebInspector.ConsoleMessage.MessageType.Result, level, -1, null, 1, null, [result]);705 WebInspector.ConsoleMessageImpl.call(this, WebInspector.ConsoleMessage.MessageSource.JS, WebInspector.ConsoleMessage.MessageType.Result, level, -1, null, 1, null, linkifier, [result]); 702 706 } 703 707 … … 777 781 */ 778 782 WebInspector.consoleView = null; 783 784 WebInspector.ConsoleMessage.create = function(source, type, level, line, url, repeatCount, message, parameters, stackTrace, request) 785 { 786 return new WebInspector.ConsoleMessageImpl(source, type, level, line, url, repeatCount, message, WebInspector.consoleView._linkifier, parameters, stackTrace, request); 787 } 788 789 WebInspector.ConsoleMessage.createTextMessage = function(text, level) 790 { 791 level = level || WebInspector.ConsoleMessage.MessageLevel.Log; 792 return new WebInspector.ConsoleMessageImpl(WebInspector.ConsoleMessage.MessageSource.ConsoleAPI, WebInspector.ConsoleMessage.MessageType.Log, level, 0, null, 1, null, WebInspector.consoleView._linkifier, [text], null); 793 } -
trunk/Source/WebCore/inspector/front-end/DebuggerPresentationModel.js
r96588 r96694 68 68 69 69 WebInspector.DebuggerPresentationModel.prototype = { 70 linkifyLocation: function(sourceURL, lineNumber, columnNumber, classes) 71 { 72 var linkText = WebInspector.formatLinkText(sourceURL, lineNumber); 73 var anchor = WebInspector.linkifyURLAsNode(sourceURL, linkText, classes, false); 74 75 var rawSourceCode = this._rawSourceCodeForScriptWithURL(sourceURL); 76 if (!rawSourceCode) { 77 anchor.setAttribute("preferred_panel", "resources"); 78 anchor.setAttribute("line_number", lineNumber); 79 return anchor; 80 } 81 82 function updateAnchor() 83 { 84 var uiLocation = rawSourceCode.sourceMapping.rawLocationToUILocation({ lineNumber: lineNumber, columnNumber: columnNumber }); 85 anchor.textContent = WebInspector.formatLinkText(uiLocation.uiSourceCode.url, uiLocation.lineNumber); 86 anchor.setAttribute("preferred_panel", "scripts"); 87 anchor.uiSourceCode = uiLocation.uiSourceCode; 88 anchor.lineNumber = uiLocation.lineNumber; 89 } 90 if (rawSourceCode.sourceMapping) 91 updateAnchor.call(this); 92 rawSourceCode.addEventListener(WebInspector.RawSourceCode.Events.SourceMappingUpdated, updateAnchor, this); 93 return anchor; 70 createLinkifier: function() 71 { 72 return new WebInspector.DebuggerPresentationModel.Linkifier(this); 94 73 }, 95 74 … … 578 557 } 579 558 559 /** 560 * @constructor 561 */ 562 WebInspector.DebuggerPresentationModel.Linkifier = function(model) 563 { 564 this._model = model; 565 this._anchorsForRawSourceCode = {}; 566 } 567 568 WebInspector.DebuggerPresentationModel.Linkifier.prototype = { 569 linkifyLocation: function(sourceURL, lineNumber, columnNumber, classes) 570 { 571 var linkText = WebInspector.formatLinkText(sourceURL, lineNumber); 572 var anchor = WebInspector.linkifyURLAsNode(sourceURL, linkText, classes, false); 573 anchor.rawLocation = { lineNumber: lineNumber, columnNumber: columnNumber }; 574 575 var rawSourceCode = this._model._rawSourceCodeForScriptWithURL(sourceURL); 576 if (!rawSourceCode) { 577 anchor.setAttribute("preferred_panel", "resources"); 578 anchor.setAttribute("line_number", lineNumber); 579 return anchor; 580 } 581 582 var anchors = this._anchorsForRawSourceCode[rawSourceCode.id]; 583 if (!anchors) { 584 anchors = []; 585 this._anchorsForRawSourceCode[rawSourceCode.id] = anchors; 586 rawSourceCode.addEventListener(WebInspector.RawSourceCode.Events.SourceMappingUpdated, this._updateSourceAnchors, this); 587 } 588 589 if (rawSourceCode.sourceMapping) 590 this._updateAnchor(rawSourceCode, anchor); 591 anchors.push(anchor); 592 return anchor; 593 }, 594 595 reset: function() 596 { 597 for (var id in this._anchorsForRawSourceCode) 598 this._model._rawSourceCode[id].removeEventListener(WebInspector.RawSourceCode.Events.SourceMappingUpdated, this._updateSourceAnchors, this); 599 this._anchorsForRawSourceCode = {}; 600 }, 601 602 _updateSourceAnchors: function(event) 603 { 604 var rawSourceCode = event.target; 605 var anchors = this._anchorsForRawSourceCode[rawSourceCode.id]; 606 for (var i = 0; i < anchors.length; ++i) 607 this._updateAnchor(rawSourceCode, anchors[i]); 608 }, 609 610 _updateAnchor: function(rawSourceCode, anchor) 611 { 612 var uiLocation = rawSourceCode.sourceMapping.rawLocationToUILocation(anchor.rawLocation); 613 anchor.textContent = WebInspector.formatLinkText(uiLocation.uiSourceCode.url, uiLocation.lineNumber); 614 anchor.setAttribute("preferred_panel", "scripts"); 615 anchor.uiSourceCode = uiLocation.uiSourceCode; 616 anchor.lineNumber = uiLocation.lineNumber; 617 } 618 } 619 580 620 WebInspector.DebuggerPresentationModelResourceBinding.prototype.__proto__ = WebInspector.ResourceDomainModelBinding.prototype; 581 621 -
trunk/Source/WebCore/inspector/front-end/EventListenersSidebarPane.js
r96519 r96694 57 57 58 58 this.titleElement.appendChild(this.settingsSelectElement); 59 60 this._linkifier = WebInspector.debuggerPresentationModel.createLinkifier(); 59 61 } 60 62 … … 65 67 { 66 68 RuntimeAgent.releaseObjectGroup(WebInspector.EventListenersSidebarPane._objectGroupName); 69 this._linkifier.reset(); 70 67 71 var body = this.bodyElement; 68 72 body.removeChildren(); … … 85 89 var section = sectionMap[type]; 86 90 if (!section) { 87 section = new WebInspector.EventListenersSection(type, node.id );91 section = new WebInspector.EventListenersSection(type, node.id, self._linkifier); 88 92 sectionMap[type] = section; 89 93 sectionNames.push(type); … … 125 129 WebInspector.EventListenersSidebarPane.prototype.__proto__ = WebInspector.SidebarPane.prototype; 126 130 127 WebInspector.EventListenersSection = function(title, nodeId )131 WebInspector.EventListenersSection = function(title, nodeId, linkifier) 128 132 { 129 133 this.eventListeners = []; 130 134 this._nodeId = nodeId; 135 this._linkifier = linkifier; 131 136 WebInspector.PropertiesSection.call(this, title); 132 137 … … 159 164 for (var i = 0; i < length; ++i) { 160 165 var eventListener = filteredEventListeners[i]; 161 var eventListenerBar = new WebInspector.EventListenerBar(eventListener, this._nodeId );166 var eventListenerBar = new WebInspector.EventListenerBar(eventListener, this._nodeId, this._linkifier); 162 167 this.eventBars.appendChild(eventListenerBar.element); 163 168 } … … 172 177 WebInspector.EventListenersSection.prototype.__proto__ = WebInspector.PropertiesSection.prototype; 173 178 174 WebInspector.EventListenerBar = function(eventListener, nodeId )179 WebInspector.EventListenerBar = function(eventListener, nodeId, linkifier) 175 180 { 176 181 this.eventListener = eventListener; … … 178 183 WebInspector.ObjectPropertiesSection.call(this); 179 184 this._setNodeTitle(); 180 this._setFunctionSubtitle( );185 this._setFunctionSubtitle(linkifier); 181 186 this.editable = false; 182 187 this.element.className = "event-bar"; /* Changed from "section" */ … … 232 237 }, 233 238 234 _setFunctionSubtitle: function( )239 _setFunctionSubtitle: function(linkifier) 235 240 { 236 241 // Requires that Function.toString() return at least the function's signature. … … 241 246 var lineNumber = this.eventListener.location.lineNumber - 1; 242 247 var columnNumber = 0; 243 var urlElement = WebInspector.debuggerPresentationModel.linkifyLocation(url, lineNumber, columnNumber);248 var urlElement = linkifier.linkifyLocation(url, lineNumber, columnNumber); 244 249 this.subtitleElement.appendChild(urlElement); 245 250 } else { -
trunk/Source/WebCore/inspector/front-end/NetworkPanel.js
r96577 r96694 57 57 this._createStatusbarButtons(); 58 58 this._createFilterStatusBarItems(); 59 this._linkifier = WebInspector.debuggerPresentationModel.createLinkifier(); 59 60 60 61 WebInspector.networkManager.addEventListener(WebInspector.NetworkManager.EventTypes.ResourceStarted, this._onResourceStarted, this); … … 736 737 this._mainResourceLoadTime = -1; 737 738 this._mainResourceDOMContentTime = -1; 738 739 this._linkifier.reset(); 739 740 }, 740 741 … … 2046 2047 } 2047 2048 this._initiatorCell.title = topFrame.url + ":" + topFrame.lineNumber; 2048 var urlElement = WebInspector.debuggerPresentationModel.linkifyLocation(topFrame.url, topFrame.lineNumber - 1, 0);2049 var urlElement = this._parentView._linkifier.linkifyLocation(topFrame.url, topFrame.lineNumber - 1, 0); 2049 2050 this._initiatorCell.appendChild(urlElement); 2050 2051 this._appendSubtitle(this._initiatorCell, WebInspector.UIString("Script")); -
trunk/Source/WebCore/inspector/front-end/ProfileDataGridTree.js
r96519 r96694 99 99 // FIXME(62725): profileNode should reference a debugger location. 100 100 var lineNumber = this.profileNode.lineNumber ? this.profileNode.lineNumber - 1 : 0; 101 var urlElement = WebInspector.debuggerPresentationModel.linkifyLocation(this.profileNode.url, lineNumber, 0, "profile-node-file");101 var urlElement = this.profileView._linkifier.linkifyLocation(this.profileNode.url, lineNumber, 0, "profile-node-file"); 102 102 urlElement.style.maxWidth = "75%"; 103 103 cell.insertBefore(urlElement, cell.firstChild); -
trunk/Source/WebCore/inspector/front-end/ProfileView.js
r96519 r96694 97 97 } 98 98 99 this._linkifier = WebInspector.debuggerPresentationModel.createLinkifier(); 100 99 101 ProfilerAgent.getProfile(this.profile.typeId, this.profile.uid, profileCallback); 100 102 } … … 486 488 this.resetButton.visible = false; 487 489 this.profileDataGridTree.restore(); 490 this._linkifier.reset(); 488 491 this.refresh(); 489 492 this.refreshVisibleData(); -
trunk/Source/WebCore/inspector/front-end/TimelinePanel.js
r96596 r96694 110 110 this._registerShortcuts(); 111 111 WebInspector.timelineManager.addEventListener(WebInspector.TimelineManager.EventTypes.TimelineEventRecorded, this._onTimelineEventRecorded, this); 112 this._linkifier = WebInspector.debuggerPresentationModel.createLinkifier(); 112 113 } 113 114 … … 117 118 118 119 WebInspector.TimelinePanel.prototype = { 120 _linkifyLocation: function(url, lineNumber, columnNumber) 121 { 122 // FIXME(62725): stack trace line/column numbers are one-based. 123 lineNumber = lineNumber ? lineNumber - 1 : lineNumber; 124 columnNumber = columnNumber ? columnNumber - 1 : 0; 125 return this._linkifier.linkifyLocation(url, lineNumber, columnNumber, "timeline-details"); 126 }, 127 128 _linkifyCallFrame: function(callFrame) 129 { 130 return this._linkifyLocation(callFrame.url, callFrame.lineNumber, callFrame.columnNumber); 131 }, 132 119 133 _createTopPane: function() { 120 134 var topPaneElement = document.createElement("div"); … … 529 543 this._closeRecordDetails(); 530 544 this._model._reset(); 545 this._linkifier.reset(); 531 546 }, 532 547 … … 962 977 WebInspector.TimelinePanel.FormattedRecord = function(record, parentRecord, panel, scriptDetails) 963 978 { 979 this._panel = panel; 964 980 var recordTypes = WebInspector.TimelineAgent.RecordType; 965 981 var style = panel._recordStyles[record.type]; … … 1052 1068 _generatePopupContent: function(calculator, categories) 1053 1069 { 1054 var contentHelper = new WebInspector.TimelinePanel.PopupContentHelper(this.title );1070 var contentHelper = new WebInspector.TimelinePanel.PopupContentHelper(this.title, this._panel); 1055 1071 1056 1072 if (this._children && this._children.length) { … … 1137 1153 return WebInspector.UIString("%s collected", Number.bytesToString(this.data.usedHeapSizeDelta)); 1138 1154 case WebInspector.TimelineAgent.RecordType.TimerFire: 1139 return this.scriptName ? this._ linkifyLocation(this.scriptName, this.scriptLine, 0) : this.data.timerId;1155 return this.scriptName ? this._panel._linkifyLocation(this.scriptName, this.scriptLine, 0) : this.data.timerId; 1140 1156 case WebInspector.TimelineAgent.RecordType.FunctionCall: 1141 return this.scriptName ? this._ linkifyLocation(this.scriptName, this.scriptLine, 0) : null;1157 return this.scriptName ? this._panel._linkifyLocation(this.scriptName, this.scriptLine, 0) : null; 1142 1158 case WebInspector.TimelineAgent.RecordType.FireAnimationFrameEvent: 1143 return this.scriptName ? this._ linkifyLocation(this.scriptName, this.scriptLine, 0) : this.data.id;1159 return this.scriptName ? this._panel._linkifyLocation(this.scriptName, this.scriptLine, 0) : this.data.id; 1144 1160 case WebInspector.TimelineAgent.RecordType.EventDispatch: 1145 1161 return this.data ? this.data.type : null; … … 1148 1164 case WebInspector.TimelineAgent.RecordType.TimerInstall: 1149 1165 case WebInspector.TimelineAgent.RecordType.TimerRemove: 1150 return this.stackTrace ? this._ linkifyCallFrame(this.stackTrace[0]) : this.data.timerId;1166 return this.stackTrace ? this._panel._linkifyCallFrame(this.stackTrace[0]) : this.data.timerId; 1151 1167 case WebInspector.TimelineAgent.RecordType.RegisterAnimationFrameCallback: 1152 1168 case WebInspector.TimelineAgent.RecordType.CancelAnimationFrameCallback: 1153 return this.stackTrace ? this._ linkifyCallFrame(this.stackTrace[0]) : this.data.id;1169 return this.stackTrace ? this._panel._linkifyCallFrame(this.stackTrace[0]) : this.data.id; 1154 1170 case WebInspector.TimelineAgent.RecordType.ParseHTML: 1155 1171 case WebInspector.TimelineAgent.RecordType.RecalculateStyles: 1156 return this.stackTrace ? this._ linkifyCallFrame(this.stackTrace[0]) : null;1172 return this.stackTrace ? this._panel._linkifyCallFrame(this.stackTrace[0]) : null; 1157 1173 case WebInspector.TimelineAgent.RecordType.EvaluateScript: 1158 return this.url ? this._ linkifyLocation(this.url, this.data.lineNumber, 0) : null;1174 return this.url ? this._panel._linkifyLocation(this.url, this.data.lineNumber, 0) : null; 1159 1175 case WebInspector.TimelineAgent.RecordType.XHRReadyStateChange: 1160 1176 case WebInspector.TimelineAgent.RecordType.XHRLoad: … … 1172 1188 }, 1173 1189 1174 _linkifyLocation: function(url, lineNumber, columnNumber)1175 {1176 // FIXME(62725): stack trace line/column numbers are one-based.1177 lineNumber = lineNumber ? lineNumber - 1 : lineNumber;1178 columnNumber = columnNumber ? columnNumber - 1 : 0;1179 return WebInspector.debuggerPresentationModel.linkifyLocation(url, lineNumber, columnNumber, "timeline-details");1180 },1181 1182 _linkifyCallFrame: function(callFrame)1183 {1184 return this._linkifyLocation(callFrame.url, callFrame.lineNumber, callFrame.columnNumber);1185 },1186 1187 1190 _calculateAggregatedStats: function(categories) 1188 1191 { … … 1205 1208 } 1206 1209 1207 WebInspector.TimelinePanel.PopupContentHelper = function(title )1210 WebInspector.TimelinePanel.PopupContentHelper = function(title, panel) 1208 1211 { 1212 this._panel = panel; 1209 1213 this._contentTable = document.createElement("table");; 1210 1214 var titleCell = this._createCell(WebInspector.UIString("%s - Details", title), "timeline-details-title"); … … 1252 1256 _appendLinkRow: function(title, scriptName, scriptLine) 1253 1257 { 1254 var link = WebInspector.TimelinePanel.FormattedRecord.prototype._linkifyLocation(scriptName, scriptLine, 0, "timeline-details");1258 var link = this._panel._linkifyLocation(scriptName, scriptLine, 0, "timeline-details"); 1255 1259 this._appendElementRow(title, link); 1256 1260 }, … … 1267 1271 row.appendChild(this._createCell(" @ ")); 1268 1272 var linkCell = document.createElement("td"); 1269 var urlElement = WebInspector.TimelinePanel.FormattedRecord.prototype._linkifyCallFrame(stackFrame);1273 var urlElement = this._panel._linkifyCallFrame(stackFrame); 1270 1274 linkCell.appendChild(urlElement); 1271 1275 row.appendChild(linkCell); -
trunk/Source/WebCore/inspector/front-end/inspector.js
r96604 r96694 510 510 this.console.addEventListener(WebInspector.ConsoleModel.Events.RepeatCountUpdated, this._updateErrorAndWarningCounts, this); 511 511 512 this.debuggerModel = new WebInspector.DebuggerModel(); 513 this.debuggerPresentationModel = new WebInspector.DebuggerPresentationModel(); 514 512 515 this.drawer = new WebInspector.Drawer(); 513 516 this.consoleView = new WebInspector.ConsoleView(WebInspector.WorkerManager.isWorkerFrontend()); … … 522 525 523 526 this.cssModel = new WebInspector.CSSStyleModel(); 524 this.debuggerModel = new WebInspector.DebuggerModel();525 this.debuggerPresentationModel = new WebInspector.DebuggerPresentationModel();526 527 527 528 this.searchController = new WebInspector.SearchController();
Note: See TracChangeset
for help on using the changeset viewer.