Chromium Code Reviews| 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 |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..510fddc69572ade1db52f06f9e4f2779a7c95064 |
| --- /dev/null |
| +++ b/chrome/renderer/resources/extensions/file_system_provider_custom_bindings.js |
| @@ -0,0 +1,49 @@ |
| +// Copyright 2013 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +// Custom binding for the fileSystemProvider API. |
| + |
| +var binding = require('binding').Binding.create('fileSystemProvider'); |
| +var fileSystemProviderNatives = requireNative('file_system_provider'); |
| +var GetDOMError = fileSystemProviderNatives.GetDOMError; |
| + |
| +binding.registerCustomHook(function(bindingsAPI) { |
| + var apiFunctions = bindingsAPI.apiFunctions; |
| + |
| + apiFunctions.setUpdateArgumentsPostValidate( |
| + 'mount', |
| + function(displayName, successCallback, errorCallback) { |
| + // Piggyback the error callback onto the success callback, |
| + // so we can use the error callback later. |
|
satorux1
2013/11/07 07:37:02
kalman: I took another look at other APIs, but cou
not at google - send to devlin
2013/11/07 15:58:05
I think the piggybacking trick is fine for now. Wh
satorux1
2013/11/08 02:25:54
Thanks. Promise-based APIs sound good. Added trail
|
| + successCallback.errorCallback = errorCallback; |
| + return [displayName, successCallback]; |
| + }); |
| + |
| + apiFunctions.setCustomCallback( |
| + 'mount', |
| + function(name, request, response) { |
| + var fileSystemId = null; |
| + var domError = null; |
| + if (request.callback && response) { |
| + fileSystemId = response[0]; |
| + // DOMError is present only if mount() failed. |
| + if (response[1]) { |
| + // Convert a Dictionary to a DOMError. |
| + domError = GetDOMError(response[1].name, response[1].message); |
| + response.length = 1; |
| + } |
| + |
| + var successCallback = request.callback; |
| + var errorCallback = request.callback.errorCallback; |
| + delete request.callback; |
| + |
| + if (domError) |
| + errorCallback(domError); |
| + else |
| + successCallback(fileSystemId); |
| + } |
| + }); |
| +}); |
| + |
| +exports.binding = binding.generate(); |