| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 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 13 matching lines...) Expand all Loading... |
| 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 29 */ | 29 */ |
| 30 | 30 |
| 31 /** | 31 /** |
| 32 * @unrestricted | 32 * @unrestricted |
| 33 */ | 33 */ |
| 34 Workspace.IsolatedFileSystemManager = class extends Common.Object { | 34 Persistence.IsolatedFileSystemManager = class extends Common.Object { |
| 35 constructor() { | 35 constructor() { |
| 36 super(); | 36 super(); |
| 37 | 37 |
| 38 /** @type {!Map<string, !Workspace.IsolatedFileSystem>} */ | 38 /** @type {!Map<string, !Persistence.IsolatedFileSystem>} */ |
| 39 this._fileSystems = new Map(); | 39 this._fileSystems = new Map(); |
| 40 /** @type {!Map<number, function(!Array.<string>)>} */ | 40 /** @type {!Map<number, function(!Array.<string>)>} */ |
| 41 this._callbacks = new Map(); | 41 this._callbacks = new Map(); |
| 42 /** @type {!Map<number, !Common.Progress>} */ | 42 /** @type {!Map<number, !Common.Progress>} */ |
| 43 this._progresses = new Map(); | 43 this._progresses = new Map(); |
| 44 | 44 |
| 45 InspectorFrontendHost.events.addEventListener( | 45 InspectorFrontendHost.events.addEventListener( |
| 46 InspectorFrontendHostAPI.Events.FileSystemRemoved, this._onFileSystemRem
oved, this); | 46 InspectorFrontendHostAPI.Events.FileSystemRemoved, this._onFileSystemRem
oved, this); |
| 47 InspectorFrontendHost.events.addEventListener( | 47 InspectorFrontendHost.events.addEventListener( |
| 48 InspectorFrontendHostAPI.Events.FileSystemAdded, this._onFileSystemAdded
, this); | 48 InspectorFrontendHostAPI.Events.FileSystemAdded, this._onFileSystemAdded
, this); |
| 49 InspectorFrontendHost.events.addEventListener( | 49 InspectorFrontendHost.events.addEventListener( |
| 50 InspectorFrontendHostAPI.Events.FileSystemFilesChangedAddedRemoved, this
._onFileSystemFilesChanged, this); | 50 InspectorFrontendHostAPI.Events.FileSystemFilesChangedAddedRemoved, this
._onFileSystemFilesChanged, this); |
| 51 InspectorFrontendHost.events.addEventListener( | 51 InspectorFrontendHost.events.addEventListener( |
| 52 InspectorFrontendHostAPI.Events.IndexingTotalWorkCalculated, this._onInd
exingTotalWorkCalculated, this); | 52 InspectorFrontendHostAPI.Events.IndexingTotalWorkCalculated, this._onInd
exingTotalWorkCalculated, this); |
| 53 InspectorFrontendHost.events.addEventListener( | 53 InspectorFrontendHost.events.addEventListener( |
| 54 InspectorFrontendHostAPI.Events.IndexingWorked, this._onIndexingWorked,
this); | 54 InspectorFrontendHostAPI.Events.IndexingWorked, this._onIndexingWorked,
this); |
| 55 InspectorFrontendHost.events.addEventListener( | 55 InspectorFrontendHost.events.addEventListener( |
| 56 InspectorFrontendHostAPI.Events.IndexingDone, this._onIndexingDone, this
); | 56 InspectorFrontendHostAPI.Events.IndexingDone, this._onIndexingDone, this
); |
| 57 InspectorFrontendHost.events.addEventListener( | 57 InspectorFrontendHost.events.addEventListener( |
| 58 InspectorFrontendHostAPI.Events.SearchCompleted, this._onSearchCompleted
, this); | 58 InspectorFrontendHostAPI.Events.SearchCompleted, this._onSearchCompleted
, this); |
| 59 | 59 |
| 60 this._initExcludePatterSetting(); | 60 this._initExcludePatterSetting(); |
| 61 | 61 |
| 62 this._fileSystemsLoadedPromise = this._requestFileSystems(); | 62 this._fileSystemsLoadedPromise = this._requestFileSystems(); |
| 63 } | 63 } |
| 64 | 64 |
| 65 /** | 65 /** |
| 66 * @return {!Promise<!Array<!Workspace.IsolatedFileSystem>>} | 66 * @return {!Promise<!Array<!Persistence.IsolatedFileSystem>>} |
| 67 */ | 67 */ |
| 68 _requestFileSystems() { | 68 _requestFileSystems() { |
| 69 var fulfill; | 69 var fulfill; |
| 70 var promise = new Promise(f => fulfill = f); | 70 var promise = new Promise(f => fulfill = f); |
| 71 InspectorFrontendHost.events.addEventListener( | 71 InspectorFrontendHost.events.addEventListener( |
| 72 InspectorFrontendHostAPI.Events.FileSystemsLoaded, onFileSystemsLoaded,
this); | 72 InspectorFrontendHostAPI.Events.FileSystemsLoaded, onFileSystemsLoaded,
this); |
| 73 InspectorFrontendHost.requestFileSystems(); | 73 InspectorFrontendHost.requestFileSystems(); |
| 74 return promise; | 74 return promise; |
| 75 | 75 |
| 76 /** | 76 /** |
| 77 * @param {!Common.Event} event | 77 * @param {!Common.Event} event |
| 78 * @this {Workspace.IsolatedFileSystemManager} | 78 * @this {Persistence.IsolatedFileSystemManager} |
| 79 */ | 79 */ |
| 80 function onFileSystemsLoaded(event) { | 80 function onFileSystemsLoaded(event) { |
| 81 var fileSystems = /** @type {!Array.<!Workspace.IsolatedFileSystemManager.
FileSystem>} */ (event.data); | 81 var fileSystems = /** @type {!Array.<!Persistence.IsolatedFileSystemManage
r.FileSystem>} */ (event.data); |
| 82 var promises = []; | 82 var promises = []; |
| 83 for (var i = 0; i < fileSystems.length; ++i) | 83 for (var i = 0; i < fileSystems.length; ++i) |
| 84 promises.push(this._innerAddFileSystem(fileSystems[i], false)); | 84 promises.push(this._innerAddFileSystem(fileSystems[i], false)); |
| 85 Promise.all(promises).then(onFileSystemsAdded); | 85 Promise.all(promises).then(onFileSystemsAdded); |
| 86 } | 86 } |
| 87 | 87 |
| 88 /** | 88 /** |
| 89 * @param {!Array<?Workspace.IsolatedFileSystem>} fileSystems | 89 * @param {!Array<?Persistence.IsolatedFileSystem>} fileSystems |
| 90 */ | 90 */ |
| 91 function onFileSystemsAdded(fileSystems) { | 91 function onFileSystemsAdded(fileSystems) { |
| 92 fulfill(fileSystems.filter(fs => !!fs)); | 92 fulfill(fileSystems.filter(fs => !!fs)); |
| 93 } | 93 } |
| 94 } | 94 } |
| 95 | 95 |
| 96 addFileSystem() { | 96 addFileSystem() { |
| 97 InspectorFrontendHost.addFileSystem(''); | 97 InspectorFrontendHost.addFileSystem(''); |
| 98 } | 98 } |
| 99 | 99 |
| 100 /** | 100 /** |
| 101 * @param {!Workspace.IsolatedFileSystem} fileSystem | 101 * @param {!Persistence.IsolatedFileSystem} fileSystem |
| 102 */ | 102 */ |
| 103 removeFileSystem(fileSystem) { | 103 removeFileSystem(fileSystem) { |
| 104 InspectorFrontendHost.removeFileSystem(fileSystem.embedderPath()); | 104 InspectorFrontendHost.removeFileSystem(fileSystem.embedderPath()); |
| 105 } | 105 } |
| 106 | 106 |
| 107 /** | 107 /** |
| 108 * @return {!Promise<!Array<!Workspace.IsolatedFileSystem>>} | 108 * @return {!Promise<!Array<!Persistence.IsolatedFileSystem>>} |
| 109 */ | 109 */ |
| 110 waitForFileSystems() { | 110 waitForFileSystems() { |
| 111 return this._fileSystemsLoadedPromise; | 111 return this._fileSystemsLoadedPromise; |
| 112 } | 112 } |
| 113 | 113 |
| 114 /** | 114 /** |
| 115 * @param {!Workspace.IsolatedFileSystemManager.FileSystem} fileSystem | 115 * @param {!Persistence.IsolatedFileSystemManager.FileSystem} fileSystem |
| 116 * @param {boolean} dispatchEvent | 116 * @param {boolean} dispatchEvent |
| 117 * @return {!Promise<?Workspace.IsolatedFileSystem>} | 117 * @return {!Promise<?Persistence.IsolatedFileSystem>} |
| 118 */ | 118 */ |
| 119 _innerAddFileSystem(fileSystem, dispatchEvent) { | 119 _innerAddFileSystem(fileSystem, dispatchEvent) { |
| 120 var embedderPath = fileSystem.fileSystemPath; | 120 var embedderPath = fileSystem.fileSystemPath; |
| 121 var fileSystemURL = Common.ParsedURL.platformPathToURL(fileSystem.fileSystem
Path); | 121 var fileSystemURL = Common.ParsedURL.platformPathToURL(fileSystem.fileSystem
Path); |
| 122 var promise = Workspace.IsolatedFileSystem.create( | 122 var promise = Persistence.IsolatedFileSystem.create( |
| 123 this, fileSystemURL, embedderPath, fileSystem.fileSystemName, fileSystem
.rootURL); | 123 this, fileSystemURL, embedderPath, fileSystem.fileSystemName, fileSystem
.rootURL); |
| 124 return promise.then(storeFileSystem.bind(this)); | 124 return promise.then(storeFileSystem.bind(this)); |
| 125 | 125 |
| 126 /** | 126 /** |
| 127 * @param {?Workspace.IsolatedFileSystem} fileSystem | 127 * @param {?Persistence.IsolatedFileSystem} fileSystem |
| 128 * @this {Workspace.IsolatedFileSystemManager} | 128 * @this {Persistence.IsolatedFileSystemManager} |
| 129 */ | 129 */ |
| 130 function storeFileSystem(fileSystem) { | 130 function storeFileSystem(fileSystem) { |
| 131 if (!fileSystem) | 131 if (!fileSystem) |
| 132 return null; | 132 return null; |
| 133 this._fileSystems.set(fileSystemURL, fileSystem); | 133 this._fileSystems.set(fileSystemURL, fileSystem); |
| 134 if (dispatchEvent) | 134 if (dispatchEvent) |
| 135 this.dispatchEventToListeners(Workspace.IsolatedFileSystemManager.Events
.FileSystemAdded, fileSystem); | 135 this.dispatchEventToListeners(Persistence.IsolatedFileSystemManager.Even
ts.FileSystemAdded, fileSystem); |
| 136 return fileSystem; | 136 return fileSystem; |
| 137 } | 137 } |
| 138 } | 138 } |
| 139 | 139 |
| 140 /** | 140 /** |
| 141 * @param {!Common.Event} event | 141 * @param {!Common.Event} event |
| 142 */ | 142 */ |
| 143 _onFileSystemAdded(event) { | 143 _onFileSystemAdded(event) { |
| 144 var errorMessage = /** @type {string} */ (event.data['errorMessage']); | 144 var errorMessage = /** @type {string} */ (event.data['errorMessage']); |
| 145 var fileSystem = /** @type {?Workspace.IsolatedFileSystemManager.FileSystem}
*/ (event.data['fileSystem']); | 145 var fileSystem = /** @type {?Persistence.IsolatedFileSystemManager.FileSyste
m} */ (event.data['fileSystem']); |
| 146 if (errorMessage) | 146 if (errorMessage) |
| 147 Common.console.error(errorMessage); | 147 Common.console.error(errorMessage); |
| 148 else if (fileSystem) | 148 else if (fileSystem) |
| 149 this._innerAddFileSystem(fileSystem, true); | 149 this._innerAddFileSystem(fileSystem, true); |
| 150 } | 150 } |
| 151 | 151 |
| 152 /** | 152 /** |
| 153 * @param {!Common.Event} event | 153 * @param {!Common.Event} event |
| 154 */ | 154 */ |
| 155 _onFileSystemRemoved(event) { | 155 _onFileSystemRemoved(event) { |
| 156 var embedderPath = /** @type {string} */ (event.data); | 156 var embedderPath = /** @type {string} */ (event.data); |
| 157 var fileSystemPath = Common.ParsedURL.platformPathToURL(embedderPath); | 157 var fileSystemPath = Common.ParsedURL.platformPathToURL(embedderPath); |
| 158 var isolatedFileSystem = this._fileSystems.get(fileSystemPath); | 158 var isolatedFileSystem = this._fileSystems.get(fileSystemPath); |
| 159 if (!isolatedFileSystem) | 159 if (!isolatedFileSystem) |
| 160 return; | 160 return; |
| 161 this._fileSystems.delete(fileSystemPath); | 161 this._fileSystems.delete(fileSystemPath); |
| 162 isolatedFileSystem.fileSystemRemoved(); | 162 isolatedFileSystem.fileSystemRemoved(); |
| 163 this.dispatchEventToListeners(Workspace.IsolatedFileSystemManager.Events.Fil
eSystemRemoved, isolatedFileSystem); | 163 this.dispatchEventToListeners(Persistence.IsolatedFileSystemManager.Events.F
ileSystemRemoved, isolatedFileSystem); |
| 164 } | 164 } |
| 165 | 165 |
| 166 /** | 166 /** |
| 167 * @param {!Common.Event} event | 167 * @param {!Common.Event} event |
| 168 */ | 168 */ |
| 169 _onFileSystemFilesChanged(event) { | 169 _onFileSystemFilesChanged(event) { |
| 170 var paths = /** @type {!Workspace.IsolatedFileSystemManager.FilesChangedData
} */ (event.data); | 170 var paths = /** @type {!Persistence.IsolatedFileSystemManager.FilesChangedDa
ta} */ (event.data); |
| 171 var urlPaths = {}; | 171 var urlPaths = {}; |
| 172 urlPaths.changed = paths.changed.map(embedderPath => Common.ParsedURL.platfo
rmPathToURL(embedderPath)); | 172 urlPaths.changed = paths.changed.map(embedderPath => Common.ParsedURL.platfo
rmPathToURL(embedderPath)); |
| 173 urlPaths.added = paths.added.map(embedderPath => Common.ParsedURL.platformPa
thToURL(embedderPath)); | 173 urlPaths.added = paths.added.map(embedderPath => Common.ParsedURL.platformPa
thToURL(embedderPath)); |
| 174 urlPaths.removed = paths.removed.map(embedderPath => Common.ParsedURL.platfo
rmPathToURL(embedderPath)); | 174 urlPaths.removed = paths.removed.map(embedderPath => Common.ParsedURL.platfo
rmPathToURL(embedderPath)); |
| 175 this.dispatchEventToListeners(Workspace.IsolatedFileSystemManager.Events.Fil
eSystemFilesChanged, urlPaths); | 175 this.dispatchEventToListeners(Persistence.IsolatedFileSystemManager.Events.F
ileSystemFilesChanged, urlPaths); |
| 176 } | 176 } |
| 177 | 177 |
| 178 /** | 178 /** |
| 179 * @return {!Array<!Workspace.IsolatedFileSystem>} | 179 * @return {!Array<!Persistence.IsolatedFileSystem>} |
| 180 */ | 180 */ |
| 181 fileSystems() { | 181 fileSystems() { |
| 182 return this._fileSystems.valuesArray(); | 182 return this._fileSystems.valuesArray(); |
| 183 } | 183 } |
| 184 | 184 |
| 185 /** | 185 /** |
| 186 * @param {string} fileSystemPath | 186 * @param {string} fileSystemPath |
| 187 * @return {?Workspace.IsolatedFileSystem} | 187 * @return {?Persistence.IsolatedFileSystem} |
| 188 */ | 188 */ |
| 189 fileSystem(fileSystemPath) { | 189 fileSystem(fileSystemPath) { |
| 190 return this._fileSystems.get(fileSystemPath) || null; | 190 return this._fileSystems.get(fileSystemPath) || null; |
| 191 } | 191 } |
| 192 | 192 |
| 193 _initExcludePatterSetting() { | 193 _initExcludePatterSetting() { |
| 194 var defaultCommonExcludedFolders = [ | 194 var defaultCommonExcludedFolders = [ |
| 195 '/node_modules/', '/bower_components/', '/\\.devtools', '/\\.git/', '/\\.s
ass-cache/', '/\\.hg/', '/\\.idea/', | 195 '/node_modules/', '/bower_components/', '/\\.devtools', '/\\.git/', '/\\.s
ass-cache/', '/\\.hg/', '/\\.idea/', |
| 196 '/\\.svn/', '/\\.cache/', '/\\.project/' | 196 '/\\.svn/', '/\\.cache/', '/\\.project/' |
| 197 ]; | 197 ]; |
| (...skipping 20 matching lines...) Expand all Loading... |
| 218 */ | 218 */ |
| 219 workspaceFolderExcludePatternSetting() { | 219 workspaceFolderExcludePatternSetting() { |
| 220 return this._workspaceFolderExcludePatternSetting; | 220 return this._workspaceFolderExcludePatternSetting; |
| 221 } | 221 } |
| 222 | 222 |
| 223 /** | 223 /** |
| 224 * @param {function(!Array.<string>)} callback | 224 * @param {function(!Array.<string>)} callback |
| 225 * @return {number} | 225 * @return {number} |
| 226 */ | 226 */ |
| 227 registerCallback(callback) { | 227 registerCallback(callback) { |
| 228 var requestId = ++Workspace.IsolatedFileSystemManager._lastRequestId; | 228 var requestId = ++Persistence.IsolatedFileSystemManager._lastRequestId; |
| 229 this._callbacks.set(requestId, callback); | 229 this._callbacks.set(requestId, callback); |
| 230 return requestId; | 230 return requestId; |
| 231 } | 231 } |
| 232 | 232 |
| 233 /** | 233 /** |
| 234 * @param {!Common.Progress} progress | 234 * @param {!Common.Progress} progress |
| 235 * @return {number} | 235 * @return {number} |
| 236 */ | 236 */ |
| 237 registerProgress(progress) { | 237 registerProgress(progress) { |
| 238 var requestId = ++Workspace.IsolatedFileSystemManager._lastRequestId; | 238 var requestId = ++Persistence.IsolatedFileSystemManager._lastRequestId; |
| 239 this._progresses.set(requestId, progress); | 239 this._progresses.set(requestId, progress); |
| 240 return requestId; | 240 return requestId; |
| 241 } | 241 } |
| 242 | 242 |
| 243 /** | 243 /** |
| 244 * @param {!Common.Event} event | 244 * @param {!Common.Event} event |
| 245 */ | 245 */ |
| 246 _onIndexingTotalWorkCalculated(event) { | 246 _onIndexingTotalWorkCalculated(event) { |
| 247 var requestId = /** @type {number} */ (event.data['requestId']); | 247 var requestId = /** @type {number} */ (event.data['requestId']); |
| 248 var totalWork = /** @type {number} */ (event.data['totalWork']); | 248 var totalWork = /** @type {number} */ (event.data['totalWork']); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 292 | 292 |
| 293 var callback = this._callbacks.get(requestId); | 293 var callback = this._callbacks.get(requestId); |
| 294 if (!callback) | 294 if (!callback) |
| 295 return; | 295 return; |
| 296 callback.call(null, files); | 296 callback.call(null, files); |
| 297 this._callbacks.delete(requestId); | 297 this._callbacks.delete(requestId); |
| 298 } | 298 } |
| 299 }; | 299 }; |
| 300 | 300 |
| 301 /** @typedef {!{fileSystemName: string, rootURL: string, fileSystemPath: string}
} */ | 301 /** @typedef {!{fileSystemName: string, rootURL: string, fileSystemPath: string}
} */ |
| 302 Workspace.IsolatedFileSystemManager.FileSystem; | 302 Persistence.IsolatedFileSystemManager.FileSystem; |
| 303 | 303 |
| 304 /** @typedef {!{changed:!Array<string>, added:!Array<string>, removed:!Array<str
ing>}} */ | 304 /** @typedef {!{changed:!Array<string>, added:!Array<string>, removed:!Array<str
ing>}} */ |
| 305 Workspace.IsolatedFileSystemManager.FilesChangedData; | 305 Persistence.IsolatedFileSystemManager.FilesChangedData; |
| 306 | 306 |
| 307 /** @enum {symbol} */ | 307 /** @enum {symbol} */ |
| 308 Workspace.IsolatedFileSystemManager.Events = { | 308 Persistence.IsolatedFileSystemManager.Events = { |
| 309 FileSystemAdded: Symbol('FileSystemAdded'), | 309 FileSystemAdded: Symbol('FileSystemAdded'), |
| 310 FileSystemRemoved: Symbol('FileSystemRemoved'), | 310 FileSystemRemoved: Symbol('FileSystemRemoved'), |
| 311 FileSystemFilesChanged: Symbol('FileSystemFilesChanged'), | 311 FileSystemFilesChanged: Symbol('FileSystemFilesChanged'), |
| 312 ExcludedFolderAdded: Symbol('ExcludedFolderAdded'), | 312 ExcludedFolderAdded: Symbol('ExcludedFolderAdded'), |
| 313 ExcludedFolderRemoved: Symbol('ExcludedFolderRemoved') | 313 ExcludedFolderRemoved: Symbol('ExcludedFolderRemoved') |
| 314 }; | 314 }; |
| 315 | 315 |
| 316 Workspace.IsolatedFileSystemManager._lastRequestId = 0; | 316 Persistence.IsolatedFileSystemManager._lastRequestId = 0; |
| 317 | 317 |
| 318 /** | 318 /** |
| 319 * @type {!Workspace.IsolatedFileSystemManager} | 319 * @type {!Persistence.IsolatedFileSystemManager} |
| 320 */ | 320 */ |
| 321 Workspace.isolatedFileSystemManager; | 321 Persistence.isolatedFileSystemManager; |
| OLD | NEW |