Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(437)

Side by Side Diff: Source/WebCore/inspector/front-end/DebuggerPresentationModel.js

Issue 9187001: Merge 104563 - Web Inspector: fix DebuggerPresentationModel::uiSourceCodes - do not iterate (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/963/
Patch Set: Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 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 18 matching lines...) Expand all
29 */ 29 */
30 30
31 /** 31 /**
32 * @constructor 32 * @constructor
33 * @extends {WebInspector.Object} 33 * @extends {WebInspector.Object}
34 */ 34 */
35 WebInspector.DebuggerPresentationModel = function() 35 WebInspector.DebuggerPresentationModel = function()
36 { 36 {
37 // FIXME: apply formatter from outside as a generic mapping. 37 // FIXME: apply formatter from outside as a generic mapping.
38 this._formatter = new WebInspector.ScriptFormatter(); 38 this._formatter = new WebInspector.ScriptFormatter();
39 this._rawSourceCodes = [];
39 this._rawSourceCodeForScriptId = {}; 40 this._rawSourceCodeForScriptId = {};
40 this._rawSourceCodeForURL = {}; 41 this._rawSourceCodeForURL = {};
41 this._rawSourceCodeForDocumentURL = {}; 42 this._rawSourceCodeForDocumentURL = {};
42 this._presentationCallFrames = []; 43 this._presentationCallFrames = [];
43 44
44 this._breakpointManager = new WebInspector.BreakpointManager(WebInspector.se ttings.breakpoints, this._breakpointAdded.bind(this), this._breakpointRemoved.bi nd(this), WebInspector.debuggerModel); 45 this._breakpointManager = new WebInspector.BreakpointManager(WebInspector.se ttings.breakpoints, this._breakpointAdded.bind(this), this._breakpointRemoved.bi nd(this), WebInspector.debuggerModel);
45 46
46 WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Event s.ParsedScriptSource, this._parsedScriptSource, this); 47 WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Event s.ParsedScriptSource, this._parsedScriptSource, this);
47 WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Event s.FailedToParseScriptSource, this._failedToParseScriptSource, this); 48 WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Event s.FailedToParseScriptSource, this._failedToParseScriptSource, this);
48 WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Event s.DebuggerPaused, this._debuggerPaused, this); 49 WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Event s.DebuggerPaused, this._debuggerPaused, this);
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 var rawSourceCode = this._rawSourceCodeForDocumentURL[script.sou rceURL]; 134 var rawSourceCode = this._rawSourceCodeForDocumentURL[script.sou rceURL];
134 if (rawSourceCode) { 135 if (rawSourceCode) {
135 rawSourceCode.addScript(script); 136 rawSourceCode.addScript(script);
136 this._bindScriptToRawSourceCode(script, rawSourceCode); 137 this._bindScriptToRawSourceCode(script, rawSourceCode);
137 return; 138 return;
138 } 139 }
139 } 140 }
140 } 141 }
141 142
142 rawSourceCode = new WebInspector.RawSourceCode(script.scriptId, script, resource, this._formatter, this._formatSource); 143 rawSourceCode = new WebInspector.RawSourceCode(script.scriptId, script, resource, this._formatter, this._formatSource);
144 this._rawSourceCodes.push(rawSourceCode);
143 this._bindScriptToRawSourceCode(script, rawSourceCode); 145 this._bindScriptToRawSourceCode(script, rawSourceCode);
144 146
145 if (isInlineScript) 147 if (isInlineScript)
146 this._rawSourceCodeForDocumentURL[script.sourceURL] = rawSourceCode; 148 this._rawSourceCodeForDocumentURL[script.sourceURL] = rawSourceCode;
147 149
148 if (rawSourceCode.sourceMapping) 150 if (rawSourceCode.sourceMapping)
149 this._updateSourceMapping(rawSourceCode, null); 151 this._updateSourceMapping(rawSourceCode, null);
150 rawSourceCode.addEventListener(WebInspector.RawSourceCode.Events.SourceM appingUpdated, this._sourceMappingUpdated, this); 152 rawSourceCode.addEventListener(WebInspector.RawSourceCode.Events.SourceM appingUpdated, this._sourceMappingUpdated, this);
151 }, 153 },
152 154
(...skipping 16 matching lines...) Expand all
169 var oldSourceMapping = /** @type {WebInspector.RawSourceCode.SourceMappi ng} */ event.data["oldSourceMapping"]; 171 var oldSourceMapping = /** @type {WebInspector.RawSourceCode.SourceMappi ng} */ event.data["oldSourceMapping"];
170 this._updateSourceMapping(rawSourceCode, oldSourceMapping); 172 this._updateSourceMapping(rawSourceCode, oldSourceMapping);
171 }, 173 },
172 174
173 /** 175 /**
174 * @return {Array.<WebInspector.UISourceCode>} 176 * @return {Array.<WebInspector.UISourceCode>}
175 */ 177 */
176 uiSourceCodes: function() 178 uiSourceCodes: function()
177 { 179 {
178 var result = []; 180 var result = [];
179 for (var id in this._rawSourceCodeForScriptId) { 181 for (var i = 0; i < this._rawSourceCodes.length; ++i) {
180 var uiSourceCodeList = this._rawSourceCodeForScriptId[id].sourceMapp ing.uiSourceCodeList(); 182 var uiSourceCodeList = this._rawSourceCodes[i].sourceMapping.uiSourc eCodeList();
181 for (var i = 0; i < uiSourceCodeList.length; ++i) 183 for (var j = 0; j < uiSourceCodeList.length; ++j)
182 result.push(uiSourceCodeList[i]); 184 result.push(uiSourceCodeList[j]);
183 } 185 }
184 return result; 186 return result;
185 }, 187 },
186 188
187 /** 189 /**
188 * @param {WebInspector.RawSourceCode} rawSourceCode 190 * @param {WebInspector.RawSourceCode} rawSourceCode
189 * @param {WebInspector.RawSourceCode.SourceMapping} oldSourceMapping 191 * @param {WebInspector.RawSourceCode.SourceMapping} oldSourceMapping
190 */ 192 */
191 _updateSourceMapping: function(rawSourceCode, oldSourceMapping) 193 _updateSourceMapping: function(rawSourceCode, oldSourceMapping)
192 { 194 {
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 /** 326 /**
325 * @param {boolean} formatSource 327 * @param {boolean} formatSource
326 */ 328 */
327 setFormatSource: function(formatSource) 329 setFormatSource: function(formatSource)
328 { 330 {
329 if (this._formatSource === formatSource) 331 if (this._formatSource === formatSource)
330 return; 332 return;
331 333
332 this._formatSource = formatSource; 334 this._formatSource = formatSource;
333 this._breakpointManager.reset(); 335 this._breakpointManager.reset();
334 for (var id in this._rawSourceCodeForScriptId) 336 for (var i = 0; i < this._rawSourceCodes.length; ++i)
335 this._rawSourceCodeForScriptId[id].setFormatted(this._formatSource); 337 this._rawSourceCodes[i].setFormatted(this._formatSource);
336 }, 338 },
337 339
338 /** 340 /**
339 * @param {WebInspector.UISourceCode} uiSourceCode 341 * @param {WebInspector.UISourceCode} uiSourceCode
340 * @param {string} sourceMappingURL 342 * @param {string} sourceMappingURL
341 */ 343 */
342 setCompilerSourceMapping: function(uiSourceCode, sourceMappingURL) 344 setCompilerSourceMapping: function(uiSourceCode, sourceMappingURL)
343 { 345 {
344 var sourceMapping = new WebInspector.ClosureCompilerSourceMapping(source MappingURL); 346 var sourceMapping = new WebInspector.ClosureCompilerSourceMapping(source MappingURL);
345 uiSourceCode.rawSourceCode.setCompilerSourceMapping(sourceMapping); 347 uiSourceCode.rawSourceCode.setCompilerSourceMapping(sourceMapping);
(...skipping 29 matching lines...) Expand all
375 // FIXME(62725): stack trace line/column numbers are one-based. 377 // FIXME(62725): stack trace line/column numbers are one-based.
376 var lineNumber = message.stackTrace ? message.stackTrace[0].lineNumber - 1 : message.line - 1; 378 var lineNumber = message.stackTrace ? message.stackTrace[0].lineNumber - 1 : message.line - 1;
377 var columnNumber = message.stackTrace ? message.stackTrace[0].columnNumb er - 1 : 0; 379 var columnNumber = message.stackTrace ? message.stackTrace[0].columnNumb er - 1 : 0;
378 var uiLocation = sourceMapping.rawLocationToUILocation(/** @type {Debugg erAgent.Location} */ { lineNumber: lineNumber, columnNumber: columnNumber }); 380 var uiLocation = sourceMapping.rawLocationToUILocation(/** @type {Debugg erAgent.Location} */ { lineNumber: lineNumber, columnNumber: columnNumber });
379 var presentationMessage = new WebInspector.PresentationConsoleMessage(ui Location.uiSourceCode, uiLocation.lineNumber, message); 381 var presentationMessage = new WebInspector.PresentationConsoleMessage(ui Location.uiSourceCode, uiLocation.lineNumber, message);
380 return presentationMessage; 382 return presentationMessage;
381 }, 383 },
382 384
383 _consoleCleared: function() 385 _consoleCleared: function()
384 { 386 {
385 for (var id in this._rawSourceCodeForScriptId) 387 for (var i = 0; i < this._rawSourceCodes.length; ++i)
386 this._rawSourceCodeForScriptId[id].messages = []; 388 this._rawSourceCodes[i].messages = [];
387 this.dispatchEventToListeners(WebInspector.DebuggerPresentationModel.Eve nts.ConsoleMessagesCleared); 389 this.dispatchEventToListeners(WebInspector.DebuggerPresentationModel.Eve nts.ConsoleMessagesCleared);
388 }, 390 },
389 391
390 /** 392 /**
391 * @param {WebInspector.UISourceCode} uiSourceCode 393 * @param {WebInspector.UISourceCode} uiSourceCode
392 * @param {number} lineNumber 394 * @param {number} lineNumber
393 */ 395 */
394 continueToLine: function(uiSourceCode, lineNumber) 396 continueToLine: function(uiSourceCode, lineNumber)
395 { 397 {
396 // FIXME: use RawSourceCode.uiLocationToRawLocation. 398 // FIXME: use RawSourceCode.uiLocationToRawLocation.
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
647 */ 649 */
648 function filter(script) 650 function filter(script)
649 { 651 {
650 return script.scriptId === rawSourceCode.id; 652 return script.scriptId === rawSourceCode.id;
651 } 653 }
652 return WebInspector.debuggerModel.queryScripts(filter.bind(this))[0]; 654 return WebInspector.debuggerModel.queryScripts(filter.bind(this))[0];
653 }, 655 },
654 656
655 _debuggerReset: function() 657 _debuggerReset: function()
656 { 658 {
657 for (var id in this._rawSourceCodeForScriptId) { 659 for (var i = 0; i < this._rawSourceCodes.length; ++i) {
658 var rawSourceCode = this._rawSourceCodeForScriptId[id]; 660 var rawSourceCode = this._rawSourceCodes[i];
659 if (rawSourceCode.sourceMapping) { 661 if (rawSourceCode.sourceMapping) {
660 var uiSourceCodeList = rawSourceCode.sourceMapping.uiSourceCodeL ist(); 662 var uiSourceCodeList = rawSourceCode.sourceMapping.uiSourceCodeL ist();
661 for (var i = 0; i < uiSourceCodeList.length; ++i) 663 for (var j = 0; j < uiSourceCodeList.length; ++j)
662 this.dispatchEventToListeners(WebInspector.DebuggerPresentat ionModel.Events.UISourceCodeRemoved, uiSourceCodeList[i]); 664 this.dispatchEventToListeners(WebInspector.DebuggerPresentat ionModel.Events.UISourceCodeRemoved, uiSourceCodeList[j]);
663 } 665 }
664 rawSourceCode.removeAllListeners(); 666 rawSourceCode.removeAllListeners();
665 } 667 }
668 this._rawSourceCodes = [];
666 this._rawSourceCodeForScriptId = {}; 669 this._rawSourceCodeForScriptId = {};
667 this._rawSourceCodeForURL = {}; 670 this._rawSourceCodeForURL = {};
668 this._rawSourceCodeForDocumentURL = {}; 671 this._rawSourceCodeForDocumentURL = {};
669 this._presentationCallFrames = []; 672 this._presentationCallFrames = [];
670 this._selectedCallFrame = null; 673 this._selectedCallFrame = null;
671 this._breakpointManager.debuggerReset(); 674 this._breakpointManager.debuggerReset();
672 this.dispatchEventToListeners(WebInspector.DebuggerPresentationModel.Eve nts.DebuggerReset); 675 this.dispatchEventToListeners(WebInspector.DebuggerPresentationModel.Eve nts.DebuggerReset);
673 } 676 }
674 } 677 }
675 678
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after
1016 this._formatter.formatRawSourceCodeAnchor(rawSourceCode, anchor); 1019 this._formatter.formatRawSourceCodeAnchor(rawSourceCode, anchor);
1017 } 1020 }
1018 } 1021 }
1019 1022
1020 WebInspector.DebuggerPresentationModelResourceBinding.prototype.__proto__ = WebI nspector.ResourceDomainModelBinding.prototype; 1023 WebInspector.DebuggerPresentationModelResourceBinding.prototype.__proto__ = WebI nspector.ResourceDomainModelBinding.prototype;
1021 1024
1022 /** 1025 /**
1023 * @type {?WebInspector.DebuggerPresentationModel} 1026 * @type {?WebInspector.DebuggerPresentationModel}
1024 */ 1027 */
1025 WebInspector.debuggerPresentationModel = null; 1028 WebInspector.debuggerPresentationModel = null;
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698