Files.app: Store thumbnailUrl from external metadata provider only when it is requested or gotten.
Storing 'undefined' value when the thumbnail url is not requested will result
in missing thumbnails on FSP volumes.
This CL fixes the issue by storing metadata only when it is requested or gotten
without request.
We should apply the same treatment for all properties, but this CL do it only
for thumbnailUrl to minimize the impact and prepare for merge.
For more context, please see the comments in http://crrev.com/1158463004
BUG=489595, 494910
TEST=Install TED talks extension, switch to grid view, and check thumbnails exist.
Review URL: https://codereview.chromium.org/1144393007
Cr-Commit-Position: refs/heads/master@{#332532}
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
index 30494454..5b83620 100644
--- 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
@@ -62,7 +62,7 @@
Object.keys(nameMap),
function(results) {
if (!chrome.runtime.lastError)
- fulfill(this.convertResults_(requests, results));
+ fulfill(this.convertResults_(requests, nameMap, results));
else
fulfill(requests.map(function() { return new MetadataItem(); }));
}.bind(this));
@@ -71,11 +71,12 @@
/**
* @param {!Array<!MetadataRequest>} requests
+ * @param {!Object<boolean>} nameMap
* @param {!Array<!EntryProperties>} propertiesList
* @return {!Array<!MetadataItem>}
*/
ExternalMetadataProvider.prototype.convertResults_ =
- function(requests, propertiesList) {
+ function(requests, nameMap, propertiesList) {
var results = [];
for (var i = 0; i < propertiesList.length; i++) {
var properties = propertiesList[i];
@@ -97,7 +98,8 @@
item.shared = properties.shared;
item.sharedWithMe = properties.sharedWithMe;
item.size = requests[i].entry.isFile ? (properties.size || 0) : -1;
- item.thumbnailUrl = properties.thumbnailUrl;
+ if (properties.thumbnailUrl || nameMap['thumbnailUrl'])
+ item.thumbnailUrl = properties.thumbnailUrl;
results.push(item);
}
return results;