Commit 6cb788d3 authored by François Degros's avatar François Degros Committed by Commit Bot

[Files app] ES6 class for file_system_metadata_provider.js

Bug: 778674
Change-Id: I26adb7ae525b1965280b60479095de3e8a32562e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1647640
Commit-Queue: François Degros <fdegros@chromium.org>
Commit-Queue: Luciano Pacheco <lucmult@chromium.org>
Auto-Submit: François Degros <fdegros@chromium.org>
Reviewed-by: default avatarLuciano Pacheco <lucmult@chromium.org>
Cr-Commit-Position: refs/heads/master@{#666613}
parent e965a7f1
...@@ -4,50 +4,43 @@ ...@@ -4,50 +4,43 @@
/** /**
* Metadata provider for FileEntry#getMetadata. * Metadata provider for FileEntry#getMetadata.
* * @final
* @constructor
* @extends {MetadataProvider}
* @struct
*/ */
function FileSystemMetadataProvider() { class FileSystemMetadataProvider extends MetadataProvider {
MetadataProvider.call(this, FileSystemMetadataProvider.PROPERTY_NAMES); constructor() {
super(FileSystemMetadataProvider.PROPERTY_NAMES);
}
/** @override */
get(requests) {
if (!requests.length) {
return Promise.resolve([]);
}
return Promise.all(requests.map(request => {
return new Promise((fulfill, reject) => {
request.entry.getMetadata(fulfill, reject);
})
.then(
result => {
const item = new MetadataItem();
item.modificationTime = result.modificationTime;
item.size = request.entry.isDirectory ? -1 : result.size;
item.present = true;
item.availableOffline = true;
return item;
},
error => {
// Can't use console.error because some tests hit this line and
// console.error causes them to fail because of JSErrorCount.
// This error is an acceptable condition.
console.warn(
'getMetadata failure for: ' + request.entry.toURL(), error);
return new MetadataItem();
});
}));
}
} }
/** /** @const {!Array<string>} */
* @const {!Array<string>}
*/
FileSystemMetadataProvider.PROPERTY_NAMES = FileSystemMetadataProvider.PROPERTY_NAMES =
['modificationTime', 'size', 'present', 'availableOffline']; ['modificationTime', 'size', 'present', 'availableOffline'];
FileSystemMetadataProvider.prototype.__proto__ = MetadataProvider.prototype;
/**
* @override
*/
FileSystemMetadataProvider.prototype.get = requests => {
if (!requests.length) {
return Promise.resolve([]);
}
return Promise.all(requests.map(request => {
return new Promise((fulfill, reject) => {
request.entry.getMetadata(fulfill, reject);
})
.then(
result => {
const item = new MetadataItem();
item.modificationTime = result.modificationTime;
item.size = request.entry.isDirectory ? -1 : result.size;
item.present = true;
item.availableOffline = true;
return item;
},
error => {
// Can't use console.error because some tests hit this line and
// console.error causes them to fail because of JSErrorCount. This
// error is an acceptable condition.
console.warn(
'getMetadata failure for: ' + request.entry.toURL(), error);
return new MetadataItem();
});
}));
};
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment