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 |
deleted file mode 100644 |
index 0e7583f69258149e2f5413a54f04fbf3069f3238..0000000000000000000000000000000000000000 |
--- a/ui/file_manager/file_manager/foreground/js/metadata/file_system_metadata.js |
+++ /dev/null |
@@ -1,188 +0,0 @@ |
-// 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 {!VolumeManagerCommon.VolumeInfoProvider} volumeManager |
- * @constructor |
- * @struct |
- * @extends {CachedMetadataProvider} |
- */ |
-function FileSystemMetadata(volumeManager) { |
- CachedMetadataProvider.call( |
- this, |
- new MultiMetadataProvider( |
- new FileSystemMetadataProvider(), |
- new ExternalMetadataProvider(), |
- new ContentMetadataProvider(), |
- volumeManager)); |
-}; |
- |
-FileSystemMetadata.prototype.__proto__ = CachedMetadataProvider.prototype; |
- |
-/** |
- * @param {!FileSystemMetadataProvider} fileSystemMetadataProvider |
- * @param {!ExternalMetadataProvider} externalMetadataProvider |
- * @param {!ContentMetadataProvider} contentMetadataProvider |
- * @param {!VolumeManagerCommon.VolumeInfoProvider} volumeManager |
- * @constructor |
- * @extends {NewMetadataProvider} |
- * @struct |
- */ |
-function MultiMetadataProvider( |
- fileSystemMetadataProvider, |
- externalMetadataProvider, |
- contentMetadataProvider, |
- volumeManager) { |
- NewMetadataProvider.call( |
- this, |
- FileSystemMetadataProvider.PROPERTY_NAMES.concat( |
- ExternalMetadataProvider.PROPERTY_NAMES).concat( |
- ContentMetadataProvider.PROPERTY_NAMES)); |
- |
- /** |
- * @private {!FileSystemMetadataProvider} |
- * @const |
- */ |
- this.fileSystemMetadataProvider_ = fileSystemMetadataProvider; |
- |
- /** |
- * @private {!ExternalMetadataProvider} |
- * @const |
- */ |
- this.externalMetadataProvider_ = externalMetadataProvider; |
- |
- /** |
- * @private {!ContentMetadataProvider} |
- * @const |
- */ |
- this.contentMetadataProvider_ = contentMetadataProvider; |
- |
- /** |
- * @private {!VolumeManagerCommon.VolumeInfoProvider} |
- * @const |
- */ |
- this.volumeManager_ = volumeManager; |
-} |
- |
-MultiMetadataProvider.prototype.__proto__ = NewMetadataProvider.prototype; |
- |
-/** |
- * Obtains metadata for entries. |
- * @param {!Array<!MetadataRequest>} requests |
- * @return {!Promise<!Array<!MetadataItem>>} |
- */ |
-MultiMetadataProvider.prototype.get = function(requests) { |
- var fileSystemRequests = []; |
- var externalRequests = []; |
- var contentRequests = []; |
- var fallbackContentRequests = []; |
- requests.forEach(function(request) { |
- // Group property names. |
- var fileSystemPropertyNames = []; |
- var externalPropertyNames = []; |
- var contentPropertyNames = []; |
- var fallbackContentPropertyNames = []; |
- for (var i = 0; i < request.names.length; i++) { |
- var name = request.names[i]; |
- var isFileSystemProperty = |
- FileSystemMetadataProvider.PROPERTY_NAMES.indexOf(name) !== -1; |
- var isExternalProperty = |
- ExternalMetadataProvider.PROPERTY_NAMES.indexOf(name) !== -1; |
- var isContentProperty = |
- ContentMetadataProvider.PROPERTY_NAMES.indexOf(name) !== -1; |
- assert(isFileSystemProperty || isExternalProperty || isContentProperty); |
- assert(!(isFileSystemProperty && isContentProperty)); |
- // If the property can be obtained both from ExternalProvider and from |
- // ContentProvider, we can obtain the property from ExternalProvider |
- // without fetching file content. On the other hand, the values from |
- // ExternalProvider may be out of sync if the file is 'dirty'. Thus we |
- // fallback to ContentProvider if the file is dirty. See below. |
- if (isExternalProperty && isContentProperty) { |
- externalPropertyNames.push(name); |
- fallbackContentPropertyNames.push(name); |
- continue; |
- } |
- if (isFileSystemProperty) |
- fileSystemPropertyNames.push(name); |
- if (isExternalProperty) |
- externalPropertyNames.push(name); |
- if (isContentProperty) |
- contentPropertyNames.push(name); |
- } |
- var volumeInfo = this.volumeManager_.getVolumeInfo(request.entry); |
- var addRequests = function(list, names) { |
- if (names.length) |
- list.push(new MetadataRequest(request.entry, names)); |
- }; |
- if (volumeInfo && |
- (volumeInfo.volumeType === VolumeManagerCommon.VolumeType.DRIVE || |
- volumeInfo.volumeType === VolumeManagerCommon.VolumeType.PROVIDED)) { |
- if (fallbackContentPropertyNames.length && |
- externalPropertyNames.indexOf('dirty') === -1) { |
- externalPropertyNames.push('dirty'); |
- } |
- addRequests(externalRequests, externalPropertyNames); |
- addRequests(contentRequests, contentPropertyNames); |
- addRequests(fallbackContentRequests, fallbackContentPropertyNames); |
- } else { |
- addRequests(fileSystemRequests, fileSystemPropertyNames); |
- addRequests( |
- contentRequests, |
- contentPropertyNames.concat(fallbackContentPropertyNames)); |
- } |
- }.bind(this)); |
- |
- var get = function(provider, inRequests) { |
- return provider.get(inRequests).then(function(results) { |
- return { |
- requests: inRequests, |
- results: results |
- }; |
- }); |
- }; |
- var fileSystemPromise = get( |
- this.fileSystemMetadataProvider_, fileSystemRequests); |
- var externalPromise = get(this.externalMetadataProvider_, externalRequests); |
- var contentPromise = get(this.contentMetadataProvider_, contentRequests); |
- var fallbackContentPromise = externalPromise.then( |
- function(requestsAndResults) { |
- var requests = requestsAndResults.requests; |
- var results = requestsAndResults.results; |
- var dirtyMap = []; |
- for (var i = 0; i < results.length; i++) { |
- dirtyMap[requests[i].entry.toURL()] = results[i].dirty; |
- } |
- return get( |
- this.contentMetadataProvider_, |
- fallbackContentRequests.filter( |
- function(request) { |
- return dirtyMap[request.entry.toURL()]; |
- })); |
- }.bind(this)); |
- |
- // Merge results. |
- return Promise.all([ |
- fileSystemPromise, |
- externalPromise, |
- contentPromise, |
- fallbackContentPromise |
- ]).then(function(resultsList) { |
- var integratedResults = {}; |
- for (var i = 0; i < resultsList.length; i++) { |
- var inRequests = resultsList[i].requests; |
- var results = resultsList[i].results; |
- assert(inRequests.length === results.length); |
- for (var j = 0; j < results.length; j++) { |
- var url = inRequests[j].entry.toURL(); |
- integratedResults[url] = integratedResults[url] || new MetadataItem(); |
- for (var name in results[j]) { |
- integratedResults[url][name] = results[j][name]; |
- } |
- } |
- } |
- return requests.map(function(request) { |
- return integratedResults[request.entry.toURL()] || new MetadataItem(); |
- }); |
- }); |
-}; |