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