| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 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 23 matching lines...) Expand all Loading... |
| 34 * @extends {WebInspector.Object} | 34 * @extends {WebInspector.Object} |
| 35 * @param {WebInspector.IsolatedFileSystem} isolatedFileSystem | 35 * @param {WebInspector.IsolatedFileSystem} isolatedFileSystem |
| 36 * @param {WebInspector.Workspace} workspace | 36 * @param {WebInspector.Workspace} workspace |
| 37 */ | 37 */ |
| 38 WebInspector.FileSystemProjectDelegate = function(isolatedFileSystem, workspace) | 38 WebInspector.FileSystemProjectDelegate = function(isolatedFileSystem, workspace) |
| 39 { | 39 { |
| 40 this._fileSystem = isolatedFileSystem; | 40 this._fileSystem = isolatedFileSystem; |
| 41 this._workspace = workspace; | 41 this._workspace = workspace; |
| 42 } | 42 } |
| 43 | 43 |
| 44 WebInspector.FileSystemProjectDelegate._scriptExtensions = ["js", "java", "cc",
"cpp", "h", "cs", "py", "php"].keySet(); | 44 WebInspector.FileSystemProjectDelegate._scriptExtensions = ["js", "java", "coffe
e", "ts", "dart"].keySet(); |
| 45 WebInspector.FileSystemProjectDelegate._styleSheetExtensions = ["css", "scss", "
sass"].keySet(); | 45 WebInspector.FileSystemProjectDelegate._styleSheetExtensions = ["css", "scss", "
sass", "less"].keySet(); |
| 46 WebInspector.FileSystemProjectDelegate._documentExtensions = ["htm", "html", "as
p", "aspx", "phtml", "jsp"].keySet(); |
| 46 | 47 |
| 47 WebInspector.FileSystemProjectDelegate.projectId = function(fileSystemPath) | 48 WebInspector.FileSystemProjectDelegate.projectId = function(fileSystemPath) |
| 48 { | 49 { |
| 49 return "filesystem:" + fileSystemPath; | 50 return "filesystem:" + fileSystemPath; |
| 50 } | 51 } |
| 51 | 52 |
| 52 WebInspector.FileSystemProjectDelegate.prototype = { | 53 WebInspector.FileSystemProjectDelegate.prototype = { |
| 53 /** | 54 /** |
| 54 * @return {string} | 55 * @return {string} |
| 55 */ | 56 */ |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 98 requestFileContent: function(path, callback) | 99 requestFileContent: function(path, callback) |
| 99 { | 100 { |
| 100 var filePath = this._filePathForPath(path); | 101 var filePath = this._filePathForPath(path); |
| 101 this._fileSystem.requestFileContent(filePath, innerCallback.bind(this)); | 102 this._fileSystem.requestFileContent(filePath, innerCallback.bind(this)); |
| 102 | 103 |
| 103 /** | 104 /** |
| 104 * @param {?string} content | 105 * @param {?string} content |
| 105 */ | 106 */ |
| 106 function innerCallback(content) | 107 function innerCallback(content) |
| 107 { | 108 { |
| 108 var contentType = this._contentTypeForPath(path); | 109 var extension = this._extensionForPath(path); |
| 109 callback(content, false, contentType.canonicalMimeType()); | 110 var mimeType = WebInspector.ResourceType.mimeTypesForExtensions[exte
nsion]; |
| 111 callback(content, false, mimeType); |
| 110 } | 112 } |
| 111 }, | 113 }, |
| 112 | 114 |
| 113 /** | 115 /** |
| 114 * @param {string} path | 116 * @param {string} path |
| 115 * @param {function(?Date, ?number)} callback | 117 * @param {function(?Date, ?number)} callback |
| 116 */ | 118 */ |
| 117 requestMetadata: function(path, callback) | 119 requestMetadata: function(path, callback) |
| 118 { | 120 { |
| 119 var filePath = this._filePathForPath(path); | 121 var filePath = this._filePathForPath(path); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 177 { | 179 { |
| 178 var result = []; | 180 var result = []; |
| 179 if (content !== null) | 181 if (content !== null) |
| 180 result = WebInspector.ContentProvider.performSearchInContent(con
tent, query, caseSensitive, isRegex); | 182 result = WebInspector.ContentProvider.performSearchInContent(con
tent, query, caseSensitive, isRegex); |
| 181 callback(result); | 183 callback(result); |
| 182 } | 184 } |
| 183 }, | 185 }, |
| 184 | 186 |
| 185 /** | 187 /** |
| 186 * @param {string} path | 188 * @param {string} path |
| 189 * @return {string} |
| 190 */ |
| 191 _extensionForPath: function(path) |
| 192 { |
| 193 var extensionIndex = path.lastIndexOf("."); |
| 194 if (extensionIndex === -1) |
| 195 return ""; |
| 196 return path.substring(extensionIndex + 1).toLowerCase(); |
| 197 }, |
| 198 |
| 199 /** |
| 200 * @param {string} extension |
| 187 * @return {WebInspector.ResourceType} | 201 * @return {WebInspector.ResourceType} |
| 188 */ | 202 */ |
| 189 _contentTypeForPath: function(path) | 203 _contentTypeForExtension: function(extension) |
| 190 { | 204 { |
| 191 var extensionIndex = path.lastIndexOf("."); | |
| 192 var extension = ""; | |
| 193 if (extensionIndex !== -1) | |
| 194 extension = path.substring(extensionIndex + 1).toLowerCase(); | |
| 195 var contentType = WebInspector.resourceTypes.Other; | |
| 196 if (WebInspector.FileSystemProjectDelegate._scriptExtensions[extension]) | 205 if (WebInspector.FileSystemProjectDelegate._scriptExtensions[extension]) |
| 197 return WebInspector.resourceTypes.Script; | 206 return WebInspector.resourceTypes.Script; |
| 198 if (WebInspector.FileSystemProjectDelegate._styleSheetExtensions[extensi
on]) | 207 if (WebInspector.FileSystemProjectDelegate._styleSheetExtensions[extensi
on]) |
| 199 return WebInspector.resourceTypes.Stylesheet; | 208 return WebInspector.resourceTypes.Stylesheet; |
| 200 if (extension === "html" || extension === "htm") | 209 if (WebInspector.FileSystemProjectDelegate._documentExtensions[extension
]) |
| 201 return WebInspector.resourceTypes.Document; | 210 return WebInspector.resourceTypes.Document; |
| 202 return WebInspector.resourceTypes.Other; | 211 return WebInspector.resourceTypes.Other; |
| 203 }, | 212 }, |
| 204 | 213 |
| 205 populate: function() | 214 populate: function() |
| 206 { | 215 { |
| 207 this._fileSystem.requestFilesRecursive("", this._addFile.bind(this)); | 216 this._fileSystem.requestFilesRecursive("", this._addFile.bind(this)); |
| 208 }, | 217 }, |
| 209 | 218 |
| 210 /** | 219 /** |
| 211 * @param {string} filePath | 220 * @param {string} filePath |
| 212 */ | 221 */ |
| 213 _addFile: function(filePath) | 222 _addFile: function(filePath) |
| 214 { | 223 { |
| 215 if (!filePath) | 224 if (!filePath) |
| 216 console.assert(false); | 225 console.assert(false); |
| 217 var fullPath = this._fileSystem.path() + "/" + filePath; | 226 var fullPath = this._fileSystem.path() + "/" + filePath; |
| 218 | 227 |
| 219 var slash = filePath.lastIndexOf("/"); | 228 var slash = filePath.lastIndexOf("/"); |
| 220 var parentPath = filePath.substring(0, slash); | 229 var parentPath = filePath.substring(0, slash); |
| 221 var name = filePath.substring(slash + 1); | 230 var name = filePath.substring(slash + 1); |
| 222 | 231 |
| 223 var url = this._workspace.urlForPath(this._fileSystem.path(), filePath); | 232 var url = this._workspace.urlForPath(this._fileSystem.path(), filePath); |
| 224 var contentType = this._contentTypeForPath(filePath); | 233 var extension = this._extensionForPath(filePath); |
| 234 var contentType = this._contentTypeForExtension(extension); |
| 235 |
| 225 var fileDescriptor = new WebInspector.FileDescriptor(parentPath, name, "
file://" + fullPath, url, contentType, true); | 236 var fileDescriptor = new WebInspector.FileDescriptor(parentPath, name, "
file://" + fullPath, url, contentType, true); |
| 226 this.dispatchEventToListeners(WebInspector.ProjectDelegate.Events.FileAd
ded, fileDescriptor); | 237 this.dispatchEventToListeners(WebInspector.ProjectDelegate.Events.FileAd
ded, fileDescriptor); |
| 227 }, | 238 }, |
| 228 | 239 |
| 229 /** | 240 /** |
| 230 * @param {string} path | 241 * @param {string} path |
| 231 */ | 242 */ |
| 232 _removeFile: function(path) | 243 _removeFile: function(path) |
| 233 { | 244 { |
| 234 this.dispatchEventToListeners(WebInspector.ProjectDelegate.Events.FileRe
moved, path); | 245 this.dispatchEventToListeners(WebInspector.ProjectDelegate.Events.FileRe
moved, path); |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 294 { | 305 { |
| 295 var projectDelegate = this._simpleProjectDelegates[uiSourceCode.project(
).id()]; | 306 var projectDelegate = this._simpleProjectDelegates[uiSourceCode.project(
).id()]; |
| 296 return projectDelegate.fileSystemPath(); | 307 return projectDelegate.fileSystemPath(); |
| 297 } | 308 } |
| 298 } | 309 } |
| 299 | 310 |
| 300 /** | 311 /** |
| 301 * @type {?WebInspector.FileSystemWorkspaceProvider} | 312 * @type {?WebInspector.FileSystemWorkspaceProvider} |
| 302 */ | 313 */ |
| 303 WebInspector.fileSystemWorkspaceProvider = null; | 314 WebInspector.fileSystemWorkspaceProvider = null; |
| OLD | NEW |