Index: chrome/renderer/resources/extensions/schema_generated_bindings.js |
diff --git a/chrome/renderer/resources/extensions/schema_generated_bindings.js b/chrome/renderer/resources/extensions/schema_generated_bindings.js |
index 6f085b711f7b7aa8ec7a3055aeec11105e778c62..d79b77a4ff9c72018fb4c45e120ce8219a598ff0 100644 |
--- a/chrome/renderer/resources/extensions/schema_generated_bindings.js |
+++ b/chrome/renderer/resources/extensions/schema_generated_bindings.js |
@@ -24,6 +24,7 @@ var chrome = chrome || {}; |
native function GetLocalFileSystem(name, path); |
native function DecodeJPEG(jpegImage); |
native function CreateBlob(filePath); |
+ native function SendResponseAck(requestId); |
var chromeHidden = GetChromeHidden(); |
@@ -178,6 +179,7 @@ var chrome = chrome || {}; |
var nativeFunction = opt_args.nativeFunction || StartRequest; |
var requestId = GetNextRequestId(); |
+ request.id = requestId; |
requests[requestId] = request; |
var hasCallback = |
(request.callback || opt_args.customCallback) ? true : false; |
@@ -795,8 +797,11 @@ var chrome = chrome || {}; |
if (request.callback) |
request.callback(CreateBlob(path, size)); |
- |
request.callback = null; |
+ |
+ // Notify the browser. Now that the blob is referenced from JavaScript, |
+ // the browser can drop its reference to it. |
+ SendResponseAck(request.id); |
}; |
apiFunctions["fileBrowserPrivate.requestLocalFileSystem"].customCallback = |