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

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

Issue 932343003: Files.app: Move ContentMetadataProvider from ThumbnailModel to FileSystemMetadata. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed. 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.js
diff --git a/ui/file_manager/file_manager/foreground/js/metadata/file_system_metadata.js b/ui/file_manager/file_manager/foreground/js/metadata/file_system_metadata.js
index de312ad0c7d1874553eb5387af452af1dcbd07ec..ec3e05a3775b3bb014e7b38ed1335619972c829e 100644
--- a/ui/file_manager/file_manager/foreground/js/metadata/file_system_metadata.js
+++ b/ui/file_manager/file_manager/foreground/js/metadata/file_system_metadata.js
@@ -6,6 +6,7 @@
* @param {!MetadataProviderCache} cache
* @param {!FileSystemMetadataProvider} fileSystemMetadataProvider
* @param {!ExternalMetadataProvider} externalMetadataProvider
+ * @param {!ContentMetadataProvider} contentMetadataProvider
* @param {!VolumeManagerWrapper} volumeManager
* @constructor
* @struct
@@ -14,6 +15,7 @@ function FileSystemMetadata(
cache,
fileSystemMetadataProvider,
externalMetadataProvider,
+ contentMetadataProvider,
volumeManager) {
/**
* @private {!MetadataProviderCache}
@@ -34,6 +36,12 @@ function FileSystemMetadata(
this.externalMetadataProvider_ = externalMetadataProvider;
/**
+ * @private {!ContentMetadataProvider}
+ * @const
+ */
+ this.contentMetadataProvider_ = contentMetadataProvider;
+
+ /**
* @private {!VolumeManagerWrapper}
* @const
*/
@@ -41,6 +49,20 @@ function FileSystemMetadata(
}
/**
+ * @param {!MetadataProviderCache} cache
+ * @param {!VolumeManagerWrapper} volumeManager
+ * @return {!FileSystemMetadata}
+ */
+FileSystemMetadata.create = function(cache, volumeManager) {
+ return new FileSystemMetadata(
+ cache,
+ new FileSystemMetadataProvider(cache),
+ new ExternalMetadataProvider(cache),
+ new ContentMetadataProvider(cache),
+ volumeManager);
+};
+
+/**
* Obtains metadata for entries.
* @param {!Array<!Entry>} entries Entries.
* @param {!Array<string>} names Metadata property names to be obtained.
@@ -48,41 +70,57 @@ function FileSystemMetadata(
*/
FileSystemMetadata.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);
}
}
- // Correct property names that are valid for fileSystemMetadataProvider.
- var fileSystemPropertyNames = names.filter(function(name) {
- return FileSystemMetadataProvider.PROPERTY_NAMES.indexOf(name) !== -1;
- });
-
+ var fileSystemPropertyNames = [];
+ var externalPropertyNames = [];
+ var contentPropertyNames = [];
+ for (var i = 0; i < names.length; i++) {
+ var validName = false;
+ if (FileSystemMetadataProvider.PROPERTY_NAMES.indexOf(names[i]) !== -1) {
+ fileSystemPropertyNames.push(names[i]);
+ validName = true;
+ }
+ if (ExternalMetadataProvider.PROPERTY_NAMES.indexOf(names[i]) !== -1) {
+ externalPropertyNames.push(names[i]);
+ validName = true;
+ }
+ if (ContentMetadataProvider.PROPERTY_NAMES.indexOf(names[i]) !== -1) {
+ assert(!validName);
+ contentPropertyNames.push(names[i]);
+ validName = true;
+ }
+ assert(validName);
+ }
return Promise.all([
this.fileSystemMetadataProvider_.get(localEntries, fileSystemPropertyNames),
- this.externalMetadataProvider_.get(externalEntries, names)
+ this.externalMetadataProvider_.get(externalEntries, externalPropertyNames),
+ this.contentMetadataProvider_.get(entries, contentPropertyNames)
]).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];
+ var integratedResults = {};
+ for (var i = 0; i < 3; i++) {
+ var entryList = [localEntries, externalEntries, entries][i];
+ for (var j = 0; j < entryList.length; j++) {
+ var url = entryList[j].toURL();
+ integratedResults[url] = integratedResults[url] || new MetadataItem();
+ for (var name in results[i][j]) {
+ integratedResults[url][name] = results[i][j][name];
+ }
+ }
}
- return integratedResults;
+ return entries.map(function(entry) {
+ return integratedResults[entry.toURL()];
+ });
});
};

Powered by Google App Engine
This is Rietveld 408576698