Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(392)

Side by Side Diff: ui/file_manager/zip_archiver/unpacker/js/request.js

Issue 2804453002: Move files from zip_archiver/unpacker/ to zip_archiver/. (Closed)
Patch Set: Move files from zip_archiver/unpacker/ to zip_archiver/. Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium OS Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 'use strict';
6
7 /**
8 * Defines the protocol used to communicate between JS and NaCL.
9 * This should be consistent with cpp/request.h.
10 * @namespace
11 */
12 unpacker.request = {
13 /**
14 * Defines request ids. Every key should be unique and the same as the keys
15 * on the NaCL side.
16 * @enum {string}
17 */
18 Key: {
19 // Mandatory keys for all unpacking operations.
20 OPERATION: 'operation', // Should be a unpacker.request.Operation.
21 FILE_SYSTEM_ID: 'file_system_id', // Should be a string.
22 REQUEST_ID: 'request_id', // Should be a string.
23
24 // Optional keys unique to unpacking operations.
25 METADATA: 'metadata', // Should be a dictionary.
26 ARCHIVE_SIZE: 'archive_size', // Should be a string as only int is
27 // supported by pp::Var on C++.
28 INDEX: 'index', // Should be a string. Same reason as ARCHIVE_SIZE.
29 ENCODING: 'encoding', // Should be a string.
30 OPEN_REQUEST_ID: 'open_request_id', // Should be a string, just like
31 // REQUEST_ID.
32 READ_FILE_DATA: 'read_file_data', // Should be an ArrayBuffer.
33 HAS_MORE_DATA: 'has_more_data', // Should be a boolean.
34 PASSPHRASE: 'passphrase', // Should be a string.
35
36 // Mandatory keys for all packing operations.
37 COMPRESSOR_ID: 'compressor_id', // Should be an int.
38
39 // Optional keys unique to packing operations.
40 ENTRY_ID: 'entry_id', // Should be an int.
41 PATHNAME: 'pathname', // should be a string.
42 FILE_SIZE: 'file_size', // should be a string. Same reason
43 // as ARCHIVE_SIZE.
44 IS_DIRECTORY: 'is_directory', // should be a boolean.
45 MODIFICATION_TIME: 'modification_time', // should be a string.
46 // (mm/dd/yy h:m:s)
47 HAS_ERROR: 'has_error', // Should be a boolean Sent from JS
48 // to NaCL.
49
50 // Optional keys used for both packing and unpacking operations.
51 ERROR: 'error', // Should be a string.
52 CHUNK_BUFFER: 'chunk_buffer', // Should be an ArrayBuffer.
53 OFFSET: 'offset', // Should be a string. Same reason as ARCHIVE_SIZE.
54 LENGTH: 'length', // Should be a string. Same reason as ARCHIVE_SIZE.
55 SRC_FILE: 'src_file', // Should be a string.
56 SRC_LINE: 'src_line', // Should be a int.
57 SRC_FUNC: 'src_func', // Should be a string.
58 MESSAGE: 'message', // Should be a string.
59 },
60
61 /**
62 * Defines request operations. These operation should be the same as the
63 * operations on the NaCL side. FILE_SYSTEM_ID and REQUEST_ID are mandatory
64 * for all unpack requests, while COMPRESSOR_ID is required for all pack
65 * requests. All the values of unpacking operations must be smaller than any
66 * packing operation (except errors).
67 * @enum {number}
68 */
69 Operation: {
70 READ_METADATA: 0,
71 READ_METADATA_DONE: 1,
72 READ_CHUNK: 2,
73 READ_CHUNK_DONE: 3,
74 READ_CHUNK_ERROR: 4,
75 READ_PASSPHRASE: 5,
76 READ_PASSPHRASE_DONE: 6,
77 READ_PASSPHRASE_ERROR: 7,
78 CLOSE_VOLUME: 8,
79 OPEN_FILE: 9,
80 OPEN_FILE_DONE: 10,
81 CLOSE_FILE: 11,
82 CLOSE_FILE_DONE: 12,
83 READ_FILE: 13,
84 READ_FILE_DONE: 14,
85 CONSOLE_LOG: 15,
86 CONSOLE_DEBUG: 16,
87 CREATE_ARCHIVE: 17,
88 CREATE_ARCHIVE_DONE: 18,
89 ADD_TO_ARCHIVE: 19,
90 ADD_TO_ARCHIVE_DONE: 20,
91 READ_FILE_CHUNK: 21,
92 READ_FILE_CHUNK_DONE: 22,
93 WRITE_CHUNK: 23,
94 WRITE_CHUNK_DONE: 24,
95 CLOSE_ARCHIVE: 25,
96 CLOSE_ARCHIVE_DONE: 26,
97 FILE_SYSTEM_ERROR: -1,
98 COMPRESSOR_ERROR: -2
99 },
100
101 /**
102 * Operations greater than or equal to this value are for packing.
103 * @const {number}
104 */
105 MINIMUM_PACK_REQUEST_VALUE: 17,
106
107 /**
108 * Return true if the given operation is related to packing.
109 * @param {!unpacker.request.Operation} operation
110 * @return {boolean}
111 */
112 isPackRequest: function(operation) {
113 return unpacker.request.MINIMUM_PACK_REQUEST_VALUE <= operation ||
114 operation == unpacker.request.Operation.COMPRESSOR_ERROR;
115 },
116
117 /**
118 * Creates a basic request with mandatory fields.
119 * @param {!unpacker.request.Operation} operation
120 * @param {!unpacker.types.FileSystemId} fileSystemId
121 * @param {!unpacker.types.RequestId} requestId The request id. Should be
122 * unique only per file system.
123 * @private
124 * @return {!Object} A new request with mandatory fields.
125 */
126 createBasic_: function(operation, fileSystemId, requestId) {
127 var basicRequest = {};
128 basicRequest[unpacker.request.Key.OPERATION] = operation;
129 basicRequest[unpacker.request.Key.FILE_SYSTEM_ID] = fileSystemId;
130 basicRequest[unpacker.request.Key.REQUEST_ID] = requestId.toString();
131 return basicRequest;
132 },
133
134 /**
135 * Creates a read metadata request.
136 * @param {!unpacker.types.FileSystemId} fileSystemId
137 * @param {!unpacker.types.RequestId} requestId
138 * @param {string} encoding Default encoding for the archive.
139 * @param {number} archiveSize The size of the archive for fileSystemId.
140 * @return {!Object} A read metadata request.
141 */
142 createReadMetadataRequest: function(fileSystemId, requestId, encoding,
143 archiveSize) {
144 var readMetadataRequest = unpacker.request.createBasic_(
145 unpacker.request.Operation.READ_METADATA, fileSystemId, requestId);
146 readMetadataRequest[unpacker.request.Key.ENCODING] = encoding;
147 readMetadataRequest[unpacker.request.Key.ARCHIVE_SIZE] =
148 archiveSize.toString();
149 return readMetadataRequest;
150 },
151
152 /**
153 * Creates a read chunk done response. This is a response to a READ_CHUNK
154 * request from NaCl.
155 * @param {!unpacker.types.FileSystemId} fileSystemId
156 * @param {!unpacker.types.RequestId} requestId
157 * @param {!ArrayBuffer} buffer A buffer containing the data that was read.
158 * @param {number} readOffset The offset from where buffer starts. This is
159 * required for distinguishing multiple read chunk requests done in
160 * parallel for different offsets.
161 * @return {!Object} A read chunk done response.
162 */
163 createReadChunkDoneResponse: function(fileSystemId, requestId, buffer,
164 readOffset) {
165 var response = unpacker.request.createBasic_(
166 unpacker.request.Operation.READ_CHUNK_DONE, fileSystemId, requestId);
167 response[unpacker.request.Key.CHUNK_BUFFER] = buffer;
168 response[unpacker.request.Key.OFFSET] = readOffset.toString();
169 return response;
170 },
171
172 /**
173 * Creates a read chunk error response. This is a response to a READ_CHUNK
174 * request from NaCl in case of any errors in order for NaCl to cleanup
175 * resources.
176 * @param {!unpacker.types.FileSystemId} fileSystemId
177 * @param {!unpacker.types.RequestId} requestId
178 * @return {!Object} A read chunk error response.
179 */
180 createReadChunkErrorResponse: function(fileSystemId, requestId) {
181 return unpacker.request.createBasic_(
182 unpacker.request.Operation.READ_CHUNK_ERROR, fileSystemId, requestId);
183 },
184
185 /**
186 * Creates a read passphrase done response. This is a response to a
187 * READ_PASSPHRASE request from NaCl.
188 * @param {!unpacker.types.FileSystemId} fileSystemId
189 * @param {!unpacker.types.RequestId} requestId
190 * @param {string} passphrase The passphrase.
191 * @return {!Object} A read passphrase done response.
192 */
193 createReadPassphraseDoneResponse: function(fileSystemId, requestId,
194 passphrase) {
195 var response = unpacker.request.createBasic_(
196 unpacker.request.Operation.READ_PASSPHRASE_DONE, fileSystemId,
197 requestId);
198 response[unpacker.request.Key.PASSPHRASE] = passphrase;
199 return response;
200 },
201
202 /**
203 * Creates a read passphrase error response. This is a response to a
204 * READ_PASSPHRASE request from NaCl in case of any errors in order for NaCl
205 * to cleanup resources.
206 * @param {!unpacker.types.FileSystemId} fileSystemId
207 * @param {!unpacker.types.RequestId} requestId
208 * @return {!Object} A read passphrase error response.
209 */
210 createReadPassphraseErrorResponse: function(fileSystemId, requestId) {
211 return unpacker.request.createBasic_(
212 unpacker.request.Operation.READ_PASSPHRASE_ERROR, fileSystemId,
213 requestId);
214 },
215
216 /**
217 * Creates a request to close a volume related to a fileSystemId.
218 * Can be called after any request.
219 * @param {!unpacker.types.FileSystemId} fileSystemId
220 * @return {!Object} A close volume request.
221 */
222 createCloseVolumeRequest: function(fileSystemId) {
223 return unpacker.request.createBasic_(
224 unpacker.request.Operation.CLOSE_VOLUME, fileSystemId, -1);
225 },
226
227 /**
228 * Creates an open file request.
229 * @param {!unpacker.types.FileSystemId} fileSystemId
230 * @param {number} index The index of the file in the header list.
231 * @param {string} encoding Default encoding for the archive.
232 * @param {number} archiveSize The size of the volume's archive.
233 * @return {!Object} An open file request.
234 */
235 createOpenFileRequest: function(fileSystemId, requestId, index, encoding,
236 archiveSize) {
237 var openFileRequest = unpacker.request.createBasic_(
238 unpacker.request.Operation.OPEN_FILE, fileSystemId, requestId);
239 openFileRequest[unpacker.request.Key.INDEX] = index.toString();
240 openFileRequest[unpacker.request.Key.ENCODING] = encoding;
241 openFileRequest[unpacker.request.Key.ARCHIVE_SIZE] = archiveSize.toString();
242 return openFileRequest;
243 },
244
245 /**
246 * Creates a close file request.
247 * @param {!unpacker.types.FileSystemId} fileSystemId
248 * @param {!unpacker.types.RequestId} requestId
249 * @param {!unpacker.types.RequestId} openRequestId
250 * @return {!Object} A close file request.
251 */
252 createCloseFileRequest: function(fileSystemId, requestId, openRequestId) {
253 var closeFileRequest = unpacker.request.createBasic_(
254 unpacker.request.Operation.CLOSE_FILE, fileSystemId, requestId);
255 closeFileRequest[unpacker.request.Key.OPEN_REQUEST_ID] =
256 openRequestId.toString();
257 return closeFileRequest;
258 },
259
260 /**
261 * Creates a read file request.
262 * @param {!unpacker.types.FileSystemId} fileSystemId
263 * @param {!unpacker.types.RequestId} requestId
264 * @param {!unpacker.types.RequestId} openRequestId
265 * @param {number} offset The offset from where read is done.
266 * @param {number} length The number of bytes required.
267 * @return {!Object} A read file request.
268 */
269 createReadFileRequest: function(fileSystemId, requestId, openRequestId,
270 offset, length) {
271 var readFileRequest = unpacker.request.createBasic_(
272 unpacker.request.Operation.READ_FILE, fileSystemId, requestId);
273 readFileRequest[unpacker.request.Key.OPEN_REQUEST_ID] =
274 openRequestId.toString();
275 readFileRequest[unpacker.request.Key.OFFSET] = offset.toString();
276 readFileRequest[unpacker.request.Key.LENGTH] = length.toString();
277 return readFileRequest;
278 },
279
280 /**
281 * Creates a create archive request for compressor.
282 * @param {!unpacker.types.CompressorId} compressorId
283 * @return {!Object} A create archive request.
284 */
285 createCreateArchiveRequest: function(compressorId) {
286 var request = {};
287 request[unpacker.request.Key.OPERATION] =
288 unpacker.request.Operation.CREATE_ARCHIVE;
289 request[unpacker.request.Key.COMPRESSOR_ID] = compressorId;
290 return request;
291 },
292
293 /**
294 * Creates an add to archive request for compressor.
295 * @param {!unpacker.types.CompressorId} compressorId
296 * @param {!unpacker.types.EntryId} entryId
297 * @param {string} pathname The relative path of the entry.
298 * @param {number} fileSize The size of the entry.
299 * @param {string} modificationTime The modification time of the entry.
300 * @param {boolean} isDirectory Whether the entry is a directory or not.
301 * @return {!Object} An add to archive request.
302 */
303 createAddToArchiveRequest: function(compressorId, entryId, pathname,
304 fileSize, modificationTime, isDirectory) {
305 var request = {};
306 request[unpacker.request.Key.OPERATION] =
307 unpacker.request.Operation.ADD_TO_ARCHIVE;
308 request[unpacker.request.Key.COMPRESSOR_ID] = compressorId;
309 request[unpacker.request.Key.ENTRY_ID] = entryId;
310 request[unpacker.request.Key.PATHNAME] = pathname.toString();
311 request[unpacker.request.Key.FILE_SIZE] = fileSize.toString();
312 request[unpacker.request.Key.MODIFICATION_TIME] =
313 modificationTime.toString();
314 request[unpacker.request.Key.IS_DIRECTORY] = isDirectory;
315 return request;
316 },
317
318 /**
319 * Creates a read file chunk response for compressor.
320 * @param {!unpacker.types.CompressorId} compressorId
321 * @param {number} length The number of bytes read from the entry.
322 * @param {!ArrayBuffer} buffer A buffer containing the data that was read.
323 * @return {!Object} A read file chunk done response.
324 */
325 createReadFileChunkDoneResponse: function(compressorId, length, buffer) {
326 var response = {};
327 response[unpacker.request.Key.OPERATION] =
328 unpacker.request.Operation.READ_FILE_CHUNK_DONE;
329 response[unpacker.request.Key.COMPRESSOR_ID] = compressorId;
330 response[unpacker.request.Key.LENGTH] = length.toString();
331 response[unpacker.request.Key.CHUNK_BUFFER] = buffer;
332 return response;
333 },
334
335 /**
336 * Creates a write chunk done response for compressor.
337 * @param {!unpacker.types.CompressorId} compressorId
338 * @param {number} length The number of bytes written onto the archive file.
339 * @return {!Object} A write chunk done response.
340 */
341 createWriteChunkDoneResponse: function(compressorId, length) {
342 var response = {};
343 response[unpacker.request.Key.OPERATION] =
344 unpacker.request.Operation.WRITE_CHUNK_DONE;
345 response[unpacker.request.Key.COMPRESSOR_ID] = compressorId;
346 response[unpacker.request.Key.LENGTH] = length.toString();
347 return response;
348 },
349
350 /**
351 * Creates a close archive request for compressor.
352 * @param {!unpacker.types.CompressorId} compressorId
353 * @param {boolean} hasError True if some error occurred.
354 * @return {!Object} A close archive request.
355 */
356 createCloseArchiveRequest: function(compressorId, hasError) {
357 var request = {};
358 request[unpacker.request.Key.OPERATION] =
359 unpacker.request.Operation.CLOSE_ARCHIVE;
360 request[unpacker.request.Key.COMPRESSOR_ID] = compressorId;
361 request[unpacker.request.Key.HAS_ERROR] = hasError;
362 return request;
363 }
364 };
OLDNEW
« no previous file with comments | « ui/file_manager/zip_archiver/unpacker/js/passphrase-manager.js ('k') | ui/file_manager/zip_archiver/unpacker/js/types.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698