| 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);
|
| +};
|
|
|