Index: chrome/renderer/resources/extensions/media_galleries_custom_bindings.js |
diff --git a/chrome/renderer/resources/extensions/media_galleries_custom_bindings.js b/chrome/renderer/resources/extensions/media_galleries_custom_bindings.js |
index f838086848c1b555f6a5e490288202d191f99a08..841cefa387f2300aad1ef2795b35d3a63213699f 100644 |
--- a/chrome/renderer/resources/extensions/media_galleries_custom_bindings.js |
+++ b/chrome/renderer/resources/extensions/media_galleries_custom_bindings.js |
@@ -8,6 +8,7 @@ var binding = require('binding').Binding.create('mediaGalleries'); |
var blobNatives = requireNative('blob_natives'); |
var mediaGalleriesNatives = requireNative('mediaGalleries'); |
+var mediaFilesMetadata = {}; |
tommycli
2014/09/29 21:50:00
This makes it sound like you're storing the metada
Oren Blasberg
2014/09/29 22:05:48
Done.
|
var mediaGalleriesMetadata = {}; |
function createFileSystemObjectsAndUpdateMetadata(response) { |
@@ -101,6 +102,10 @@ binding.registerCustomHook(function(bindingsAPI, extensionId) { |
apiFunctions.setUpdateArgumentsPostValidate('getMetadata', |
function(mediaFile, options, callback) { |
var blobUuid = blobNatives.GetBlobUuid(mediaFile) |
+ // Store the blob in a global object to keep its refcount nonzero -- this |
tommycli
2014/09/29 21:50:00
Perfect comment :)
Oren Blasberg
2014/09/29 22:05:48
Thanks Tommy!
|
+ // prevents the object from being garbage collected before any metadata |
+ // parsing gets to occur (see crbug.com/415792). |
+ mediaFilesMetadata[blobUuid] = mediaFile; |
return [blobUuid, options, callback]; |
}); |
@@ -118,6 +123,9 @@ binding.registerCustomHook(function(bindingsAPI, extensionId) { |
if (request.callback) |
request.callback(response.metadata); |
request.callback = null; |
+ |
+ var uuid = request.args[0]; |
tommycli
2014/09/29 21:50:00
Maybe a short one-line comment since this is not s
Oren Blasberg
2014/09/29 22:05:48
What sort of comment would be reasonable here? Rem
tommycli
2014/09/29 22:09:25
It's the uuid because of line 109: return [blobUui
|
+ delete mediaFilesMetadata[uuid]; |
}); |
}); |