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.
TBR=hirono@chromium.org

Review URL: https://codereview.chromium.org/1144393007

Cr-Commit-Position: refs/heads/master@{#332532}
(cherry picked from commit 60cd0f79fd0f3065c2f5a1f44e19d99a09fd8888)

Review URL: https://codereview.chromium.org/1155453006

Cr-Commit-Position: refs/branch-heads/2403@{#197}
Cr-Branched-From: f54b8097a9c45ed4ad308133d49f05325d6c5070-refs/heads/master@{#330231}
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;