Index: chrome/renderer/resources/extensions/file_system_provider_custom_bindings.js |
diff --git a/chrome/renderer/resources/extensions/file_system_provider_custom_bindings.js b/chrome/renderer/resources/extensions/file_system_provider_custom_bindings.js |
index b7e2ea8548b001aa2dc990fa4c4d51137ad5ba61..b89613808ab7431511ec8dc49f9163a50308f710 100644 |
--- a/chrome/renderer/resources/extensions/file_system_provider_custom_bindings.js |
+++ b/chrome/renderer/resources/extensions/file_system_provider_custom_bindings.js |
@@ -5,6 +5,9 @@ |
// Custom binding for the fileSystemProvider API. |
var binding = require('binding').Binding.create('fileSystemProvider'); |
+var fileSystemProviderInternal = |
+ require('binding').Binding.create('fileSystemProviderInternal').generate(); |
+var eventBindings = require('event_bindings'); |
var fileSystemNatives = requireNative('file_system_natives'); |
var GetDOMError = fileSystemNatives.GetDOMError; |
@@ -44,6 +47,54 @@ binding.registerCustomHook(function(bindingsAPI) { |
successCallback(fileSystemId); |
} |
}); |
+ |
+ apiFunctions.setUpdateArgumentsPostValidate( |
+ 'unmount', |
+ function(fileSystemId, successCallback, errorCallback) { |
+ // Piggyback the error callback onto the success callback, |
+ // so we can use the error callback later. |
+ successCallback.errorCallback_ = errorCallback; |
+ return [fileSystemId, successCallback]; |
+ }); |
+ |
+ apiFunctions.setCustomCallback( |
+ 'unmount', |
+ function(name, request, response) { |
+ var domError = null; |
+ if (request.callback) { |
+ // DOMError is present only if mount() failed. |
+ if (response && response[0]) { |
+ // Convert a Dictionary to a DOMError. |
+ domError = GetDOMError(response[0].name, response[0].message); |
+ response.length = 1; |
+ } |
+ |
+ var successCallback = request.callback; |
+ var errorCallback = request.callback.errorCallback_; |
+ delete request.callback; |
+ |
+ if (domError) |
+ errorCallback(domError); |
+ else |
+ successCallback(); |
+ } |
+ }); |
}); |
+eventBindings.registerArgumentMassager( |
+ 'fileSystemProvider.onUnmountRequested', |
+ function(args, dispatch) { |
+ var fileSystemId = args[0]; |
+ var requestId = args[1]; |
+ var onSuccessCallback = function() { |
+ fileSystemProviderInternal.unmountRequestedSuccess( |
+ fileSystemId, requestId); |
+ }; |
+ var onErrorCallback = function(error) { |
+ fileSystemProviderInternal.unmountRequestedError( |
+ fileSystemId, requestId, error); |
+ } |
+ dispatch([fileSystemId, onSuccessCallback, onErrorCallback]); |
+ }); |
+ |
exports.binding = binding.generate(); |