Chromium Code Reviews| Index: ui/file_manager/file_manager/background/js/global_metadata_cache.js |
| diff --git a/ui/file_manager/file_manager/background/js/global_metadata_cache.js b/ui/file_manager/file_manager/background/js/global_metadata_cache.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..4fdd42f2311564a940aec914cd5c3cf9ae220c78 |
| --- /dev/null |
| +++ b/ui/file_manager/file_manager/background/js/global_metadata_cache.js |
| @@ -0,0 +1,36 @@ |
| +// Copyright 2017 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. |
| + |
| + |
| +/** |
| + * Maximum number of entries whose metadata can be cached. |
| + * @const {number} |
| + * @private |
| + */ |
| +var MAX_CACHED_METADATA = 10000; |
|
fukino
2017/06/01 03:37:46
Name it as MAX_CACHED_METADATA_ as it is private.
tetsui
2017/06/01 04:46:58
Done.
|
| + |
| +/** |
| + * @private {!LRUCache<!Metadata>} |
| + */ |
| +var metadataCache = new LRUCache(MAX_CACHED_METADATA); |
|
fukino
2017/06/01 03:37:46
ditto
tetsui
2017/06/01 04:46:58
Done.
|
| + |
| +/** |
| + * Returns metadata for the given FileEntry. Uses cached metadata if possible. |
| + * |
| + * @param {!FileEntry} entry |
| + * @return {!Promise.<!Metadata>} |
| + */ |
| +function getEntryMetadata(entry) { |
| + var entryURL = entry.toURL(); |
| + if (metadataCache.hasKey(entryURL)) { |
| + return Promise.resolve(metadataCache.get(entryURL)); |
| + } else { |
| + return new Promise(function(resolve, reject) { |
| + entry.getMetadata(function(metadata) { |
| + metadataCache.put(entryURL, metadata); |
| + resolve(metadata); |
| + }, reject); |
| + }); |
| + } |
| +}; |