| 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();
 | 
| 
 |