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.FileSystemMapping = class extends Common.Object { | 34 Persistence.FileSystemMapping = class extends Common.Object { |
35 /** | 35 /** |
36 * @param {!Workspace.IsolatedFileSystemManager} fileSystemManager | 36 * @param {!Workspace.IsolatedFileSystemManager} fileSystemManager |
37 */ | 37 */ |
38 constructor(fileSystemManager) { | 38 constructor(fileSystemManager) { |
39 super(); | 39 super(); |
40 this._fileSystemMappingSetting = Common.settings.createLocalSetting('fileSys
temMapping', {}); | 40 this._fileSystemMappingSetting = Common.settings.createLocalSetting('fileSys
temMapping', {}); |
41 /** @type {!Object.<string, !Array.<!Workspace.FileSystemMapping.Entry>>} */ | 41 /** @type {!Object.<string, !Array.<!Persistence.FileSystemMapping.Entry>>}
*/ |
42 this._fileSystemMappings = {}; | 42 this._fileSystemMappings = {}; |
43 this._loadFromSettings(); | 43 this._loadFromSettings(); |
44 | 44 |
45 this._eventListeners = [ | 45 this._eventListeners = [ |
46 fileSystemManager.addEventListener( | 46 fileSystemManager.addEventListener( |
47 Workspace.IsolatedFileSystemManager.Events.FileSystemAdded, this._file
SystemAdded, this), | 47 Workspace.IsolatedFileSystemManager.Events.FileSystemAdded, this._file
SystemAdded, this), |
48 fileSystemManager.addEventListener( | 48 fileSystemManager.addEventListener( |
49 Workspace.IsolatedFileSystemManager.Events.FileSystemRemoved, this._fi
leSystemRemoved, this), | 49 Workspace.IsolatedFileSystemManager.Events.FileSystemRemoved, this._fi
leSystemRemoved, this), |
50 ]; | 50 ]; |
51 fileSystemManager.waitForFileSystems().then(this._fileSystemsLoaded.bind(thi
s)); | 51 fileSystemManager.waitForFileSystems().then(this._fileSystemsLoaded.bind(thi
s)); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
99 this._fileSystemMappings = {}; | 99 this._fileSystemMappings = {}; |
100 for (var fileSystemPath in savedMapping) { | 100 for (var fileSystemPath in savedMapping) { |
101 var savedFileSystemMappings = savedMapping[fileSystemPath]; | 101 var savedFileSystemMappings = savedMapping[fileSystemPath]; |
102 fileSystemPath = Common.ParsedURL.platformPathToURL(fileSystemPath); | 102 fileSystemPath = Common.ParsedURL.platformPathToURL(fileSystemPath); |
103 this._fileSystemMappings[fileSystemPath] = []; | 103 this._fileSystemMappings[fileSystemPath] = []; |
104 var fileSystemMappings = this._fileSystemMappings[fileSystemPath]; | 104 var fileSystemMappings = this._fileSystemMappings[fileSystemPath]; |
105 | 105 |
106 for (var i = 0; i < savedFileSystemMappings.length; ++i) { | 106 for (var i = 0; i < savedFileSystemMappings.length; ++i) { |
107 var savedEntry = savedFileSystemMappings[i]; | 107 var savedEntry = savedFileSystemMappings[i]; |
108 var entry = | 108 var entry = |
109 new Workspace.FileSystemMapping.Entry(fileSystemPath, savedEntry.url
Prefix, savedEntry.pathPrefix, true); | 109 new Persistence.FileSystemMapping.Entry(fileSystemPath, savedEntry.u
rlPrefix, savedEntry.pathPrefix, true); |
110 fileSystemMappings.push(entry); | 110 fileSystemMappings.push(entry); |
111 } | 111 } |
112 } | 112 } |
113 | 113 |
114 this._rebuildIndexes(); | 114 this._rebuildIndexes(); |
115 } | 115 } |
116 | 116 |
117 _saveToSettings() { | 117 _saveToSettings() { |
118 var setting = {}; | 118 var setting = {}; |
119 for (var fileSystemPath in this._fileSystemMappings) { | 119 for (var fileSystemPath in this._fileSystemMappings) { |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
193 this._innerAddFileMapping(fileSystemPath, urlPrefix, pathPrefix, false); | 193 this._innerAddFileMapping(fileSystemPath, urlPrefix, pathPrefix, false); |
194 } | 194 } |
195 | 195 |
196 /** | 196 /** |
197 * @param {string} fileSystemPath | 197 * @param {string} fileSystemPath |
198 * @param {string} urlPrefix | 198 * @param {string} urlPrefix |
199 * @param {string} pathPrefix | 199 * @param {string} pathPrefix |
200 * @param {boolean} configurable | 200 * @param {boolean} configurable |
201 */ | 201 */ |
202 _innerAddFileMapping(fileSystemPath, urlPrefix, pathPrefix, configurable) { | 202 _innerAddFileMapping(fileSystemPath, urlPrefix, pathPrefix, configurable) { |
203 var entry = new Workspace.FileSystemMapping.Entry(fileSystemPath, urlPrefix,
pathPrefix, configurable); | 203 var entry = new Persistence.FileSystemMapping.Entry(fileSystemPath, urlPrefi
x, pathPrefix, configurable); |
204 this._fileSystemMappings[fileSystemPath].push(entry); | 204 this._fileSystemMappings[fileSystemPath].push(entry); |
205 this._rebuildIndexes(); | 205 this._rebuildIndexes(); |
206 this.dispatchEventToListeners(Workspace.FileSystemMapping.Events.FileMapping
Added, entry); | 206 this.dispatchEventToListeners(Persistence.FileSystemMapping.Events.FileMappi
ngAdded, entry); |
207 } | 207 } |
208 | 208 |
209 /** | 209 /** |
210 * @param {string} fileSystemPath | 210 * @param {string} fileSystemPath |
211 * @param {string} urlPrefix | 211 * @param {string} urlPrefix |
212 * @param {string} pathPrefix | 212 * @param {string} pathPrefix |
213 */ | 213 */ |
214 removeFileMapping(fileSystemPath, urlPrefix, pathPrefix) { | 214 removeFileMapping(fileSystemPath, urlPrefix, pathPrefix) { |
215 var entry = this._configurableMappingEntryForPathPrefix(fileSystemPath, path
Prefix); | 215 var entry = this._configurableMappingEntryForPathPrefix(fileSystemPath, path
Prefix); |
216 if (!entry) | 216 if (!entry) |
217 return; | 217 return; |
218 this._fileSystemMappings[fileSystemPath].remove(entry); | 218 this._fileSystemMappings[fileSystemPath].remove(entry); |
219 this._rebuildIndexes(); | 219 this._rebuildIndexes(); |
220 this._saveToSettings(); | 220 this._saveToSettings(); |
221 this.dispatchEventToListeners(Workspace.FileSystemMapping.Events.FileMapping
Removed, entry); | 221 this.dispatchEventToListeners(Persistence.FileSystemMapping.Events.FileMappi
ngRemoved, entry); |
222 } | 222 } |
223 | 223 |
224 /** | 224 /** |
225 * @param {string} url | 225 * @param {string} url |
226 * @return {?Workspace.FileSystemMapping.Entry} | 226 * @return {?Persistence.FileSystemMapping.Entry} |
227 */ | 227 */ |
228 _mappingEntryForURL(url) { | 228 _mappingEntryForURL(url) { |
229 for (var i = this._urlPrefixes.length - 1; i >= 0; --i) { | 229 for (var i = this._urlPrefixes.length - 1; i >= 0; --i) { |
230 var urlPrefix = this._urlPrefixes[i]; | 230 var urlPrefix = this._urlPrefixes[i]; |
231 if (url.startsWith(urlPrefix)) | 231 if (url.startsWith(urlPrefix)) |
232 return this._mappingForURLPrefix[urlPrefix]; | 232 return this._mappingForURLPrefix[urlPrefix]; |
233 } | 233 } |
234 return null; | 234 return null; |
235 } | 235 } |
236 | 236 |
237 /** | 237 /** |
238 * @param {string} fileSystemPath | 238 * @param {string} fileSystemPath |
239 * @param {string} filePath | 239 * @param {string} filePath |
240 * @return {?Workspace.FileSystemMapping.Entry} | 240 * @return {?Persistence.FileSystemMapping.Entry} |
241 */ | 241 */ |
242 _mappingEntryForPath(fileSystemPath, filePath) { | 242 _mappingEntryForPath(fileSystemPath, filePath) { |
243 var entries = this._fileSystemMappings[fileSystemPath]; | 243 var entries = this._fileSystemMappings[fileSystemPath]; |
244 if (!entries) | 244 if (!entries) |
245 return null; | 245 return null; |
246 | 246 |
247 var entry = null; | 247 var entry = null; |
248 for (var i = 0; i < entries.length; ++i) { | 248 for (var i = 0; i < entries.length; ++i) { |
249 var pathPrefix = entries[i].pathPrefix; | 249 var pathPrefix = entries[i].pathPrefix; |
250 if (entry && entry.configurable && !entries[i].configurable) | 250 if (entry && entry.configurable && !entries[i].configurable) |
251 continue; | 251 continue; |
252 // We are looking for the longest pathPrefix match. | 252 // We are looking for the longest pathPrefix match. |
253 if (entry && entry.pathPrefix.length > pathPrefix.length) | 253 if (entry && entry.pathPrefix.length > pathPrefix.length) |
254 continue; | 254 continue; |
255 if (filePath.startsWith(pathPrefix)) | 255 if (filePath.startsWith(pathPrefix)) |
256 entry = entries[i]; | 256 entry = entries[i]; |
257 } | 257 } |
258 return entry; | 258 return entry; |
259 } | 259 } |
260 | 260 |
261 /** | 261 /** |
262 * @param {string} fileSystemPath | 262 * @param {string} fileSystemPath |
263 * @param {string} pathPrefix | 263 * @param {string} pathPrefix |
264 * @return {?Workspace.FileSystemMapping.Entry} | 264 * @return {?Persistence.FileSystemMapping.Entry} |
265 */ | 265 */ |
266 _configurableMappingEntryForPathPrefix(fileSystemPath, pathPrefix) { | 266 _configurableMappingEntryForPathPrefix(fileSystemPath, pathPrefix) { |
267 var entries = this._fileSystemMappings[fileSystemPath]; | 267 var entries = this._fileSystemMappings[fileSystemPath]; |
268 for (var i = 0; i < entries.length; ++i) { | 268 for (var i = 0; i < entries.length; ++i) { |
269 if (entries[i].configurable && pathPrefix === entries[i].pathPrefix) | 269 if (entries[i].configurable && pathPrefix === entries[i].pathPrefix) |
270 return entries[i]; | 270 return entries[i]; |
271 } | 271 } |
272 return null; | 272 return null; |
273 } | 273 } |
274 | 274 |
275 /** | 275 /** |
276 * @param {string} fileSystemPath | 276 * @param {string} fileSystemPath |
277 * @return {!Array.<!Workspace.FileSystemMapping.Entry>} | 277 * @return {!Array.<!Persistence.FileSystemMapping.Entry>} |
278 */ | 278 */ |
279 mappingEntries(fileSystemPath) { | 279 mappingEntries(fileSystemPath) { |
280 return this._fileSystemMappings[fileSystemPath].slice(); | 280 return this._fileSystemMappings[fileSystemPath].slice(); |
281 } | 281 } |
282 | 282 |
283 /** | 283 /** |
284 * @param {string} url | 284 * @param {string} url |
285 * @return {boolean} | 285 * @return {boolean} |
286 */ | 286 */ |
287 hasMappingForNetworkURL(url) { | 287 hasMappingForNetworkURL(url) { |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
354 resetForTesting() { | 354 resetForTesting() { |
355 this._fileSystemMappings = {}; | 355 this._fileSystemMappings = {}; |
356 } | 356 } |
357 | 357 |
358 dispose() { | 358 dispose() { |
359 Common.EventTarget.removeEventListeners(this._eventListeners); | 359 Common.EventTarget.removeEventListeners(this._eventListeners); |
360 } | 360 } |
361 }; | 361 }; |
362 | 362 |
363 /** @enum {symbol} */ | 363 /** @enum {symbol} */ |
364 Workspace.FileSystemMapping.Events = { | 364 Persistence.FileSystemMapping.Events = { |
365 FileMappingAdded: Symbol('FileMappingAdded'), | 365 FileMappingAdded: Symbol('FileMappingAdded'), |
366 FileMappingRemoved: Symbol('FileMappingRemoved') | 366 FileMappingRemoved: Symbol('FileMappingRemoved') |
367 }; | 367 }; |
368 | 368 |
369 /** | 369 /** |
370 * @unrestricted | 370 * @unrestricted |
371 */ | 371 */ |
372 Workspace.FileSystemMapping.Entry = class { | 372 Persistence.FileSystemMapping.Entry = class { |
373 /** | 373 /** |
374 * @param {string} fileSystemPath | 374 * @param {string} fileSystemPath |
375 * @param {string} urlPrefix | 375 * @param {string} urlPrefix |
376 * @param {string} pathPrefix | 376 * @param {string} pathPrefix |
377 * @param {boolean} configurable | 377 * @param {boolean} configurable |
378 */ | 378 */ |
379 constructor(fileSystemPath, urlPrefix, pathPrefix, configurable) { | 379 constructor(fileSystemPath, urlPrefix, pathPrefix, configurable) { |
380 this.fileSystemPath = fileSystemPath; | 380 this.fileSystemPath = fileSystemPath; |
381 this.urlPrefix = urlPrefix; | 381 this.urlPrefix = urlPrefix; |
382 this.pathPrefix = pathPrefix; | 382 this.pathPrefix = pathPrefix; |
383 this.configurable = configurable; | 383 this.configurable = configurable; |
384 } | 384 } |
385 }; | 385 }; |
386 | 386 |
387 /** | 387 /** |
388 * @type {!Workspace.FileSystemMapping} | 388 * @type {!Persistence.FileSystemMapping} |
389 */ | 389 */ |
390 Workspace.fileSystemMapping; | 390 Workspace.fileSystemMapping; |
OLD | NEW |