Changeset 141593 in webkit
- Timestamp:
- Feb 1, 2013 7:43:25 AM (11 years ago)
- Location:
- trunk
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r141592 r141593 1 2013-02-01 Vsevolod Vlasov <vsevik@chromium.org> 2 3 Web Inspector: Navigator should not create tree elements for uiSourceCodes unless neededm should populate folders on expand only. 4 https://bugs.webkit.org/show_bug.cgi?id=108601 5 6 Reviewed by Pavel Feldman. 7 8 * http/tests/inspector/debugger-test.js: 9 (initialize_DebuggerTest.): 10 (initialize_DebuggerTest): 11 * inspector/debugger/scripts-file-selector-expected.txt: 12 * inspector/debugger/scripts-file-selector.html: 13 * inspector/debugger/scripts-sorting-expected.txt: 14 * inspector/debugger/scripts-sorting.html: 15 1 16 2013-02-01 Philippe Normand <pnormand@igalia.com> 2 17 -
trunk/LayoutTests/http/tests/inspector/debugger-test.js
r139859 r141593 205 205 }; 206 206 207 InspectorTest.dumpComboBoxFileSelector = function(comboBoxFileSelector)208 {209 var rootURL = "http://localhost:8080/LayoutTests/inspector/debugger/";210 InspectorTest.addResult("Dumping ComboBoxFileSelector:");211 var select = comboBoxFileSelector._filesSelectElement;212 for (var i = 0; i < select.length; ++i) {213 var option = select[i];214 var text = option.text.replace(/.*LayoutTests/, "LayoutTests");215 text = text.replace(/\u00a0/g, " ").replace(/\u2026/g, "...");216 var tooltip = option.title.replace(rootURL, "<root>/");217 InspectorTest.addResult(text + (tooltip ? "(" + tooltip + ")" : ""));218 }219 };220 221 207 InspectorTest.setBreakpoint = function(sourceFrame, lineNumber, condition, enabled) 222 208 { -
trunk/LayoutTests/inspector/debugger/scripts-file-selector-expected.txt
r113563 r141593 1 1 Tests scripts panel file selectors. 2 2 3 Dumping ScriptsNavigator 'Scripts' tab: 4 example.com 5 localhost 6 LayoutTests/inspector/debugger/foo/bar 7 LayoutTests/inspector/debugger/foo/baz 8 ?a=b 9 very_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_url 10 Dumping ScriptsNavigator 'Content scripts' tab: 11 localhost 12 LayoutTests/inspector/debugger/foo/bar 3 13 Dumping ScriptsNavigator 'Scripts' tab: 4 14 example.com -
trunk/LayoutTests/inspector/debugger/scripts-file-selector.html
r139859 r141593 11 11 12 12 WebInspector.showPanel("scripts"); 13 var navigator FileSelector= new WebInspector.ScriptsNavigator();13 var navigator = new WebInspector.ScriptsNavigator(); 14 14 15 var uiSourceCodes = []; 15 16 function addUISourceCode(url, isContentScript) 16 17 { 17 18 var uiSourceCode = new WebInspector.UISourceCode(WebInspector.workspace, url, url, url, WebInspector.resourceTypes.Script, null); 18 19 uiSourceCode.isContentScript = isContentScript; 19 navigatorFileSelector.addUISourceCode(uiSourceCode); 20 navigator.addUISourceCode(uiSourceCode); 21 uiSourceCodes.push(uiSourceCode); 20 22 } 21 23 … … 32 34 addUISourceCode("very_looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong_url", false); 33 35 34 InspectorTest.dumpScriptsNavigator(navigatorFileSelector); 36 InspectorTest.dumpScriptsNavigator(navigator); 37 for (var i = 0; i < uiSourceCodes.length; ++i) 38 navigator.revealUISourceCode(uiSourceCodes[i]); 39 InspectorTest.dumpScriptsNavigator(navigator); 35 40 36 41 InspectorTest.completeTest(); -
trunk/LayoutTests/inspector/debugger/scripts-sorting-expected.txt
r113563 r141593 3 3 4 4 WebInspector.settings.showScriptFolders = true 5 Dumping ScriptsNavigator 'Scripts' tab: 6 bar.com 7 foo/path 8 foo.com 9 _js/production 10 foo/path 11 i 12 i/js 13 *Non*URL*path 14 Dumping ScriptsNavigator 'Content scripts' tab: 15 extension-name 16 folder 17 *Non*URL*path 5 18 Dumping ScriptsNavigator 'Scripts' tab: 6 19 bar.com … … 57 70 bar.com 58 71 foo/path 72 foo.com 73 _js/production 74 foo/path 75 i 76 i/js 77 *Non*URL*path 78 Dumping ScriptsNavigator 'Content scripts' tab: 79 extension-name 80 folder 81 *Non*URL*path 82 Dumping ScriptsNavigator 'Scripts' tab: 83 bar.com 84 foo/path 59 85 bar.js?file=bar/zzz.js 60 86 foo.js?file=bar/aaa.js -
trunk/LayoutTests/inspector/debugger/scripts-sorting.html
r139859 r141593 11 11 WebInspector.showPanel("scripts"); 12 12 13 var navigator FileSelector= new WebInspector.ScriptsNavigator();13 var navigator = new WebInspector.ScriptsNavigator(); 14 14 15 var uiSourceCodes = []; 15 16 function addUISourceCode(url, isContentScript) 16 17 { 17 18 var uiSourceCode = new WebInspector.UISourceCode(WebInspector.workspace, url, url, url, WebInspector.resourceTypes.Script, null); 18 19 uiSourceCode.isContentScript = isContentScript; 19 navigatorFileSelector.addUISourceCode(uiSourceCode); 20 navigator.addUISourceCode(uiSourceCode); 21 uiSourceCodes.push(uiSourceCode); 20 22 } 21 23 22 function dumpScriptsList( )24 function dumpScriptsList(noReveal) 23 25 { 24 26 InspectorTest.addResult(""); 25 27 InspectorTest.addResult("WebInspector.settings.showScriptFolders = " + WebInspector.settings.showScriptFolders.get()); 26 28 27 InspectorTest.dumpScriptsNavigator(navigatorFileSelector); 29 InspectorTest.dumpScriptsNavigator(navigator); 30 if (noReveal) 31 return; 32 for (var i = 0; i < uiSourceCodes.length; ++i) 33 navigator.revealUISourceCode(uiSourceCodes[i]); 34 InspectorTest.dumpScriptsNavigator(navigator); 28 35 } 29 36 … … 60 67 dumpScriptsList(); 61 68 WebInspector.settings.showScriptFolders.set(false); 62 dumpScriptsList( );69 dumpScriptsList(true); 63 70 } finally { 64 71 WebInspector.settings.showScriptFolders.set(true); -
trunk/Source/WebCore/ChangeLog
r141589 r141593 1 2013-02-01 Vsevolod Vlasov <vsevik@chromium.org> 2 3 Web Inspector: Navigator should not create tree elements for uiSourceCodes unless neededm should populate folders on expand only. 4 https://bugs.webkit.org/show_bug.cgi?id=108601 5 6 Reviewed by Pavel Feldman. 7 8 Tree elememnts for uiSourceCodes are not created until really needed anymore. 9 They are now created when parent folder tree elememnts are expanded or when uiSourceCode is revealed in navigator. 10 11 * inspector/front-end/NavigatorView.js: 12 (WebInspector.NavigatorView): 13 (WebInspector.NavigatorView.prototype.addUISourceCode): 14 (WebInspector.NavigatorView.prototype._getOrCreateScriptTreeElement): 15 (WebInspector.NavigatorView.prototype._getScriptTreeElement): 16 (WebInspector.NavigatorView.prototype._createScriptTreeElement): 17 (WebInspector.NavigatorView.prototype._removeScriptTreeElement): 18 (WebInspector.NavigatorView.prototype._updateScriptTitle): 19 (WebInspector.NavigatorView.prototype.isScriptSourceAdded): 20 (WebInspector.NavigatorView.prototype.revealUISourceCode): 21 (WebInspector.NavigatorView.prototype.removeUISourceCode): 22 (WebInspector.NavigatorView.prototype.reset): 23 (WebInspector.NavigatorView.prototype.createFolderTreeElement): 24 (WebInspector.NavigatorView.prototype._populateFolderTreeElement): 25 (WebInspector.NavigatorView.prototype._addScriptTreeElement): 26 (WebInspector.NavigatorView.prototype._adoptUISourceCode): 27 (WebInspector.NavigatorFolderTreeElement): 28 (WebInspector.NavigatorFolderTreeElement.prototype.onpopulate): 29 1 30 2013-02-01 Vsevolod Vlasov <vsevik@chromium.org> 2 31 -
trunk/Source/WebCore/inspector/front-end/NavigatorView.js
r141563 r141593 53 53 this.setDefaultFocusedElement(this._scriptsTree.element); 54 54 55 /** @type {Object.<string, WebInspector.NavigatorFolderTreeElement>} */ 55 56 this._folderTreeElements = {}; 56 this._scriptTreeElementsByUISourceCode = new Map(); 57 /** @type {Object.<string, Array.<WebInspector.UISourceCode>>} */ 58 this._folderTreeElementsUISourceCodes = {}; 59 /** @type {Object.<string, WebInspector.UISourceCode>} */ 60 this._uiSourceCodes = {}; 61 /** @type {Object.<string, WebInspector.NavigatorSourceTreeElement>} */ 62 this._scriptTreeElements = {}; 57 63 58 64 WebInspector.settings.showScriptFolders.addChangeListener(this._showScriptFoldersSettingChanged.bind(this)); 59 65 } 60 61 66 62 67 WebInspector.NavigatorView.Events = { … … 71 76 addUISourceCode: function(uiSourceCode) 72 77 { 73 if (this._ scriptTreeElementsByUISourceCode.get(uiSourceCode))78 if (this._uiSourceCodes[uiSourceCode.uri()]) 74 79 return; 75 80 this._uiSourceCodes[uiSourceCode.uri()] = uiSourceCode; 81 82 var folderTreeElement = this.getOrCreateFolderTreeElement(uiSourceCode); 83 this._adoptUISourceCode(folderTreeElement, uiSourceCode); 84 }, 85 86 _getOrCreateScriptTreeElement: function(uiSourceCode) 87 { 88 return this._getScriptTreeElement(uiSourceCode) || this._createScriptTreeElement(uiSourceCode); 89 }, 90 91 _getScriptTreeElement: function(uiSourceCode) 92 { 93 return this._scriptTreeElements[uiSourceCode.uri()]; 94 }, 95 96 _createScriptTreeElement: function(uiSourceCode) 97 { 76 98 var scriptTreeElement = new WebInspector.NavigatorSourceTreeElement(this, uiSourceCode, ""); 77 this._scriptTreeElements ByUISourceCode.put(uiSourceCode, scriptTreeElement);99 this._scriptTreeElements[uiSourceCode.uri()] = scriptTreeElement; 78 100 this._updateScriptTitle(uiSourceCode); 79 101 this._addUISourceCodeListeners(uiSourceCode); 80 81 var folderTreeElement = this.getOrCreateFolderTreeElement(uiSourceCode); 82 folderTreeElement.appendChild(scriptTreeElement); 102 return scriptTreeElement; 103 }, 104 105 _removeScriptTreeElement: function(uiSourceCode) 106 { 107 var scriptTreeElement = this._scriptTreeElements[uiSourceCode.uri()]; 108 if (!scriptTreeElement) 109 return; 110 if (scriptTreeElement.parent) 111 scriptTreeElement.parent.removeChild(scriptTreeElement); 112 delete this._scriptTreeElements[uiSourceCode.uri()]; 113 this._removeUISourceCodeListeners(uiSourceCode); 83 114 }, 84 115 … … 113 144 _updateScriptTitle: function(uiSourceCode, ignoreIsDirty) 114 145 { 115 var scriptTreeElement = this._ scriptTreeElementsByUISourceCode.get(uiSourceCode);146 var scriptTreeElement = this._getScriptTreeElement(uiSourceCode); 116 147 if (!scriptTreeElement) 117 148 return; … … 137 168 isScriptSourceAdded: function(uiSourceCode) 138 169 { 139 var scriptTreeElement = this._scriptTreeElementsByUISourceCode.get(uiSourceCode); 140 return !!scriptTreeElement; 170 return !!this._uiSourceCodes[uiSourceCode.uri()]; 141 171 }, 142 172 … … 151 181 this._lastSelectedUISourceCode = uiSourceCode; 152 182 153 var scriptTreeElement = this._scriptTreeElementsByUISourceCode.get(uiSourceCode); 183 var folderTreeElement = this.getOrCreateFolderTreeElement(uiSourceCode); 184 if (!folderTreeElement._populated && folderTreeElement.parent) 185 folderTreeElement.onpopulate(); 186 var scriptTreeElement = this._getOrCreateScriptTreeElement(uiSourceCode); 154 187 scriptTreeElement.revealAndSelect(true); 155 188 }, … … 171 204 removeUISourceCode: function(uiSourceCode) 172 205 { 173 var treeElement = this._scriptTreeElementsByUISourceCode.get(uiSourceCode); 206 this._removeScriptTreeElement(uiSourceCode); 207 var treeElement = this.getOrCreateFolderTreeElement(uiSourceCode); 174 208 while (treeElement) { 175 209 var parent = treeElement.parent; 176 210 if (parent) { 177 if (treeElement instanceof WebInspector.NavigatorFolderTreeElement)178 delete this._folderTreeElements[treeElement.folderIdentifier];211 delete this._folderTreeElements[treeElement.folderIdentifier]; 212 delete this._folderTreeElementsUISourceCodes[treeElement.folderIdentifier]; 179 213 parent.removeChild(treeElement); 180 214 if (parent.children.length) … … 183 217 treeElement = parent; 184 218 } 185 this._scriptTreeElementsByUISourceCode.remove(uiSourceCode); 186 this._removeUISourceCodeListeners(uiSourceCode); 219 delete this._uiSourceCodes[uiSourceCode.uri()]; 187 220 }, 188 221 … … 233 266 rename: function(uiSourceCode, callback) 234 267 { 235 var scriptTreeElement = this._ scriptTreeElementsByUISourceCode.get(uiSourceCode);268 var scriptTreeElement = this._getScriptTreeElement[uiSourceCode.uri()]; 236 269 if (!scriptTreeElement) 237 270 return; … … 279 312 this._scriptsTree.removeChildren(); 280 313 this._folderTreeElements = {}; 281 this._scriptTreeElementsByUISourceCode.clear(); 314 this._folderTreeElementsUISourceCodes = {}; 315 this._uiSourceCodes = {}; 316 this._scriptTreeElements = {}; 282 317 }, 283 318 … … 289 324 createFolderTreeElement: function(parentFolderElement, folderIdentifier, domain, folderName) 290 325 { 291 var folderTreeElement = new WebInspector.NavigatorFolderTreeElement(folderIdentifier, domain, folderName); 326 var folderTreeElement = new WebInspector.NavigatorFolderTreeElement(this, folderIdentifier, domain, folderName); 327 this._folderTreeElements[folderIdentifier] = folderTreeElement; 328 this._folderTreeElementsUISourceCodes[folderIdentifier] = []; 292 329 parentFolderElement.appendChild(folderTreeElement); 293 this._folderTreeElements[folderIdentifier] = folderTreeElement;294 330 return folderTreeElement; 331 }, 332 333 /** 334 * @param {WebInspector.NavigatorFolderTreeElement} folderTreeElement 335 */ 336 _populateFolderTreeElement: function(folderTreeElement) 337 { 338 if (folderTreeElement._populated) 339 return; 340 folderTreeElement._populated = true; 341 var uiSourceCodes = this._folderTreeElementsUISourceCodes[folderTreeElement.folderIdentifier]; 342 for (var i = 0; i < uiSourceCodes.length; ++i) 343 this._addScriptTreeElement(folderTreeElement, uiSourceCodes[i]); 344 delete this._folderTreeElementsUISourceCodes[folderTreeElement.folderIdentifier]; 295 345 }, 296 346 … … 326 376 327 377 return this.createFolderTreeElement(parentFolderElement, folderIdentifier, domain, folderName); 378 }, 379 380 _addScriptTreeElement: function(folderTreeElement, uiSourceCode) 381 { 382 var scriptTreeElement = this._getOrCreateScriptTreeElement(uiSourceCode); 383 folderTreeElement.appendChild(scriptTreeElement); 384 }, 385 386 _adoptUISourceCode: function(folderTreeElement, uiSourceCode) 387 { 388 if (folderTreeElement._populated || !folderTreeElement.parent) { 389 this._addScriptTreeElement(folderTreeElement, uiSourceCode); 390 return; 391 } 392 this._folderTreeElementsUISourceCodes[folderTreeElement.folderIdentifier].push(uiSourceCode); 328 393 }, 329 394 … … 500 565 * @constructor 501 566 * @extends {WebInspector.BaseNavigatorTreeElement} 567 * @param {WebInspector.NavigatorView} navigatorView 502 568 * @param {string} folderIdentifier 503 569 * @param {string} domain 504 570 * @param {string} folderName 505 571 */ 506 WebInspector.NavigatorFolderTreeElement = function( folderIdentifier, domain, folderName)572 WebInspector.NavigatorFolderTreeElement = function(navigatorView, folderIdentifier, domain, folderName) 507 573 { 574 this._navigatorView = navigatorView; 508 575 this._folderIdentifier = folderIdentifier; 509 576 this._folderName = folderName; … … 533 600 }, 534 601 602 onpopulate: function() 603 { 604 this._navigatorView._populateFolderTreeElement(this); 605 }, 606 535 607 onattach: function() 536 608 {
Note: See TracChangeset
for help on using the changeset viewer.