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

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

Issue 895873002: Files.app: Add ExternalMetadataProvider class. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix test. Created 5 years, 11 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/external_metadata_provider.js
diff --git a/ui/file_manager/file_manager/foreground/js/metadata/external_metadata_provider.js b/ui/file_manager/file_manager/foreground/js/metadata/external_metadata_provider.js
new file mode 100644
index 0000000000000000000000000000000000000000..f2473b5129dc28de826b3a55ff93514d17619061
--- /dev/null
+++ b/ui/file_manager/file_manager/foreground/js/metadata/external_metadata_provider.js
@@ -0,0 +1,111 @@
+// 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.
+
+/**
+ * @typedef {{
+ * size: number,
+ * shared: (boolean|undefined),
+ * modificationTime: Date,
+ * thumbnailUrl: (string|undefined),
+ * externalFileUrl: (string|undefined),
+ * imageWidth: (number|undefined),
+ * imageHeight: (number|undefined),
+ * imageRotation: (number|undefined),
+ * pinned: (boolean|undefined),
+ * present: (boolean|undefined),
+ * hosted: (boolean|undefined),
+ * dirty: (boolean|undefined),
+ * availableOffline: (boolean|undefined),
+ * availableWhenMetered: (boolean|undefined),
+ * customIconUrl: string,
+ * contentMimeType: string,
+ * sharedWithMe: (boolean|undefined)
+ * }}
+ */
+var ExternalMetadata;
+
+/**
+ * Metadata provider for FileEntry#getMetadata.
+ *
+ * @param {!MetadataProviderCache} cache
+ * @constructor
+ * @extends {NewMetadataProvider<!ExternalMetadata>}
+ * @struct
+ */
+function ExternalMetadataProvider(cache) {
+ NewMetadataProvider.call(this, cache, [
+ 'availableOffline',
+ 'availableWhenMetered',
+ 'contentMimeType',
+ 'customIconUrl',
+ 'dirty',
+ 'externalFileUrl',
+ 'hosted',
+ 'imageHeight',
+ 'imageRotation',
+ 'imageWidth',
+ 'modificationTime',
+ 'pinned',
+ 'present',
+ 'shared',
+ 'sharedWithMe',
+ 'size',
+ 'thumbnailUrl'
+ ]);
+}
+
+ExternalMetadataProvider.prototype.__proto__ = NewMetadataProvider.prototype;
+
+/**
+ * @override
+ */
+ExternalMetadataProvider.prototype.getImpl = function(requests) {
+ return new Promise(function(fulfill, reject) {
+ var urls = [];
+ for (var i = 0; i < requests.length; i++) {
+ urls.push(requests[i].entry.toURL());
+ }
+ chrome.fileManagerPrivate.getEntryProperties(
+ urls,
+ function(results) {
+ if (!chrome.runtime.lastError)
+ fulfill(this.convertResults_(requests, results));
+ else
+ reject(chrome.runtime.lastError);
+ }.bind(this));
+ }.bind(this));
+};
+
+/**
+ * @param {!Array<!MetadataRequest>} requests
+ * @param {!Array<!EntryProperties>} propertiesList
+ * @return {!Array<!ExternalMetadata>}
+ */
+ExternalMetadataProvider.prototype.convertResults_ =
+ function(requests, propertiesList) {
+ var results = [];
+ for (var i = 0; i < propertiesList.length; i++) {
+ var properties = propertiesList[i];
+ results.push({
+ availableOffline: properties.isAvailableOffline,
+ availableWhenMetered: properties.isAvailableWhenMetered,
+ contentMimeType: properties.contentMimeType || '',
+ customIconUrl: properties.customIconUrl || '',
+ dirty: properties.isDirty,
+ externalFileUrl: properties.externalFileUrl,
+ hosted: properties.isHosted,
+ imageHeight: properties.imageHeight,
+ imageRotation: properties.imageRotation,
+ imageWidth: properties.imageWidth,
+ modificationTime: new Date(properties.lastModifiedTime),
+ pinned: properties.isPinned,
+ present: properties.isPresent,
+ shared: properties.shared,
+ sharedWithMe: properties.sharedWithMe,
+ size: requests[i].entry.isFile ? (properties.fileSize || 0) : -1,
+ thumbnailUrl: properties.thumbnailUrl
+ });
+ }
+ return results;
+};

Powered by Google App Engine
This is Rietveld 408576698