| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Custom binding for the fileSystemProvider API. | 5 // Custom binding for the fileSystemProvider API. |
| 6 | 6 |
| 7 var binding = require('binding').Binding.create('fileSystemProvider'); | 7 var binding = require('binding').Binding.create('fileSystemProvider'); |
| 8 var fileSystemProviderInternal = | 8 var fileSystemProviderInternal = |
| 9 require('binding').Binding.create('fileSystemProviderInternal').generate(); | 9 require('binding').Binding.create('fileSystemProviderInternal').generate(); |
| 10 var eventBindings = require('event_bindings'); | 10 var eventBindings = require('event_bindings'); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 37 modificationTime: annotateDate(metadata.modificationTime) | 37 modificationTime: annotateDate(metadata.modificationTime) |
| 38 }; | 38 }; |
| 39 return result; | 39 return result; |
| 40 } | 40 } |
| 41 | 41 |
| 42 binding.registerCustomHook(function(bindingsAPI) { | 42 binding.registerCustomHook(function(bindingsAPI) { |
| 43 var apiFunctions = bindingsAPI.apiFunctions; | 43 var apiFunctions = bindingsAPI.apiFunctions; |
| 44 | 44 |
| 45 apiFunctions.setUpdateArgumentsPostValidate( | 45 apiFunctions.setUpdateArgumentsPostValidate( |
| 46 'mount', | 46 'mount', |
| 47 function(fileSystemId, displayName, successCallback, errorCallback) { | 47 function(options, successCallback, errorCallback) { |
| 48 // Piggyback the error callback onto the success callback, | 48 // Piggyback the error callback onto the success callback, |
| 49 // so we can use the error callback later. | 49 // so we can use the error callback later. |
| 50 successCallback.errorCallback_ = errorCallback; | 50 successCallback.errorCallback_ = errorCallback; |
| 51 return [fileSystemId, displayName, successCallback]; | 51 return [options, successCallback]; |
| 52 }); | 52 }); |
| 53 | 53 |
| 54 apiFunctions.setCustomCallback( | 54 apiFunctions.setCustomCallback( |
| 55 'mount', | 55 'mount', |
| 56 function(name, request, response) { | 56 function(name, request, response) { |
| 57 var domError = null; | 57 var domError = null; |
| 58 if (request.callback && response) { | 58 if (request.callback && response) { |
| 59 // DOMError is present only if mount() failed. | 59 // DOMError is present only if mount() failed. |
| 60 if (response[0]) { | 60 if (response[0]) { |
| 61 // Convert a Dictionary to a DOMError. | 61 // Convert a Dictionary to a DOMError. |
| 62 domError = GetDOMError(response[0].name, response[0].message); | 62 domError = GetDOMError(response[0].name, response[0].message); |
| 63 response.length = 1; | 63 response.length = 1; |
| 64 } | 64 } |
| 65 | 65 |
| 66 var successCallback = request.callback; | 66 var successCallback = request.callback; |
| 67 var errorCallback = request.callback.errorCallback_; | 67 var errorCallback = request.callback.errorCallback_; |
| 68 delete request.callback; | 68 delete request.callback; |
| 69 | 69 |
| 70 if (domError) | 70 if (domError) |
| 71 errorCallback(domError); | 71 errorCallback(domError); |
| 72 else | 72 else |
| 73 successCallback(); | 73 successCallback(); |
| 74 } | 74 } |
| 75 }); | 75 }); |
| 76 | 76 |
| 77 apiFunctions.setUpdateArgumentsPostValidate( | 77 apiFunctions.setUpdateArgumentsPostValidate( |
| 78 'unmount', | 78 'unmount', |
| 79 function(fileSystemId, successCallback, errorCallback) { | 79 function(options, successCallback, errorCallback) { |
| 80 // Piggyback the error callback onto the success callback, | 80 // Piggyback the error callback onto the success callback, |
| 81 // so we can use the error callback later. | 81 // so we can use the error callback later. |
| 82 successCallback.errorCallback_ = errorCallback; | 82 successCallback.errorCallback_ = errorCallback; |
| 83 return [fileSystemId, successCallback]; | 83 return [options, successCallback]; |
| 84 }); | 84 }); |
| 85 | 85 |
| 86 apiFunctions.setCustomCallback( | 86 apiFunctions.setCustomCallback( |
| 87 'unmount', | 87 'unmount', |
| 88 function(name, request, response) { | 88 function(name, request, response) { |
| 89 var domError = null; | 89 var domError = null; |
| 90 if (request.callback) { | 90 if (request.callback) { |
| 91 // DOMError is present only if mount() failed. | 91 // DOMError is present only if mount() failed. |
| 92 if (response && response[0]) { | 92 if (response && response[0]) { |
| 93 // Convert a Dictionary to a DOMError. | 93 // Convert a Dictionary to a DOMError. |
| 94 domError = GetDOMError(response[0].name, response[0].message); | 94 domError = GetDOMError(response[0].name, response[0].message); |
| 95 response.length = 1; | 95 response.length = 1; |
| 96 } | 96 } |
| 97 | 97 |
| 98 var successCallback = request.callback; | 98 var successCallback = request.callback; |
| 99 var errorCallback = request.callback.errorCallback_; | 99 var errorCallback = request.callback.errorCallback_; |
| 100 delete request.callback; | 100 delete request.callback; |
| 101 | 101 |
| 102 if (domError) | 102 if (domError) |
| 103 errorCallback(domError); | 103 errorCallback(domError); |
| 104 else | 104 else |
| 105 successCallback(); | 105 successCallback(); |
| 106 } | 106 } |
| 107 }); | 107 }); |
| 108 }); | 108 }); |
| 109 | 109 |
| 110 eventBindings.registerArgumentMassager( | 110 eventBindings.registerArgumentMassager( |
| 111 'fileSystemProvider.onUnmountRequested', | 111 'fileSystemProvider.onUnmountRequested', |
| 112 function(args, dispatch) { | 112 function(args, dispatch) { |
| 113 var fileSystemId = args[0]; | 113 var options = args[0]; |
| 114 var requestId = args[1]; | |
| 115 var onSuccessCallback = function() { | 114 var onSuccessCallback = function() { |
| 116 fileSystemProviderInternal.unmountRequestedSuccess( | 115 fileSystemProviderInternal.unmountRequestedSuccess( |
| 117 fileSystemId, requestId); | 116 options.fileSystemId, options.requestId); |
| 118 }; | 117 }; |
| 119 var onErrorCallback = function(error) { | 118 var onErrorCallback = function(error) { |
| 120 fileSystemProviderInternal.unmountRequestedError( | 119 fileSystemProviderInternal.unmountRequestedError( |
| 121 fileSystemId, requestId, error); | 120 options.fileSystemId, options.requestId, error); |
| 122 } | 121 } |
| 123 dispatch([fileSystemId, onSuccessCallback, onErrorCallback]); | 122 dispatch([options, onSuccessCallback, onErrorCallback]); |
| 124 }); | 123 }); |
| 125 | 124 |
| 126 eventBindings.registerArgumentMassager( | 125 eventBindings.registerArgumentMassager( |
| 127 'fileSystemProvider.onGetMetadataRequested', | 126 'fileSystemProvider.onGetMetadataRequested', |
| 128 function(args, dispatch) { | 127 function(args, dispatch) { |
| 129 var fileSystemId = args[0]; | 128 var options = args[0]; |
| 130 var requestId = args[1]; | |
| 131 var entryPath = args[2]; | |
| 132 var onSuccessCallback = function(metadata) { | 129 var onSuccessCallback = function(metadata) { |
| 133 fileSystemProviderInternal.getMetadataRequestedSuccess( | 130 fileSystemProviderInternal.getMetadataRequestedSuccess( |
| 134 fileSystemId, requestId, annotateMetadata(metadata)); | 131 options.fileSystemId, |
| 132 options.requestId, |
| 133 annotateMetadata(metadata)); |
| 135 }; | 134 }; |
| 136 var onErrorCallback = function(error) { | 135 var onErrorCallback = function(error) { |
| 137 fileSystemProviderInternal.getMetadataRequestedError( | 136 fileSystemProviderInternal.getMetadataRequestedError( |
| 138 fileSystemId, requestId, error); | 137 options.fileSystemId, options.requestId, error); |
| 139 } | 138 } |
| 140 dispatch([fileSystemId, entryPath, onSuccessCallback, onErrorCallback]); | 139 dispatch([options, onSuccessCallback, onErrorCallback]); |
| 141 }); | 140 }); |
| 142 | 141 |
| 143 eventBindings.registerArgumentMassager( | 142 eventBindings.registerArgumentMassager( |
| 144 'fileSystemProvider.onReadDirectoryRequested', | 143 'fileSystemProvider.onReadDirectoryRequested', |
| 145 function(args, dispatch) { | 144 function(args, dispatch) { |
| 146 var fileSystemId = args[0]; | 145 var options = args[0]; |
| 147 var requestId = args[1]; | |
| 148 var directoryPath = args[2]; | |
| 149 var onSuccessCallback = function(entries, hasNext) { | 146 var onSuccessCallback = function(entries, hasNext) { |
| 150 var annotatedEntries = entries.map(annotateMetadata); | 147 var annotatedEntries = entries.map(annotateMetadata); |
| 151 fileSystemProviderInternal.readDirectoryRequestedSuccess( | 148 fileSystemProviderInternal.readDirectoryRequestedSuccess( |
| 152 fileSystemId, requestId, annotatedEntries, hasNext); | 149 options.fileSystemId, options.requestId, annotatedEntries, hasNext); |
| 153 }; | 150 }; |
| 154 var onErrorCallback = function(error) { | 151 var onErrorCallback = function(error) { |
| 155 fileSystemProviderInternal.readDirectoryRequestedError( | 152 fileSystemProviderInternal.readDirectoryRequestedError( |
| 156 fileSystemId, requestId, error); | 153 options.fileSystemId, options.requestId, error); |
| 157 } | 154 } |
| 158 dispatch([ | 155 dispatch([options, onSuccessCallback, onErrorCallback]); |
| 159 fileSystemId, directoryPath, onSuccessCallback, onErrorCallback]); | |
| 160 }); | 156 }); |
| 161 | 157 |
| 162 eventBindings.registerArgumentMassager( | 158 eventBindings.registerArgumentMassager( |
| 163 'fileSystemProvider.onOpenFileRequested', | 159 'fileSystemProvider.onOpenFileRequested', |
| 164 function(args, dispatch) { | 160 function(args, dispatch) { |
| 165 var fileSystemId = args[0]; | 161 var options = args[0]; |
| 166 var requestId = args[1]; | |
| 167 var filePath = args[2]; | |
| 168 var mode = args[3]; | |
| 169 var create = args[4]; | |
| 170 var onSuccessCallback = function() { | 162 var onSuccessCallback = function() { |
| 171 fileSystemProviderInternal.openFileRequestedSuccess( | 163 fileSystemProviderInternal.openFileRequestedSuccess( |
| 172 fileSystemId, requestId); | 164 options.fileSystemId, options.requestId); |
| 173 }; | 165 }; |
| 174 var onErrorCallback = function(error) { | 166 var onErrorCallback = function(error) { |
| 175 fileSystemProviderInternal.openFileRequestedError( | 167 fileSystemProviderInternal.openFileRequestedError( |
| 176 fileSystemId, requestId, error); | 168 options.fileSystemId, options.requestId, error); |
| 177 } | 169 } |
| 178 dispatch([fileSystemId, requestId, filePath, mode, create, | 170 dispatch([options, onSuccessCallback, onErrorCallback]); |
| 179 onSuccessCallback, onErrorCallback]); | |
| 180 }); | 171 }); |
| 181 | 172 |
| 182 eventBindings.registerArgumentMassager( | 173 eventBindings.registerArgumentMassager( |
| 183 'fileSystemProvider.onCloseFileRequested', | 174 'fileSystemProvider.onCloseFileRequested', |
| 184 function(args, dispatch) { | 175 function(args, dispatch) { |
| 185 var fileSystemId = args[0]; | 176 var options = args[0]; |
| 186 var requestId = args[1]; | |
| 187 var openRequestId = args[2]; | |
| 188 var onSuccessCallback = function() { | 177 var onSuccessCallback = function() { |
| 189 fileSystemProviderInternal.closeFileRequestedSuccess( | 178 fileSystemProviderInternal.closeFileRequestedSuccess( |
| 190 fileSystemId, requestId); | 179 options.fileSystemId, options.requestId); |
| 191 }; | 180 }; |
| 192 var onErrorCallback = function(error) { | 181 var onErrorCallback = function(error) { |
| 193 fileSystemProviderInternal.closeFileRequestedError( | 182 fileSystemProviderInternal.closeFileRequestedError( |
| 194 fileSystemId, requestId, error); | 183 options.fileSystemId, options.requestId, error); |
| 195 } | 184 } |
| 196 dispatch([fileSystemId, openRequestId, onSuccessCallback, | 185 dispatch([options, onSuccessCallback, onErrorCallback]); |
| 197 onErrorCallback]); | |
| 198 }); | 186 }); |
| 199 | 187 |
| 200 eventBindings.registerArgumentMassager( | 188 eventBindings.registerArgumentMassager( |
| 201 'fileSystemProvider.onReadFileRequested', | 189 'fileSystemProvider.onReadFileRequested', |
| 202 function(args, dispatch) { | 190 function(args, dispatch) { |
| 203 var fileSystemId = args[0]; | 191 var options = args[0]; |
| 204 var requestId = args[1]; | |
| 205 var openRequestId = args[2]; | |
| 206 var offset = args[3]; | |
| 207 var length = args[4]; | |
| 208 var onSuccessCallback = function(data, hasNext) { | 192 var onSuccessCallback = function(data, hasNext) { |
| 209 fileSystemProviderInternal.readFileRequestedSuccess( | 193 fileSystemProviderInternal.readFileRequestedSuccess( |
| 210 fileSystemId, requestId, data, hasNext); | 194 options.fileSystemId, options.requestId, data, hasNext); |
| 211 }; | 195 }; |
| 212 var onErrorCallback = function(error) { | 196 var onErrorCallback = function(error) { |
| 213 fileSystemProviderInternal.readFileRequestedError( | 197 fileSystemProviderInternal.readFileRequestedError( |
| 214 fileSystemId, requestId, error); | 198 options.fileSystemId, options.requestId, error); |
| 215 } | 199 } |
| 216 dispatch([fileSystemId, openRequestId, offset, length, onSuccessCallback, | 200 dispatch([options, onSuccessCallback, onErrorCallback]); |
| 217 onErrorCallback]); | |
| 218 }); | 201 }); |
| 219 | 202 |
| 220 exports.binding = binding.generate(); | 203 exports.binding = binding.generate(); |
| OLD | NEW |