Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(792)

Unified Diff: ui/file_manager/file_manager/foreground/js/metadata/file_system_metadata_model.js

Issue 890423004: Files.app: Add FileSystemMetadataModel. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/file_manager/file_manager/foreground/js/metadata/file_system_metadata_model.js
diff --git a/ui/file_manager/file_manager/foreground/js/metadata/file_system_metadata_model.js b/ui/file_manager/file_manager/foreground/js/metadata/file_system_metadata_model.js
new file mode 100644
index 0000000000000000000000000000000000000000..06302fe39bc7e2834cc4ce94ac53988965a774d8
--- /dev/null
+++ b/ui/file_manager/file_manager/foreground/js/metadata/file_system_metadata_model.js
@@ -0,0 +1,92 @@
+// Copyright 2015 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.
+
+/**
+ * @param {!MetadataProviderCache} cache
+ * @param {!FileSystemMetadataProvider} fileSystemMetadataProvider
+ * @param {!ExternalMetadataProvider} externalMetadataProvider
+ * @param {!VolumeManagerWrapper} volumeManager
+ * @constructor
+ * @struct
+ */
+function FileSystemMetadataModel(
+ cache,
+ fileSystemMetadataProvider,
+ externalMetadataProvider,
+ volumeManager) {
+ /**
+ * @private {!MetadataProviderCache}
+ * @const
+ */
+ this.cache_ = cache;
+
+ /**
+ * @private {!FileSystemMetadataProvider}
+ * @const
+ */
+ this.fileSystemMetadataProvider_ = fileSystemMetadataProvider;
+
+ /**
+ * @private {!ExternalMetadataProvider}
+ * @const
+ */
+ this.externalMetadataProvider_ = externalMetadataProvider;
+
+ /**
+ * @private {!VolumeManagerWrapper}
+ * @const
+ */
+ this.volumeManager_ = volumeManager;
+}
+
+/**
+ * Obtains metadata for entries.
+ * @param {!Array<!FileEntry>} entries Entries.
+ * @param {!Array<string>} names Metadata property names to be obtained.
+ * @return {!Promise<!Array<!ExternalMetadata>>}
+ */
+FileSystemMetadataModel.prototype.get = function(entries, names) {
+ var localEntries = [];
+ var localEntryIndexes = [];
+ var externalEntries = [];
+ var externalEntryIndexes = [];
+ for (var i = 0; i < entries.length; i++) {
+ var volumeInfo = this.volumeManager_.getVolumeInfo(entries[i]);
+ if (volumeInfo &&
+ (volumeInfo.volumeType === VolumeManagerCommon.VolumeType.DRIVE ||
+ volumeInfo.volumeType === VolumeManagerCommon.VolumeType.PROVIDED)) {
+ externalEntries.push(entries[i]);
+ externalEntryIndexes.push(i);
+ } else {
+ localEntries.push(entries[i]);
+ localEntryIndexes.push(i);
+ }
+ }
+
+ return Promise.all([
+ this.fileSystemMetadataProvider_.get(localEntries, names),
+ this.externalMetadataProvider_.get(externalEntries, names)
+ ]).then(function(results) {
+ var integratedResults = [];
+ var localResults = results[0];
+ for (var i = 0; i < localResults.length; i++) {
+ integratedResults[localEntryIndexes[i]] = localResults[i];
+ }
+ var externalResults = results[1];
+ for (var i = 0; i < externalResults.length; i++) {
+ integratedResults[externalEntryIndexes[i]] = externalResults[i];
+ }
+ return integratedResults;
+ });
+};
+
+/**
+ * Obtains metadata cache for entries.
+ * @param {!Array<!FileEntry>} entries Entries.
+ * @param {!Array<string>} names Metadata property names to be obtained.
+ * @return {!Array<!FileSystemMetadata>}
+ */
+FileSystemMetadataModel.prototype.getCache = function(entries, names) {
+ return this.cache_.get(entries, names);
+};

Powered by Google App Engine
This is Rietveld 408576698