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 |