OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
| 5 var fileSystemNatives = requireNative('file_system_natives'); |
| 6 |
5 var nameToIds = {}; | 7 var nameToIds = {}; |
6 var idsToEntries = {}; | 8 var idsToEntries = {}; |
7 | 9 |
8 function computeName(entry) { | 10 function computeName(entry) { |
9 return entry.filesystem.name + ':' + entry.fullPath; | 11 return entry.filesystem.name + ':' + entry.fullPath; |
10 } | 12 } |
11 | 13 |
| 14 function computeId(entry) { |
| 15 var fileSystemId = fileSystemNatives.CrackIsolatedFileSystemName( |
| 16 entry.filesystem.name); |
| 17 if (!fileSystemId) |
| 18 return null; |
| 19 return fileSystemId + ':' + entry.fullPath.slice(1); |
| 20 } |
| 21 |
12 function registerEntry(id, entry) { | 22 function registerEntry(id, entry) { |
13 var name = computeName(entry); | 23 var name = computeName(entry); |
14 nameToIds[name] = id; | 24 nameToIds[name] = id; |
15 idsToEntries[id] = entry; | 25 idsToEntries[id] = entry; |
16 }; | 26 } |
17 | 27 |
18 function getEntryId(entry) { | 28 function getEntryId(entry) { |
19 var name = null; | 29 var name = null; |
20 try { | 30 try { |
21 name = computeName(entry); | 31 name = computeName(entry); |
22 } catch(e) { | 32 } catch(e) { |
23 return null; | 33 return null; |
24 } | 34 } |
25 return nameToIds[name]; | 35 var id = nameToIds[name]; |
| 36 if (id != null) |
| 37 return id; |
| 38 |
| 39 id = computeId(entry); |
| 40 registerEntry(id, entry); |
| 41 return id; |
26 } | 42 } |
27 | 43 |
28 function getEntryById(id) { | 44 function getEntryById(id) { |
29 return idsToEntries[id]; | 45 return idsToEntries[id]; |
30 } | 46 } |
31 | 47 |
32 exports.registerEntry = registerEntry; | 48 exports.registerEntry = registerEntry; |
33 exports.getEntryId = getEntryId; | 49 exports.getEntryId = getEntryId; |
34 exports.getEntryById = getEntryById; | 50 exports.getEntryById = getEntryById; |
OLD | NEW |