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

Side by Side Diff: chrome/browser/resources/file_manager/js/metadata/byte_reader.js

Issue 12261008: [Cleanup] Files.app: Fill 'TODO' comments to missing descriptions in @param annotation. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 10 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | chrome/browser/resources/file_manager/js/metadata/function_parallel.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 function ByteReader(arrayBuffer, opt_offset, opt_length) { 5 function ByteReader(arrayBuffer, opt_offset, opt_length) {
6 opt_offset = opt_offset || 0; 6 opt_offset = opt_offset || 0;
7 opt_length = opt_length || (arrayBuffer.byteLength - opt_offset); 7 opt_length = opt_length || (arrayBuffer.byteLength - opt_offset);
8 this.view_ = new DataView(arrayBuffer, opt_offset, opt_length); 8 this.view_ = new DataView(arrayBuffer, opt_offset, opt_length);
9 this.pos_ = 0; 9 this.pos_ = 0;
10 this.seekStack_ = []; 10 this.seekStack_ = [];
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 * Seek relative to the end of the buffer. 42 * Seek relative to the end of the buffer.
43 * @const 43 * @const
44 * @type {number} 44 * @type {number}
45 */ 45 */
46 ByteReader.SEEK_END = 2; 46 ByteReader.SEEK_END = 2;
47 47
48 /** 48 /**
49 * Throw an error if (0 > pos >= end) or if (pos + size > end). 49 * Throw an error if (0 > pos >= end) or if (pos + size > end).
50 * 50 *
51 * Static utility function. 51 * Static utility function.
52 *
53 * @param {number} pos //TODO(JSDOC).
54 * @param {number} size //TODO(JSDOC).
55 * @param {number} end //TODO(JSDOC).
52 */ 56 */
53 ByteReader.validateRead = function(pos, size, end) { 57 ByteReader.validateRead = function(pos, size, end) {
54 if (pos < 0 || pos >= end) 58 if (pos < 0 || pos >= end)
55 throw new Error('Invalid read position'); 59 throw new Error('Invalid read position');
56 60
57 if (pos + size > end) 61 if (pos + size > end)
58 throw new Error('Read past end of buffer'); 62 throw new Error('Read past end of buffer');
59 }; 63 };
60 64
61 /** 65 /**
62 * Read as a sequence of characters, returning them as a single string. 66 * Read as a sequence of characters, returning them as a single string.
63 * 67 *
64 * This is a static utility function. There is a member function with the 68 * This is a static utility function. There is a member function with the
65 * same name which side-effects the current read position. 69 * same name which side-effects the current read position.
70 *
71 * @param {DataView} dataView //TODO(JSDOC).
72 * @param {number} pos //TODO(JSDOC).
73 * @param {number} size //TODO(JSDOC).
74 * @param {number=} opt_end //TODO(JSDOC).
66 * @return {string} //TODO(JSDOC). 75 * @return {string} //TODO(JSDOC).
67 */ 76 */
68 ByteReader.readString = function(dataView, pos, size, opt_end) { 77 ByteReader.readString = function(dataView, pos, size, opt_end) {
69 ByteReader.validateRead(pos, size, opt_end || dataView.byteLength); 78 ByteReader.validateRead(pos, size, opt_end || dataView.byteLength);
70 79
71 var codes = []; 80 var codes = [];
72 81
73 for (var i = 0; i < size; ++i) 82 for (var i = 0; i < size; ++i)
74 codes.push(dataView.getUint8(pos + i)); 83 codes.push(dataView.getUint8(pos + i));
75 84
76 return String.fromCharCode.apply(null, codes); 85 return String.fromCharCode.apply(null, codes);
77 }; 86 };
78 87
79 /** 88 /**
80 * Read as a sequence of characters, returning them as a single string. 89 * Read as a sequence of characters, returning them as a single string.
81 * 90 *
82 * This is a static utility function. There is a member function with the 91 * This is a static utility function. There is a member function with the
83 * same name which side-effects the current read position. 92 * same name which side-effects the current read position.
93 *
94 * @param {DataView} dataView //TODO(JSDOC).
95 * @param {number} pos //TODO(JSDOC).
96 * @param {number} size //TODO(JSDOC).
97 * @param {number=} opt_end //TODO(JSDOC).
84 * @return {string} //TODO(JSDOC). 98 * @return {string} //TODO(JSDOC).
85 */ 99 */
86 ByteReader.readNullTerminatedString = function(dataView, pos, size, opt_end) { 100 ByteReader.readNullTerminatedString = function(dataView, pos, size, opt_end) {
87 ByteReader.validateRead(pos, size, opt_end || dataView.byteLength); 101 ByteReader.validateRead(pos, size, opt_end || dataView.byteLength);
88 102
89 var codes = []; 103 var codes = [];
90 104
91 for (var i = 0; i < size; ++i) { 105 for (var i = 0; i < size; ++i) {
92 var code = dataView.getUint8(pos + i); 106 var code = dataView.getUint8(pos + i);
93 if (code == 0) break; 107 if (code == 0) break;
94 codes.push(code); 108 codes.push(code);
95 } 109 }
96 110
97 return String.fromCharCode.apply(null, codes); 111 return String.fromCharCode.apply(null, codes);
98 }; 112 };
99 113
100 /** 114 /**
101 * Read as a sequence of UTF16 characters, returning them as a single string. 115 * Read as a sequence of UTF16 characters, returning them as a single string.
102 * 116 *
103 * This is a static utility function. There is a member function with the 117 * This is a static utility function. There is a member function with the
104 * same name which side-effects the current read position. 118 * same name which side-effects the current read position.
119 *
120 * @param {DataView} dataView //TODO(JSDOC).
121 * @param {number} pos //TODO(JSDOC).
122 * @param {boolean} bom //TODO(JSDOC).
123 * @param {number} size //TODO(JSDOC).
124 * @param {number=} opt_end //TODO(JSDOC).
105 * @return {string} //TODO(JSDOC). 125 * @return {string} //TODO(JSDOC).
106 */ 126 */
107 ByteReader.readNullTerminatedStringUTF16 = function( 127 ByteReader.readNullTerminatedStringUTF16 = function(
108 dataView, pos, bom, size, opt_end) { 128 dataView, pos, bom, size, opt_end) {
109 ByteReader.validateRead(pos, size, opt_end || dataView.byteLength); 129 ByteReader.validateRead(pos, size, opt_end || dataView.byteLength);
110 130
111 var littleEndian = false; 131 var littleEndian = false;
112 var start = 0; 132 var start = 0;
113 133
114 if (bom) { 134 if (bom) {
(...skipping 20 matching lines...) Expand all
135 ByteReader.base64Alphabet_ = 155 ByteReader.base64Alphabet_ =
136 ('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'). 156 ('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/').
137 split(''); 157 split('');
138 158
139 /** 159 /**
140 * Read as a sequence of bytes, returning them as a single base64 encoded 160 * Read as a sequence of bytes, returning them as a single base64 encoded
141 * string. 161 * string.
142 * 162 *
143 * This is a static utility function. There is a member function with the 163 * This is a static utility function. There is a member function with the
144 * same name which side-effects the current read position. 164 * same name which side-effects the current read position.
165 *
166 * @param {DataView} dataView //TODO(JSDOC).
167 * @param {number} pos //TODO(JSDOC).
168 * @param {number} size //TODO(JSDOC).
169 * @param {number=} opt_end //TODO(JSDOC).
145 * @return {string} //TODO(JSDOC). 170 * @return {string} //TODO(JSDOC).
146 */ 171 */
147 ByteReader.readBase64 = function(dataView, pos, size, opt_end) { 172 ByteReader.readBase64 = function(dataView, pos, size, opt_end) {
148 ByteReader.validateRead(pos, size, opt_end || dataView.byteLength); 173 ByteReader.validateRead(pos, size, opt_end || dataView.byteLength);
149 174
150 var rv = []; 175 var rv = [];
151 var chars = []; 176 var chars = [];
152 var padding = 0; 177 var padding = 0;
153 178
154 for (var i = 0; i < size; /* incremented inside */) { 179 for (var i = 0; i < size; /* incremented inside */) {
(...skipping 25 matching lines...) Expand all
180 rv[rv.length - 2] = '='; 205 rv[rv.length - 2] = '=';
181 206
182 return rv.join(''); 207 return rv.join('');
183 }; 208 };
184 209
185 /** 210 /**
186 * Read as an image encoded in a data url. 211 * Read as an image encoded in a data url.
187 * 212 *
188 * This is a static utility function. There is a member function with the 213 * This is a static utility function. There is a member function with the
189 * same name which side-effects the current read position. 214 * same name which side-effects the current read position.
215 *
216 * @param {DataView} dataView //TODO(JSDOC).
217 * @param {number} pos //TODO(JSDOC).
218 * @param {number} size //TODO(JSDOC).
219 * @param {number=} opt_end //TODO(JSDOC).
190 * @return {string} //TODO(JSDOC). 220 * @return {string} //TODO(JSDOC).
191 */ 221 */
192 ByteReader.readImage = function(dataView, pos, size, opt_end) { 222 ByteReader.readImage = function(dataView, pos, size, opt_end) {
193 opt_end = opt_end || dataView.byteLength; 223 opt_end = opt_end || dataView.byteLength;
194 ByteReader.validateRead(pos, size, opt_end); 224 ByteReader.validateRead(pos, size, opt_end);
195 225
196 // Two bytes is enough to identify the mime type. 226 // Two bytes is enough to identify the mime type.
197 var prefixToMime = { 227 var prefixToMime = {
198 '\x89P' : 'png', 228 '\x89P' : 'png',
199 '\xFF\xD8' : 'jpeg', 229 '\xFF\xD8' : 'jpeg',
200 'BM' : 'bmp', 230 'BM' : 'bmp',
201 'GI' : 'gif' 231 'GI' : 'gif'
202 }; 232 };
203 233
204 var prefix = ByteReader.readString(dataView, pos, 2, opt_end); 234 var prefix = ByteReader.readString(dataView, pos, 2, opt_end);
205 var mime = prefixToMime[prefix] || 235 var mime = prefixToMime[prefix] ||
206 dataView.getUint16(pos, false).toString(16); // For debugging. 236 dataView.getUint16(pos, false).toString(16); // For debugging.
207 237
208 var b64 = ByteReader.readBase64(dataView, pos, size, opt_end); 238 var b64 = ByteReader.readBase64(dataView, pos, size, opt_end);
209 return 'data:image/' + mime + ';base64,' + b64; 239 return 'data:image/' + mime + ';base64,' + b64;
210 }; 240 };
211 241
212 // Instance methods. 242 // Instance methods.
213 243
214 /** 244 /**
215 * Return true if the requested number of bytes can be read from the buffer. 245 * Return true if the requested number of bytes can be read from the buffer.
246 *
247 * @param {number} size //TODO(JSDOC).
216 * @return {boolean} //TODO(JSDOC). 248 * @return {boolean} //TODO(JSDOC).
217 */ 249 */
218 ByteReader.prototype.canRead = function(size) { 250 ByteReader.prototype.canRead = function(size) {
219 return this.pos_ + size <= this.view_.byteLength; 251 return this.pos_ + size <= this.view_.byteLength;
220 }; 252 };
221 253
222 /** 254 /**
223 * Return true if the current position is past the end of the buffer. 255 * Return true if the current position is past the end of the buffer.
224 * @return {boolean} //TODO(JSDOC). 256 * @return {boolean} //TODO(JSDOC).
225 */ 257 */
(...skipping 12 matching lines...) Expand all
238 /** 270 /**
239 * Return true if the current position is outside the buffer. 271 * Return true if the current position is outside the buffer.
240 * @return {boolean} //TODO(JSDOC). 272 * @return {boolean} //TODO(JSDOC).
241 */ 273 */
242 ByteReader.prototype.beof = function() { 274 ByteReader.prototype.beof = function() {
243 return this.pos_ >= this.view_.byteLength || this.pos_ < 0; 275 return this.pos_ >= this.view_.byteLength || this.pos_ < 0;
244 }; 276 };
245 277
246 /** 278 /**
247 * Set the expected byte ordering for future reads. 279 * Set the expected byte ordering for future reads.
280 * @param {number} order //TODO(JSDOC).
248 */ 281 */
249 ByteReader.prototype.setByteOrder = function(order) { 282 ByteReader.prototype.setByteOrder = function(order) {
250 this.littleEndian_ = order == ByteReader.LITTLE_ENDIAN; 283 this.littleEndian_ = order == ByteReader.LITTLE_ENDIAN;
251 }; 284 };
252 285
253 /** 286 /**
254 * Throw an error if the reader is at an invalid position, or if a read a read 287 * Throw an error if the reader is at an invalid position, or if a read a read
255 * of |size| would put it in one. 288 * of |size| would put it in one.
256 * 289 *
257 * You may optionally pass opt_end to override what is considered to be the 290 * You may optionally pass opt_end to override what is considered to be the
258 * end of the buffer. 291 * end of the buffer.
292 *
293 * @param {number} size //TODO(JSDOC).
294 * @param {number=} opt_end //TODO(JSDOC).
259 */ 295 */
260 ByteReader.prototype.validateRead = function(size, opt_end) { 296 ByteReader.prototype.validateRead = function(size, opt_end) {
261 if (typeof opt_end == 'undefined') 297 if (typeof opt_end == 'undefined')
262 opt_end = this.view_.byteLength; 298 opt_end = this.view_.byteLength;
263 299
264 ByteReader.validateRead(this.view_, this.pos_, size, opt_end); 300 ByteReader.validateRead(this.view_, this.pos_, size, opt_end);
265 }; 301 };
266 302
267 /** 303 /**
268 * @param {number} width //TODO(JSDOC). 304 * @param {number} width //TODO(JSDOC).
(...skipping 30 matching lines...) Expand all
299 var rv = this.view_[method](this.pos_, this.littleEndian_); 335 var rv = this.view_[method](this.pos_, this.littleEndian_);
300 this.pos_ += width; 336 this.pos_ += width;
301 return rv; 337 return rv;
302 }; 338 };
303 339
304 /** 340 /**
305 * Read as a sequence of characters, returning them as a single string. 341 * Read as a sequence of characters, returning them as a single string.
306 * 342 *
307 * Adjusts the current position on success. Throws an exception if the 343 * Adjusts the current position on success. Throws an exception if the
308 * read would go past the end of the buffer. 344 * read would go past the end of the buffer.
345 *
346 * @param {number} size //TODO(JSDOC).
347 * @param {number=} opt_end //TODO(JSDOC).
309 * @return {string} //TODO(JSDOC). 348 * @return {string} //TODO(JSDOC).
310 */ 349 */
311 ByteReader.prototype.readString = function(size, opt_end) { 350 ByteReader.prototype.readString = function(size, opt_end) {
312 var rv = ByteReader.readString(this.view_, this.pos_, size, opt_end); 351 var rv = ByteReader.readString(this.view_, this.pos_, size, opt_end);
313 this.pos_ += size; 352 this.pos_ += size;
314 return rv; 353 return rv;
315 }; 354 };
316 355
317 356
318 /** 357 /**
319 * Read as a sequence of characters, returning them as a single string. 358 * Read as a sequence of characters, returning them as a single string.
320 * 359 *
321 * Adjusts the current position on success. Throws an exception if the 360 * Adjusts the current position on success. Throws an exception if the
322 * read would go past the end of the buffer. 361 * read would go past the end of the buffer.
362 *
363 * @param {number} size //TODO(JSDOC).
364 * @param {number=} opt_end //TODO(JSDOC).
323 * @return {string} //TODO(JSDOC). 365 * @return {string} //TODO(JSDOC).
324 */ 366 */
325 ByteReader.prototype.readNullTerminatedString = function(size, opt_end) { 367 ByteReader.prototype.readNullTerminatedString = function(size, opt_end) {
326 var rv = ByteReader.readNullTerminatedString(this.view_, 368 var rv = ByteReader.readNullTerminatedString(this.view_,
327 this.pos_, 369 this.pos_,
328 size, 370 size,
329 opt_end); 371 opt_end);
330 this.pos_ += rv.length; 372 this.pos_ += rv.length;
331 373
332 if (rv.length < size) { 374 if (rv.length < size) {
333 // If we've stopped reading because we found '0' but didn't hit size limit 375 // If we've stopped reading because we found '0' but didn't hit size limit
334 // then we should skip additional '0' character 376 // then we should skip additional '0' character
335 this.pos_++; 377 this.pos_++;
336 } 378 }
337 379
338 return rv; 380 return rv;
339 }; 381 };
340 382
341 383
342 /** 384 /**
343 * Read as a sequence of UTF16 characters, returning them as a single string. 385 * Read as a sequence of UTF16 characters, returning them as a single string.
344 * 386 *
345 * Adjusts the current position on success. Throws an exception if the 387 * Adjusts the current position on success. Throws an exception if the
346 * read would go past the end of the buffer. 388 * read would go past the end of the buffer.
389 *
390 * @param {boolean} bom //TODO(JSDOC).
391 * @param {number} size //TODO(JSDOC).
392 * @param {number=} opt_end //TODO(JSDOC).
347 * @return {string} //TODO(JSDOC). 393 * @return {string} //TODO(JSDOC).
348 */ 394 */
349 ByteReader.prototype.readNullTerminatedStringUTF16 = 395 ByteReader.prototype.readNullTerminatedStringUTF16 =
350 function(bom, size, opt_end) { 396 function(bom, size, opt_end) {
351 var rv = ByteReader.readNullTerminatedStringUTF16( 397 var rv = ByteReader.readNullTerminatedStringUTF16(
352 this.view_, this.pos_, bom, size, opt_end); 398 this.view_, this.pos_, bom, size, opt_end);
353 399
354 if (bom) { 400 if (bom) {
355 // If the BOM word was present advance the position. 401 // If the BOM word was present advance the position.
356 this.pos_ += 2; 402 this.pos_ += 2;
357 } 403 }
358 404
359 this.pos_ += rv.length; 405 this.pos_ += rv.length;
360 406
361 if (rv.length < size) { 407 if (rv.length < size) {
362 // If we've stopped reading because we found '0' but didn't hit size limit 408 // If we've stopped reading because we found '0' but didn't hit size limit
363 // then we should skip additional '0' character 409 // then we should skip additional '0' character
364 this.pos_ += 2; 410 this.pos_ += 2;
365 } 411 }
366 412
367 return rv; 413 return rv;
368 }; 414 };
369 415
370 416
371 /** 417 /**
372 * Read as an array of numbers. 418 * Read as an array of numbers.
373 * 419 *
374 * Adjusts the current position on success. Throws an exception if the 420 * Adjusts the current position on success. Throws an exception if the
375 * read would go past the end of the buffer. 421 * read would go past the end of the buffer.
422 *
423 * @param {number} size //TODO(JSDOC).
424 * @param {number=} opt_end //TODO(JSDOC).
425 * @param {function(new:Array.<*>)=} opt_arrayConstructor //TODO(JSDOC).
376 * @return {Array.<*>} //TODO(JSDOC). 426 * @return {Array.<*>} //TODO(JSDOC).
377 */ 427 */
378 ByteReader.prototype.readSlice = function(size, opt_end, 428 ByteReader.prototype.readSlice = function(size, opt_end,
379 opt_arrayConstructor) { 429 opt_arrayConstructor) {
380 this.validateRead(size, opt_end); 430 this.validateRead(size, opt_end);
381 431
382 var arrayConstructor = opt_arrayConstructor || Uint8Array; 432 var arrayConstructor = opt_arrayConstructor || Uint8Array;
383 var slice = new arrayConstructor( 433 var slice = new arrayConstructor(
384 this.view_.buffer, this.view_.byteOffset + this.pos, size); 434 this.view_.buffer, this.view_.byteOffset + this.pos, size);
385 this.pos_ += size; 435 this.pos_ += size;
386 436
387 return slice; 437 return slice;
388 }; 438 };
389 439
390 /** 440 /**
391 * Read as a sequence of bytes, returning them as a single base64 encoded 441 * Read as a sequence of bytes, returning them as a single base64 encoded
392 * string. 442 * string.
393 * 443 *
394 * Adjusts the current position on success. Throws an exception if the 444 * Adjusts the current position on success. Throws an exception if the
395 * read would go past the end of the buffer. 445 * read would go past the end of the buffer.
446 *
447 * @param {number} size //TODO(JSDOC).
448 * @param {number=} opt_end //TODO(JSDOC).
396 * @return {string} //TODO(JSDOC). 449 * @return {string} //TODO(JSDOC).
397 */ 450 */
398 ByteReader.prototype.readBase64 = function(size, opt_end) { 451 ByteReader.prototype.readBase64 = function(size, opt_end) {
399 var rv = ByteReader.readBase64(this.view_, this.pos_, size, opt_end); 452 var rv = ByteReader.readBase64(this.view_, this.pos_, size, opt_end);
400 this.pos_ += size; 453 this.pos_ += size;
401 return rv; 454 return rv;
402 }; 455 };
403 456
404 /** 457 /**
405 * Read an image returning it as a data url. 458 * Read an image returning it as a data url.
406 * 459 *
407 * Adjusts the current position on success. Throws an exception if the 460 * Adjusts the current position on success. Throws an exception if the
408 * read would go past the end of the buffer. 461 * read would go past the end of the buffer.
462 *
463 * @param {number} size //TODO(JSDOC).
464 * @param {number=} opt_end //TODO(JSDOC).
409 * @return {string} //TODO(JSDOC). 465 * @return {string} //TODO(JSDOC).
410 */ 466 */
411 ByteReader.prototype.readImage = function(size, opt_end) { 467 ByteReader.prototype.readImage = function(size, opt_end) {
412 var rv = ByteReader.readImage(this.view_, this.pos_, size, opt_end); 468 var rv = ByteReader.readImage(this.view_, this.pos_, size, opt_end);
413 this.pos_ += size; 469 this.pos_ += size;
414 return rv; 470 return rv;
415 }; 471 };
416 472
417 /** 473 /**
418 * Seek to a give position relative to opt_seekStart. 474 * Seek to a give position relative to opt_seekStart.
475 *
476 * @param {number} pos //TODO(JSDOC).
477 * @param {number=} opt_seekStart //TODO(JSDOC).
478 * @param {number=} opt_end //TODO(JSDOC).
419 */ 479 */
420 ByteReader.prototype.seek = function(pos, opt_seekStart, opt_end) { 480 ByteReader.prototype.seek = function(pos, opt_seekStart, opt_end) {
421 opt_end = opt_end || this.view_.byteLength; 481 opt_end = opt_end || this.view_.byteLength;
422 482
423 var newPos; 483 var newPos;
424 if (opt_seekStart == ByteReader.SEEK_CUR) { 484 if (opt_seekStart == ByteReader.SEEK_CUR) {
425 newPos = this.pos_ + pos; 485 newPos = this.pos_ + pos;
426 } else if (opt_seekStart == ByteReader.SEEK_END) { 486 } else if (opt_seekStart == ByteReader.SEEK_END) {
427 newPos = opt_end + pos; 487 newPos = opt_end + pos;
428 } else { 488 } else {
429 newPos = pos; 489 newPos = pos;
430 } 490 }
431 491
432 if (newPos < 0 || newPos > this.view_.byteLength) 492 if (newPos < 0 || newPos > this.view_.byteLength)
433 throw new Error('Seek outside of buffer: ' + (newPos - opt_end)); 493 throw new Error('Seek outside of buffer: ' + (newPos - opt_end));
434 494
435 this.pos_ = newPos; 495 this.pos_ = newPos;
436 }; 496 };
437 497
438 /** 498 /**
439 * Seek to a given position relative to opt_seekStart, saving the current 499 * Seek to a given position relative to opt_seekStart, saving the current
440 * position. 500 * position.
441 * 501 *
442 * Recover the current position with a call to seekPop. 502 * Recover the current position with a call to seekPop.
503 *
504 * @param {number} pos //TODO(JSDOC).
505 * @param {number=} opt_seekStart //TODO(JSDOC).
443 */ 506 */
444 ByteReader.prototype.pushSeek = function(pos, opt_seekStart) { 507 ByteReader.prototype.pushSeek = function(pos, opt_seekStart) {
445 var oldPos = this.pos_; 508 var oldPos = this.pos_;
446 this.seek(pos, opt_seekStart); 509 this.seek(pos, opt_seekStart);
447 // Alter the seekStack_ after the call to seek(), in case it throws. 510 // Alter the seekStack_ after the call to seek(), in case it throws.
448 this.seekStack_.push(oldPos); 511 this.seekStack_.push(oldPos);
449 }; 512 };
450 513
451 /** 514 /**
452 * Undo a previous seekPush. 515 * Undo a previous seekPush.
453 */ 516 */
454 ByteReader.prototype.popSeek = function() { 517 ByteReader.prototype.popSeek = function() {
455 this.seek(this.seekStack_.pop()); 518 this.seek(this.seekStack_.pop());
456 }; 519 };
457 520
458 /** 521 /**
459 * Return the current read position. 522 * Return the current read position.
460 * @return {number} //TODO(JSDOC). 523 * @return {number} //TODO(JSDOC).
461 */ 524 */
462 ByteReader.prototype.tell = function() { 525 ByteReader.prototype.tell = function() {
463 return this.pos_; 526 return this.pos_;
464 }; 527 };
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/resources/file_manager/js/metadata/function_parallel.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698