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