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

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

Issue 12262003: [Cleanup] Files.app: Adds missing periods at the end of the descriptions. (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
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 importScripts('function_sequence.js'); 5 importScripts('function_sequence.js');
6 importScripts('function_parallel.js'); 6 importScripts('function_parallel.js');
7 7
8 function Id3Parser(parent) { 8 function Id3Parser(parent) {
9 MetadataParser.call(this, parent, 'id3', /\.(mp3)$/i); 9 MetadataParser.call(this, parent, 'id3', /\.(mp3)$/i);
10 } 10 }
11 11
12 Id3Parser.prototype = {__proto__: MetadataParser.prototype}; 12 Id3Parser.prototype = {__proto__: MetadataParser.prototype};
13 13
14 /** 14 /**
15 * Reads synchsafe integer. 15 * Reads synchsafe integer.
16 * 'SynchSafe' term is taken from id3 documentation. 16 * 'SynchSafe' term is taken from id3 documentation.
17 * 17 *
18 * @param {ByteReader} reader - reader to use 18 * @param {ByteReader} reader - reader to use.
19 * @param {int} length - bytes to read 19 * @param {int} length - bytes to read.
20 * @return {int} 20 * @return {int}
21 */ 21 */
22 Id3Parser.readSynchSafe_ = function(reader, length) { 22 Id3Parser.readSynchSafe_ = function(reader, length) {
23 var rv = 0; 23 var rv = 0;
24 24
25 switch (length) { 25 switch (length) {
26 case 4: 26 case 4:
27 rv = reader.readScalar(1, false) << 21; 27 rv = reader.readScalar(1, false) << 21;
28 case 3: 28 case 3:
29 rv |= reader.readScalar(1, false) << 14; 29 rv |= reader.readScalar(1, false) << 14;
30 case 2: 30 case 2:
31 rv |= reader.readScalar(1, false) << 7; 31 rv |= reader.readScalar(1, false) << 7;
32 case 1: 32 case 1:
33 rv |= reader.readScalar(1, false); 33 rv |= reader.readScalar(1, false);
34 } 34 }
35 35
36 return rv; 36 return rv;
37 }; 37 };
38 38
39 /** 39 /**
40 * Reads 3bytes integer. 40 * Reads 3bytes integer.
41 * 41 *
42 * @param {ByteReader} reader - reader to use 42 * @param {ByteReader} reader - reader to use.
43 * @return {int} 43 * @return {int}
44 */ 44 */
45 Id3Parser.readUInt24_ = function(reader) { 45 Id3Parser.readUInt24_ = function(reader) {
46 return reader.readScalar(2, false) << 16 | reader.readScalar(1, false); 46 return reader.readScalar(2, false) << 16 | reader.readScalar(1, false);
47 }; 47 };
48 48
49 /** 49 /**
50 * Reads string from reader with specified encoding 50 * Reads string from reader with specified encoding
51 * 51 *
52 * @param {ByteReader} reader reader to use 52 * @param {ByteReader} reader reader to use.
53 * @param {int} encoding string encoding. 53 * @param {int} encoding string encoding.
54 * @param {int} size maximum string size. Actual result may be shorter. 54 * @param {int} size maximum string size. Actual result may be shorter.
55 * 55 *
56 */ 56 */
57 Id3Parser.prototype.readString_ = function(reader, encoding, size) { 57 Id3Parser.prototype.readString_ = function(reader, encoding, size) {
58 switch (encoding) { 58 switch (encoding) {
59 case Id3Parser.v2.ENCODING.ISO_8859_1: 59 case Id3Parser.v2.ENCODING.ISO_8859_1:
60 return reader.readNullTerminatedString(size); 60 return reader.readNullTerminatedString(size);
61 61
62 case Id3Parser.v2.ENCODING.UTF_16: 62 case Id3Parser.v2.ENCODING.UTF_16:
(...skipping 10 matching lines...) Expand all
73 default: { 73 default: {
74 this.log('Unsupported encoding in ID3 tag: ' + encoding); 74 this.log('Unsupported encoding in ID3 tag: ' + encoding);
75 return ''; 75 return '';
76 } 76 }
77 } 77 }
78 }; 78 };
79 79
80 /** 80 /**
81 * Reads text frame from reader. 81 * Reads text frame from reader.
82 * 82 *
83 * @param {ByteReader} reader reader to use 83 * @param {ByteReader} reader reader to use.
84 * @param {int} majorVersion major id3 version to use 84 * @param {int} majorVersion major id3 version to use.
85 * @param {Object} frame frame so store data at 85 * @param {Object} frame frame so store data at.
86 * @param {int} end frame end position in reader 86 * @param {int} end frame end position in reader.
87 */ 87 */
88 Id3Parser.prototype.readTextFrame_ = function(reader, 88 Id3Parser.prototype.readTextFrame_ = function(reader,
89 majorVersion, 89 majorVersion,
90 frame, 90 frame,
91 end) { 91 end) {
92 frame.encoding = reader.readScalar(1, false, end); 92 frame.encoding = reader.readScalar(1, false, end);
93 frame.value = this.readString_(reader, frame.encoding, end - reader.tell()); 93 frame.value = this.readString_(reader, frame.encoding, end - reader.tell());
94 }; 94 };
95 95
96 /** 96 /**
97 * Reads user defined text frame from reader. 97 * Reads user defined text frame from reader.
98 * 98 *
99 * @param {ByteReader} reader reader to use 99 * @param {ByteReader} reader reader to use.
100 * @param {int} majorVersion major id3 version to use 100 * @param {int} majorVersion major id3 version to use.
101 * @param {Object} frame frame so store data at 101 * @param {Object} frame frame so store data at.
102 * @param {int} end frame end position in reader 102 * @param {int} end frame end position in reader.
103 */ 103 */
104 Id3Parser.prototype.readUserDefinedTextFrame_ = function(reader, 104 Id3Parser.prototype.readUserDefinedTextFrame_ = function(reader,
105 majorVersion, 105 majorVersion,
106 frame, 106 frame,
107 end) { 107 end) {
108 frame.encoding = reader.readScalar(1, false, end); 108 frame.encoding = reader.readScalar(1, false, end);
109 109
110 frame.description = this.readString_( 110 frame.description = this.readString_(
111 reader, 111 reader,
112 frame.encoding, 112 frame.encoding,
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 if (frame.mime == '-->') { 147 if (frame.mime == '-->') {
148 frame.imageUrl = reader.readNullTerminatedString(end - reader.tell()); 148 frame.imageUrl = reader.readNullTerminatedString(end - reader.tell());
149 } else { 149 } else {
150 frame.imageUrl = reader.readImage(end - reader.tell()); 150 frame.imageUrl = reader.readImage(end - reader.tell());
151 } 151 }
152 }; 152 };
153 153
154 /** 154 /**
155 * Reads string from reader with specified encoding 155 * Reads string from reader with specified encoding
156 * 156 *
157 * @param {ByteReader} reader reader to use 157 * @param {ByteReader} reader reader to use.
158 * @return {Object} frame read 158 * @return {Object} frame read.
159 */ 159 */
160 Id3Parser.prototype.readFrame_ = function(reader, majorVersion) { 160 Id3Parser.prototype.readFrame_ = function(reader, majorVersion) {
161 if (reader.eof()) 161 if (reader.eof())
162 return null; 162 return null;
163 163
164 var frame = {}; 164 var frame = {};
165 165
166 reader.pushSeek(reader.tell(), ByteReader.SEEK_BEG); 166 reader.pushSeek(reader.tell(), ByteReader.SEEK_BEG);
167 167
168 var position = reader.tell(); 168 var position = reader.tell();
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
276 var id3v2Parser = new FunctionSequence( 276 var id3v2Parser = new FunctionSequence(
277 'id3v2parser', 277 'id3v2parser',
278 [ 278 [
279 function readHead(file) { 279 function readHead(file) {
280 util.readFileBytes(file, 0, 10, this.nextStep, this.onError, 280 util.readFileBytes(file, 0, 10, this.nextStep, this.onError,
281 this); 281 this);
282 }, 282 },
283 283
284 /** 284 /**
285 * Check if passed array of 10 bytes contains ID3 header. 285 * Check if passed array of 10 bytes contains ID3 header.
286 * @param file to check and continue reading if ID3 metadata found 286 * @param file to check and continue reading if ID3 metadata found.
287 * @param {ByteReader} reader reader to fill with stream bytes. 287 * @param {ByteReader} reader reader to fill with stream bytes.
288 */ 288 */
289 function checkId3v2(file, reader) { 289 function checkId3v2(file, reader) {
290 if (reader.readString(3) == 'ID3') { 290 if (reader.readString(3) == 'ID3') {
291 this.logger.vlog('id3v2 found'); 291 this.logger.vlog('id3v2 found');
292 var id3v2 = metadata.id3v2 = {}; 292 var id3v2 = metadata.id3v2 = {};
293 id3v2.major = reader.readScalar(1, false); 293 id3v2.major = reader.readScalar(1, false);
294 id3v2.minor = reader.readScalar(1, false); 294 id3v2.minor = reader.readScalar(1, false);
295 id3v2.flags = reader.readScalar(1, false); 295 id3v2.flags = reader.readScalar(1, false);
296 id3v2.size = Id3Parser.readSynchSafe_(reader, 4); 296 id3v2.size = Id3Parser.readSynchSafe_(reader, 4);
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after
670 TYER: 'ID3_YEAR', 670 TYER: 'ID3_YEAR',
671 WCOP: 'ID3_COPYRIGHT', 671 WCOP: 'ID3_COPYRIGHT',
672 WOAF: 'ID3_OFFICIAL_AUDIO_FILE_WEBPAGE', 672 WOAF: 'ID3_OFFICIAL_AUDIO_FILE_WEBPAGE',
673 WOAR: 'ID3_OFFICIAL_ARTIST', 673 WOAR: 'ID3_OFFICIAL_ARTIST',
674 WOAS: 'ID3_OFFICIAL_AUDIO_SOURCE_WEBPAGE', 674 WOAS: 'ID3_OFFICIAL_AUDIO_SOURCE_WEBPAGE',
675 WPUB: 'ID3_PUBLISHERS_OFFICIAL_WEBPAGE' 675 WPUB: 'ID3_PUBLISHERS_OFFICIAL_WEBPAGE'
676 } 676 }
677 }; 677 };
678 678
679 MetadataDispatcher.registerParserClass(Id3Parser); 679 MetadataDispatcher.registerParserClass(Id3Parser);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698