summaryrefslogtreecommitdiff
path: root/chromium/extensions/renderer/resources/entry_id_manager.js
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2016-07-01 12:20:27 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2016-07-01 10:39:40 +0000
commit7366110654eec46f21b6824f302356426f48cd74 (patch)
treef2ff1845183f6117a692bb0c705475c8c13556d5 /chromium/extensions/renderer/resources/entry_id_manager.js
parentb92421879c003a0857b2074f7e05b3bbbb326569 (diff)
downloadqtwebengine-chromium-7366110654eec46f21b6824f302356426f48cd74.tar.gz
BASELINE: Update Chromium to 51.0.2704.106
Also add a few extra files we might need for future features. Change-Id: I517c35e43221c610976d347c966d070ad44d4c2b Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'chromium/extensions/renderer/resources/entry_id_manager.js')
-rw-r--r--chromium/extensions/renderer/resources/entry_id_manager.js52
1 files changed, 52 insertions, 0 deletions
diff --git a/chromium/extensions/renderer/resources/entry_id_manager.js b/chromium/extensions/renderer/resources/entry_id_manager.js
new file mode 100644
index 00000000000..8e23942f93a
--- /dev/null
+++ b/chromium/extensions/renderer/resources/entry_id_manager.js
@@ -0,0 +1,52 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+var fileSystemNatives = requireNative('file_system_natives');
+
+var nameToIds = {};
+var idsToEntries = {};
+
+function computeName(entry) {
+ return entry.filesystem.name + ':' + entry.fullPath;
+}
+
+function computeId(entry) {
+ var fileSystemId = fileSystemNatives.CrackIsolatedFileSystemName(
+ entry.filesystem.name);
+ if (!fileSystemId)
+ return null;
+ // Strip the leading '/' from the path.
+ return fileSystemId + ':' + $String.slice(entry.fullPath, 1);
+}
+
+function registerEntry(id, entry) {
+ var name = computeName(entry);
+ nameToIds[name] = id;
+ idsToEntries[id] = entry;
+}
+
+function getEntryId(entry) {
+ var name = null;
+ try {
+ name = computeName(entry);
+ } catch(e) {
+ return null;
+ }
+ var id = nameToIds[name];
+ if (id != null)
+ return id;
+
+ // If an entry has not been registered, compute its id and register it.
+ id = computeId(entry);
+ registerEntry(id, entry);
+ return id;
+}
+
+function getEntryById(id) {
+ return idsToEntries[id];
+}
+
+exports.$set('registerEntry', registerEntry);
+exports.$set('getEntryId', getEntryId);
+exports.$set('getEntryById', getEntryById);