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

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

Issue 971723002: Files.app: Rename FileSystemMetadata with MetadataModel. (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
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();
- });
- });
-};

Powered by Google App Engine
This is Rietveld 408576698