Changeset 143100 in webkit
- Timestamp:
- Feb 16, 2013 3:28:19 AM (11 years ago)
- Location:
- trunk
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r143092 r143100 1 2013-02-16 Vsevolod Vlasov <vsevik@chromium.org> 2 3 Web Inspector: Create separate project for each domain for UISourceCode based on browser resources. 4 https://bugs.webkit.org/show_bug.cgi?id=109691 5 6 Reviewed by Pavel Feldman. 7 8 * inspector/debugger/live-edit-breakpoints-expected.txt: 9 * inspector/debugger/live-edit-breakpoints.html: 10 * inspector/uisourcecode-revisions.html: 11 1 12 2013-02-15 Tony Chang <tony@chromium.org> 2 13 -
trunk/LayoutTests/inspector/debugger/live-edit-breakpoints-expected.txt
r139454 r143100 10 10 edit-me-breakpoints.js:2, enabled:true 11 11 Dumping breakpoint locations 12 url: edit-me-breakpoints.js, lineNumber: 2, project name: network12 url: edit-me-breakpoints.js, lineNumber: 2, project type: network, project id: file:// 13 13 Editing source: 14 14 TextEditor.removeBreakpoint(lineNumber = 2) … … 18 18 edit-me-breakpoints.js:2, enabled:true 19 19 Dumping breakpoint locations 20 url: edit-me-breakpoints.js, lineNumber: 2, project name: debugger20 url: edit-me-breakpoints.js, lineNumber: 2, project type: debugger, project id: debugger:file:// 21 21 Undoing source editing: 22 22 OriginalTextEditor.removeBreakpoint(lineNumber = 2) … … 27 27 edit-me-breakpoints.js:2, enabled:true 28 28 Dumping breakpoint locations 29 url: edit-me-breakpoints.js, lineNumber: 2, project name: network29 url: edit-me-breakpoints.js, lineNumber: 2, project type: network, project id: file:// 30 30 Finally removing breakpoint: 31 31 TextEditor.removeBreakpoint(lineNumber = 2) … … 39 39 edit-me-breakpoints.js:2, enabled:true 40 40 Dumping breakpoint locations 41 url: edit-me-breakpoints.js, lineNumber: 2, project name: network41 url: edit-me-breakpoints.js, lineNumber: 2, project type: network, project id: file:// 42 42 Editing source: 43 43 OriginalTextEditor.addBreakpoint(lineNumber = 2, disabled = false) … … 47 47 edit-me-breakpoints.js:2, enabled:true 48 48 Dumping breakpoint locations 49 url: edit-me-breakpoints.js, lineNumber: 2, project name: debugger49 url: edit-me-breakpoints.js, lineNumber: 2, project type: debugger, project id: debugger:file:// 50 50 Committing edited source: 51 51 OriginalTextEditor.removeBreakpoint(lineNumber = 2) … … 56 56 edit-me-breakpoints.js:2, enabled:true 57 57 Dumping breakpoint locations 58 url: edit-me-breakpoints.js, lineNumber: 2, project name: network58 url: edit-me-breakpoints.js, lineNumber: 2, project type: network, project id: file:// 59 59 Finally removing breakpoint: 60 60 TextEditor.removeBreakpoint(lineNumber = 2) … … 68 68 edit-me-breakpoints.js:2, enabled:true 69 69 Dumping breakpoint locations 70 url: edit-me-breakpoints.js, lineNumber: 2, project name: network70 url: edit-me-breakpoints.js, lineNumber: 2, project type: network, project id: file:// 71 71 Editing source: 72 72 OriginalTextEditor.addBreakpoint(lineNumber = 2, disabled = false) … … 76 76 edit-me-breakpoints.js:2, enabled:true 77 77 Dumping breakpoint locations 78 url: edit-me-breakpoints.js, lineNumber: 2, project name: debugger78 url: edit-me-breakpoints.js, lineNumber: 2, project type: debugger, project id: debugger:file:// 79 79 Committing edited source: 80 80 Dumping breakpoint storage 81 81 edit-me-breakpoints.js:2, enabled:true 82 82 Dumping breakpoint locations 83 url: edit-me-breakpoints.js, lineNumber: 2, project name: debugger83 url: edit-me-breakpoints.js, lineNumber: 2, project type: debugger, project id: debugger:file:// 84 84 Editing source again so that live edit could succeed: 85 85 Dumping breakpoint storage 86 86 edit-me-breakpoints.js:2, enabled:true 87 87 Dumping breakpoint locations 88 url: edit-me-breakpoints.js, lineNumber: 2, project name: debugger88 url: edit-me-breakpoints.js, lineNumber: 2, project type: debugger, project id: debugger:file:// 89 89 Committing edited source again: 90 90 OriginalTextEditor.removeBreakpoint(lineNumber = 2) … … 95 95 edit-me-breakpoints.js:2, enabled:true 96 96 Dumping breakpoint locations 97 url: edit-me-breakpoints.js, lineNumber: 2, project name: network97 url: edit-me-breakpoints.js, lineNumber: 2, project type: network, project id: file:// 98 98 Finally removing breakpoint: 99 99 TextEditor.removeBreakpoint(lineNumber = 2) … … 107 107 edit-me-breakpoints.js:2, enabled:true 108 108 Dumping breakpoint locations 109 url: edit-me-breakpoints.js, lineNumber: 2, project name: network109 url: edit-me-breakpoints.js, lineNumber: 2, project type: network, project id: file:// 110 110 Editing source: 111 111 OriginalTextEditor.addBreakpoint(lineNumber = 2, disabled = false) … … 115 115 edit-me-breakpoints.js:2, enabled:true 116 116 Dumping breakpoint locations 117 url: edit-me-breakpoints.js, lineNumber: 2, project name: debugger117 url: edit-me-breakpoints.js, lineNumber: 2, project type: debugger, project id: debugger:file:// 118 118 Committing edited source: 119 119 Dumping breakpoint storage 120 120 edit-me-breakpoints.js:2, enabled:true 121 121 Dumping breakpoint locations 122 url: edit-me-breakpoints.js, lineNumber: 2, project name: debugger122 url: edit-me-breakpoints.js, lineNumber: 2, project type: debugger, project id: debugger:file:// 123 123 Undoing source editing: 124 124 Dumping breakpoint storage 125 125 edit-me-breakpoints.js:2, enabled:true 126 126 Dumping breakpoint locations 127 url: edit-me-breakpoints.js, lineNumber: 2, project name: debugger127 url: edit-me-breakpoints.js, lineNumber: 2, project type: debugger, project id: debugger:file:// 128 128 Committing edited source again: 129 129 OriginalTextEditor.removeBreakpoint(lineNumber = 2) … … 134 134 edit-me-breakpoints.js:2, enabled:true 135 135 Dumping breakpoint locations 136 url: edit-me-breakpoints.js, lineNumber: 2, project name: network136 url: edit-me-breakpoints.js, lineNumber: 2, project type: network, project id: file:// 137 137 Finally removing breakpoint: 138 138 TextEditor.removeBreakpoint(lineNumber = 2) … … 149 149 Dumping breakpoint storage 150 150 Dumping breakpoint locations 151 url: , lineNumber: 2, project name: debugger151 url: , lineNumber: 2, project type: debugger, project id: debugger: 152 152 Editing source: 153 153 Dumping breakpoint storage 154 154 Dumping breakpoint locations 155 url: , lineNumber: 2, project name: debugger155 url: , lineNumber: 2, project type: debugger, project id: debugger: 156 156 Undoing source editing: 157 157 Dumping breakpoint storage 158 158 Dumping breakpoint locations 159 url: , lineNumber: 2, project name: debugger159 url: , lineNumber: 2, project type: debugger, project id: debugger: 160 160 Finally removing breakpoint: 161 161 TextEditor.removeBreakpoint(lineNumber = 2) … … 172 172 Dumping breakpoint storage 173 173 Dumping breakpoint locations 174 url: , lineNumber: 2, project name: debugger174 url: , lineNumber: 2, project type: debugger, project id: debugger: 175 175 Editing source: 176 176 Dumping breakpoint storage 177 177 Dumping breakpoint locations 178 url: , lineNumber: 2, project name: debugger178 url: , lineNumber: 2, project type: debugger, project id: debugger: 179 179 Undoing source editing: 180 180 Dumping breakpoint storage 181 181 Dumping breakpoint locations 182 url: , lineNumber: 2, project name: debugger182 url: , lineNumber: 2, project type: debugger, project id: debugger: 183 183 Finally removing breakpoint: 184 184 TextEditor.removeBreakpoint(lineNumber = 2) -
trunk/LayoutTests/inspector/debugger/live-edit-breakpoints.html
r142474 r143100 40 40 var uiLocation = locations[i].uiLocation; 41 41 var uiSourceCode = uiLocation.uiSourceCode; 42 var project = WebInspector.workspace.projectForUISourceCode(uiSourceCode);43 InspectorTest.addResult(" url: " + pathToFileName(uiSourceCode.originURL()) + ", lineNumber: " + uiLocation.lineNumber + ", project name: " + project.id());42 var project = uiSourceCode.project(); 43 InspectorTest.addResult(" url: " + pathToFileName(uiSourceCode.originURL()) + ", lineNumber: " + uiLocation.lineNumber + ", project type: " + project.type() + ", project id: " + project.id()); 44 44 } 45 45 } -
trunk/LayoutTests/inspector/uisourcecode-revisions.html
r142474 r143100 10 10 { 11 11 var workspace = new WebInspector.Workspace(); 12 var projectDelegate = new WebInspector.SimpleProjectDelegate( WebInspector.projectTypes.Network);12 var projectDelegate = new WebInspector.SimpleProjectDelegate("", WebInspector.projectTypes.Network); 13 13 var project = workspace.addProject(projectDelegate); 14 14 project.requestFileContent = function(uri, callback) -
trunk/Source/WebCore/ChangeLog
r143098 r143100 1 2013-02-16 Vsevolod Vlasov <vsevik@chromium.org> 2 3 Web Inspector: Create separate project for each domain for UISourceCode based on browser resources. 4 https://bugs.webkit.org/show_bug.cgi?id=109691 5 6 Reviewed by Pavel Feldman. 7 8 Separate project of certain type is now created for each domain. 9 UISourceCode path represents a path in the project now. 10 UISourceCode uri is now calculated based on project id and path. 11 It is also possible to calculate path based on projectId and URI, which is used for uiSourceCodeForURI() methods. 12 13 * inspector/front-end/ScriptSnippetModel.js: 14 (WebInspector.ScriptSnippetModel.prototype._addScriptSnippet): 15 * inspector/front-end/SimpleWorkspaceProvider.js: 16 (WebInspector.SimpleProjectDelegate): 17 (WebInspector.SimpleProjectDelegate.projectId): 18 (WebInspector.SimpleProjectDelegate.prototype.id): 19 (WebInspector.SimpleProjectDelegate.prototype.displayName): 20 (WebInspector.SimpleProjectDelegate.prototype.addFile): 21 (WebInspector.SimpleWorkspaceProvider): 22 (WebInspector.SimpleWorkspaceProvider.splitURL): 23 (WebInspector.SimpleWorkspaceProvider._pathForSplittedURL): 24 (WebInspector.SimpleWorkspaceProvider.uriForURL): 25 (WebInspector.SimpleWorkspaceProvider.prototype._projectDelegate): 26 (WebInspector.SimpleWorkspaceProvider.prototype._innerAddFileForURL): 27 (WebInspector.SimpleWorkspaceProvider.prototype.addFileByName): 28 (WebInspector.SimpleWorkspaceProvider.prototype._innerAddFile): 29 (WebInspector.SimpleWorkspaceProvider.prototype.removeFileByName): 30 (WebInspector.SimpleWorkspaceProvider.prototype.reset): 31 * inspector/front-end/UISourceCode.js: 32 (WebInspector.UISourceCode.uri): 33 (WebInspector.UISourceCode.path): 34 (WebInspector.UISourceCode.prototype.uri): 35 * inspector/front-end/Workspace.js: 36 (WebInspector.Project.prototype._fileAdded): 37 (WebInspector.Project.prototype._fileRemoved): 38 (WebInspector.Project.prototype.uiSourceCodeForURI): 39 1 40 2013-02-15 Chris Fleizach <cfleizach@apple.com> 2 41 -
trunk/Source/WebCore/inspector/front-end/ScriptSnippetModel.js
r142269 r143100 83 83 _addScriptSnippet: function(snippet) 84 84 { 85 var uiSourceCode = this._workspaceProvider.addFile ForURL(snippet.name, new WebInspector.SnippetContentProvider(snippet), true);85 var uiSourceCode = this._workspaceProvider.addFileByName("", snippet.name, new WebInspector.SnippetContentProvider(snippet), true); 86 86 var scriptFile = new WebInspector.SnippetScriptFile(this, uiSourceCode); 87 87 uiSourceCode.setScriptFile(scriptFile); … … 104 104 delete this._uiSourceCodeForSnippetId[snippet.id]; 105 105 this._snippetIdForUISourceCode.remove(uiSourceCode); 106 this._workspaceProvider.removeFile (snippet.name);106 this._workspaceProvider.removeFileByName("", snippet.name); 107 107 }, 108 108 -
trunk/Source/WebCore/inspector/front-end/SimpleWorkspaceProvider.js
r142474 r143100 34 34 * @extends {WebInspector.Object} 35 35 */ 36 WebInspector.SimpleProjectDelegate = function(type) 37 { 36 WebInspector.SimpleProjectDelegate = function(name, type) 37 { 38 this._name = name; 38 39 this._type = type; 39 40 /** @type {Object.<string, WebInspector.ContentProvider>} */ … … 42 43 } 43 44 45 WebInspector.SimpleProjectDelegate.projectId = function(name, type) 46 { 47 var typePrefix = type !== WebInspector.projectTypes.Network ? (type + ":") : ""; 48 return typePrefix + name; 49 } 50 44 51 WebInspector.SimpleProjectDelegate.prototype = { 45 52 /** … … 48 55 id: function() 49 56 { 57 return WebInspector.SimpleProjectDelegate.projectId(this._name, this._type); 58 }, 59 60 /** 61 * @return {string} 62 */ 63 type: function() 64 { 50 65 return this._type; 51 66 }, … … 54 69 * @return {string} 55 70 */ 56 type: function()57 {58 return this._type;59 },60 61 /**62 * @return {string}63 */64 71 displayName: function() 65 72 { 66 return ""; 73 if (typeof this._displayName !== "undefined") 74 return this._displayName; 75 if (!this._name) { 76 this._displayName = ""; 77 return this._displayName; 78 } 79 var parsedURL = new WebInspector.ParsedURL(this._name); 80 if (parsedURL.isValid) 81 this._displayName = parsedURL.host + (parsedURL.port ? (":" + parsedURL.port) : ""); 82 else 83 this._displayName = this._name; 84 return this._displayName; 67 85 }, 68 86 … … 88 106 89 107 /** 108 * @param {string} path 90 109 * @param {string} query 91 110 * @param {boolean} caseSensitive … … 105 124 * @param {boolean} isEditable 106 125 * @param {boolean=} isContentScript 126 * @return {string} 107 127 */ 108 128 addFile: function(path, forceUniquePath, url, contentProvider, isEditable, isContentScript) … … 110 130 if (forceUniquePath) 111 131 path = this._uniquePath(path); 112 console.assert(!this._contentProviders[path]);113 132 var fileDescriptor = new WebInspector.FileDescriptor(path, url, url, contentProvider.contentType(), isEditable, isContentScript); 114 133 this._contentProviders[path] = contentProvider; … … 157 176 this._workspace = workspace; 158 177 this._type = type; 159 this._simpleProjectDelegate = new WebInspector.SimpleProjectDelegate(this._type); 160 this._workspace.addProject(this._simpleProjectDelegate); 178 this._simpleProjectDelegates = {}; 161 179 } 162 180 163 181 /** 164 182 * @param {string} url 183 * @return {Array.<string>} 184 */ 185 WebInspector.SimpleWorkspaceProvider.splitURL = function(url) 186 { 187 var parsedURL = new WebInspector.ParsedURL(url); 188 var origin; 189 var folderPath; 190 var name; 191 if (parsedURL.isValid) { 192 origin = parsedURL.scheme + "://" + parsedURL.host; 193 if (parsedURL.port) 194 origin += ":" + parsedURL.port; 195 folderPath = parsedURL.folderPathComponents; 196 name = parsedURL.lastPathComponent; 197 if (parsedURL.queryParams) 198 name += "?" + parsedURL.queryParams; 199 } else { 200 origin = ""; 201 folderPath = ""; 202 name = url; 203 } 204 var result = [origin]; 205 var splittedPath = folderPath.split("/"); 206 for (var i = 1; i < splittedPath.length; ++i) 207 result.push(splittedPath[i]); 208 result.push(name); 209 return result; 210 } 211 212 /** 213 * @param {Array.<string>} splittedURL 165 214 * @return {string} 166 215 */ 216 WebInspector.SimpleWorkspaceProvider._pathForSplittedURL = function(splittedURL) 217 { 218 splittedURL.shift(); 219 return splittedURL.join("/"); 220 } 221 222 /** 223 * @param {string} url 224 * @param {string} type 225 * @return {string} 226 */ 167 227 WebInspector.SimpleWorkspaceProvider.uriForURL = function(url, type) 168 { 169 var uriTypePrefix = type !== WebInspector.projectTypes.Network ? (type + ":") : ""; 170 var uri = uriTypePrefix + url; 171 return uri; 172 } 228 { 229 var splittedURL = WebInspector.SimpleWorkspaceProvider.splitURL(url); 230 var projectId = WebInspector.SimpleProjectDelegate.projectId(splittedURL[0], type); 231 var path = WebInspector.SimpleWorkspaceProvider._pathForSplittedURL(splittedURL); 232 return WebInspector.UISourceCode.uri(projectId, path); 233 } 173 234 174 235 WebInspector.SimpleWorkspaceProvider.prototype = { 175 236 /** 237 * @param {string} projectName 238 * @return {WebInspector.ProjectDelegate} 239 */ 240 _projectDelegate: function(projectName) 241 { 242 if (this._simpleProjectDelegates[projectName]) 243 return this._simpleProjectDelegates[projectName]; 244 var simpleProjectDelegate = new WebInspector.SimpleProjectDelegate(projectName, this._type); 245 this._simpleProjectDelegates[projectName] = simpleProjectDelegate; 246 this._workspace.addProject(simpleProjectDelegate); 247 return simpleProjectDelegate; 248 }, 249 250 /** 176 251 * @param {string} url 177 252 * @param {WebInspector.ContentProvider} contentProvider 178 253 * @param {boolean} isEditable 179 254 * @param {boolean=} isContentScript 255 * @return {WebInspector.UISourceCode} 180 256 */ 181 257 addFileForURL: function(url, contentProvider, isEditable, isContentScript) … … 189 265 * @param {boolean} isEditable 190 266 * @param {boolean=} isContentScript 267 * @return {WebInspector.UISourceCode} 191 268 */ 192 269 addUniqueFileForURL: function(url, contentProvider, isEditable, isContentScript) … … 199 276 * @param {WebInspector.ContentProvider} contentProvider 200 277 * @param {boolean} isEditable 201 * @param {boolean=} isContentScript 278 * @param {boolean} forceUnique 279 * @param {boolean=} isContentScript 280 * @return {WebInspector.UISourceCode} 202 281 */ 203 282 _innerAddFileForURL: function(url, contentProvider, isEditable, forceUnique, isContentScript) 204 283 { 205 var path = WebInspector.SimpleWorkspaceProvider.uriForURL(url, this._type); 206 path = this._simpleProjectDelegate.addFile(path, forceUnique, url, contentProvider, isEditable, isContentScript); 207 return this._workspace.uiSourceCode(this._simpleProjectDelegate.id(), path); 208 }, 209 210 /** 211 * @param {string} url 212 */ 213 removeFile: function(url) 214 { 215 var path = WebInspector.SimpleWorkspaceProvider.uriForURL(url, this._type); 216 this._simpleProjectDelegate.removeFile(path); 284 var splittedURL = WebInspector.SimpleWorkspaceProvider.splitURL(url); 285 var projectName = splittedURL[0]; 286 var path = WebInspector.SimpleWorkspaceProvider._pathForSplittedURL(splittedURL); 287 return this._innerAddFile(projectName, path, url, contentProvider, isEditable, forceUnique, isContentScript); 288 }, 289 290 /** 291 * @param {string} projectName 292 * @param {string} name 293 * @param {WebInspector.ContentProvider} contentProvider 294 * @param {boolean} isEditable 295 * @param {boolean=} isContentScript 296 * @return {WebInspector.UISourceCode} 297 */ 298 addFileByName: function(projectName, name, contentProvider, isEditable, isContentScript) 299 { 300 return this._innerAddFile("", name, name, contentProvider, isEditable, false, isContentScript); 301 }, 302 303 /** 304 * @param {string} projectName 305 * @param {string} path 306 * @param {WebInspector.ContentProvider} contentProvider 307 * @param {boolean} isEditable 308 * @param {boolean} forceUnique 309 * @param {boolean=} isContentScript 310 * @return {WebInspector.UISourceCode} 311 */ 312 _innerAddFile: function(projectName, path, url, contentProvider, isEditable, forceUnique, isContentScript) 313 { 314 var projectDelegate = this._projectDelegate(projectName); 315 path = projectDelegate.addFile(path, forceUnique, url, contentProvider, isEditable, isContentScript); 316 return this._workspace.uiSourceCode(projectDelegate.id(), path); 317 }, 318 319 /** 320 * @param {string} projectName 321 * @param {string} path 322 */ 323 removeFileByName: function(projectName, path) 324 { 325 var projectDelegate = this._projectDelegate(projectName); 326 projectDelegate.removeFile(path); 217 327 }, 218 328 219 329 reset: function() 220 330 { 221 this._simpleProjectDelegate.reset(); 331 for (var projectName in this._simpleProjectDelegates) 332 this._simpleProjectDelegates[projectName].reset(); 333 this._simpleProjectDelegates = {}; 222 334 }, 223 335 -
trunk/Source/WebCore/inspector/front-end/UISourceCode.js
r142474 r143100 82 82 } 83 83 84 /** 85 * @param {string} projectId 86 * @param {string} path 87 * @return {string} 88 */ 89 WebInspector.UISourceCode.uri = function(projectId, path) 90 { 91 if (!projectId) 92 return path; 93 if (!path) 94 return projectId; 95 return projectId + "/" + path; 96 } 97 98 /** 99 * @param {string} projectId 100 * @param {string} uri 101 * @return {?string} 102 */ 103 WebInspector.UISourceCode.path = function(projectId, uri) 104 { 105 if (!projectId) 106 return uri; 107 if (!uri.startsWith(projectId)) 108 return null; 109 var path = uri.substr(projectId.length); 110 if (path.length && path[0] === "/") 111 path = path.substr(1); 112 return path; 113 } 114 84 115 WebInspector.UISourceCode.prototype = { 85 116 /** … … 104 135 uri: function() 105 136 { 106 return this._path;137 return WebInspector.UISourceCode.uri(this._project.id(), this._path); 107 138 }, 108 139 -
trunk/Source/WebCore/inspector/front-end/Workspace.js
r142474 r143100 188 188 { 189 189 var fileDescriptor = /** @type {WebInspector.FileDescriptor} */ (event.data); 190 var uiSourceCode = this.uiSourceCode ForURI(fileDescriptor.path);190 var uiSourceCode = this.uiSourceCode(fileDescriptor.path); 191 191 if (uiSourceCode) { 192 192 // FIXME: Implement … … 202 202 { 203 203 var path = /** @type {string} */ (event.data); 204 var uiSourceCode = this.uiSourceCode ForURI(path);204 var uiSourceCode = this.uiSourceCode(path); 205 205 if (!uiSourceCode) 206 206 return; … … 244 244 uiSourceCodeForURI: function(uri) 245 245 { 246 return this.uiSourceCode(uri); 246 var path = WebInspector.UISourceCode.path(this.id(), uri); 247 if (typeof path !== "string") 248 return null; 249 return this._uiSourceCodes[path]; 247 250 }, 248 251 … … 296 299 Debugger: "debugger", 297 300 LiveEdit: "liveedit", 298 Compiler: "compiler",299 301 Network: "network", 300 302 Snippets: "snippets", … … 442 444 }, 443 445 444 /**445 * @return {?WebInspector.Project}446 */447 projectForUISourceCode: function(uiSourceCode)448 {449 for (var projectId in this._projects) {450 var project = this._projects[projectId];451 if (project.uiSourceCodeForURI(uiSourceCode.uri()))452 return project;453 }454 return null;455 },456 457 446 __proto__: WebInspector.Object.prototype 458 447 }
Note: See TracChangeset
for help on using the changeset viewer.