blob: 9fc2c14b16c16113e445206ddb9dc8b25a076615 [file] [log] [blame]
[email protected]8f857ef82014-06-04 23:46:161// Copyright 2014 The Chromium Authors. All rights reserved.
[email protected]d51bd572013-01-14 03:37:082// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
[email protected]961745f2013-05-25 14:09:245var fileSystemNatives = requireNative('file_system_natives');
6
[email protected]d51bd572013-01-14 03:37:087var nameToIds = {};
8var idsToEntries = {};
9
10function computeName(entry) {
11 return entry.filesystem.name + ':' + entry.fullPath;
12}
13
[email protected]961745f2013-05-25 14:09:2414function computeId(entry) {
15 var fileSystemId = fileSystemNatives.CrackIsolatedFileSystemName(
16 entry.filesystem.name);
17 if (!fileSystemId)
18 return null;
19 // Strip the leading '/' from the path.
[email protected]31bbfd72013-06-22 02:35:5420 return fileSystemId + ':' + $String.slice(entry.fullPath, 1);
[email protected]961745f2013-05-25 14:09:2421}
22
[email protected]d51bd572013-01-14 03:37:0823function registerEntry(id, entry) {
24 var name = computeName(entry);
25 nameToIds[name] = id;
26 idsToEntries[id] = entry;
[email protected]961745f2013-05-25 14:09:2427}
[email protected]d51bd572013-01-14 03:37:0828
29function getEntryId(entry) {
30 var name = null;
31 try {
32 name = computeName(entry);
33 } catch(e) {
34 return null;
35 }
[email protected]961745f2013-05-25 14:09:2436 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;
[email protected]d51bd572013-01-14 03:37:0844}
45
46function getEntryById(id) {
47 return idsToEntries[id];
48}
49
50exports.registerEntry = registerEntry;
51exports.getEntryId = getEntryId;
52exports.getEntryById = getEntryById;