OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 /** | 5 /** |
6 * @param {!MessagePort=} opt_messagePort Message port overriding the default | 6 * @param {!MessagePort=} opt_messagePort Message port overriding the default |
7 * worker port. | 7 * worker port. |
8 * @extends {MetadataProvider} | 8 * @extends {MetadataProvider} |
9 * @constructor | 9 * @constructor |
10 * @struct | 10 * @struct |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
58 'ifd', | 58 'ifd', |
59 'imageHeight', | 59 'imageHeight', |
60 'imageWidth', | 60 'imageWidth', |
61 'mediaAlbum', | 61 'mediaAlbum', |
62 'mediaArtist', | 62 'mediaArtist', |
63 'mediaDuration', | 63 'mediaDuration', |
64 'mediaGenre', | 64 'mediaGenre', |
65 'mediaMimeType', | 65 'mediaMimeType', |
66 'mediaTitle', | 66 'mediaTitle', |
67 'mediaTrack', | 67 'mediaTrack', |
| 68 'mediaYearRecorded', |
68 ]; | 69 ]; |
69 | 70 |
70 /** | 71 /** |
71 * Path of a worker script. | 72 * Path of a worker script. |
72 * @public {string} | 73 * @public {string} |
73 */ | 74 */ |
74 ContentMetadataProvider.WORKER_SCRIPT = | 75 ContentMetadataProvider.WORKER_SCRIPT = |
75 'chrome-extension://hhaomjibdihmijegdhdafkllkbggdgoj/' + | 76 'chrome-extension://hhaomjibdihmijegdhdafkllkbggdgoj/' + |
76 'foreground/js/metadata/metadata_dispatcher.js'; | 77 'foreground/js/metadata/metadata_dispatcher.js'; |
77 | 78 |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 * the entry. | 156 * the entry. |
156 * @private | 157 * @private |
157 */ | 158 */ |
158 ContentMetadataProvider.prototype.getFromMediaGalleries_ = | 159 ContentMetadataProvider.prototype.getFromMediaGalleries_ = |
159 function(entry, names) { | 160 function(entry, names) { |
160 var self = this; | 161 var self = this; |
161 return new Promise(function(resolve, reject) { | 162 return new Promise(function(resolve, reject) { |
162 entry.file(function(blob) { | 163 entry.file(function(blob) { |
163 var metadataType = 'mimeTypeOnly'; | 164 var metadataType = 'mimeTypeOnly'; |
164 if (names.indexOf('mediaArtist') !== -1 || | 165 if (names.indexOf('mediaArtist') !== -1 || |
165 names.indexOf('mediaTitle') !== -1) { | 166 names.indexOf('mediaTitle') !== -1 || |
| 167 names.indexOf('mediaTrack') !== -1 || |
| 168 names.indexOf('mediaYearRecorded') !== -1) { |
166 metadataType = 'mimeTypeAndTags'; | 169 metadataType = 'mimeTypeAndTags'; |
167 } | 170 } |
168 if (names.indexOf('contentThumbnailUrl') !== -1) { | 171 if (names.indexOf('contentThumbnailUrl') !== -1) { |
169 metadataType = 'all'; | 172 metadataType = 'all'; |
170 } | 173 } |
171 chrome.mediaGalleries.getMetadata(blob, {metadataType: metadataType}, | 174 chrome.mediaGalleries.getMetadata(blob, {metadataType: metadataType}, |
172 function(metadata) { | 175 function(metadata) { |
173 if (chrome.runtime.lastError) { | 176 if (chrome.runtime.lastError) { |
174 resolve(self.createError_(entry.toURL(), | 177 resolve(self.createError_(entry.toURL(), |
175 'resolving metadata', | 178 'resolving metadata', |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
307 if (metadata.rotation) { | 310 if (metadata.rotation) { |
308 item.contentImageTransform = item.contentThumbnailTransform = trans; | 311 item.contentImageTransform = item.contentThumbnailTransform = trans; |
309 } | 312 } |
310 item.imageHeight = metadata['height']; | 313 item.imageHeight = metadata['height']; |
311 item.imageWidth = metadata['width']; | 314 item.imageWidth = metadata['width']; |
312 item.mediaAlbum = metadata['album']; | 315 item.mediaAlbum = metadata['album']; |
313 item.mediaArtist = metadata['artist']; | 316 item.mediaArtist = metadata['artist']; |
314 item.mediaDuration = metadata['duration']; | 317 item.mediaDuration = metadata['duration']; |
315 item.mediaGenre = metadata['genre']; | 318 item.mediaGenre = metadata['genre']; |
316 item.mediaTitle = metadata['title']; | 319 item.mediaTitle = metadata['title']; |
317 item.mediaTrack = metadata['track']; | 320 if (metadata['track']) { |
| 321 item.mediaTrack = '' + metadata['track']; |
| 322 } |
| 323 if (metadata.rawTags) { |
| 324 metadata.rawTags.forEach(function(entry) { |
| 325 if (entry.type === 'mp3') { |
| 326 if (entry.tags['date']) { |
| 327 item.mediaYearRecorded = entry.tags['date']; |
| 328 } |
| 329 // It is possible that metadata['track'] is undefined but this is |
| 330 // defined. |
| 331 if (entry.tags['track']) { |
| 332 item.mediaTrack = entry.tags['track']; |
| 333 } |
| 334 } |
| 335 }); |
| 336 } |
318 if (metadata.attachedImages && metadata.attachedImages.length > 0) { | 337 if (metadata.attachedImages && metadata.attachedImages.length > 0) { |
319 var reader = new FileReader(); | 338 var reader = new FileReader(); |
320 reader.onload = function(e) { | 339 reader.onload = function(e) { |
321 item.contentThumbnailUrl = e.target.result; | 340 item.contentThumbnailUrl = e.target.result; |
322 resolve(item); | 341 resolve(item); |
323 }; | 342 }; |
324 reader.onerror = function(e) { | 343 reader.onerror = function(e) { |
325 resolve(this.createError_(entry.toURL(), 'Reading a thumbnail image', | 344 resolve(this.createError_(entry.toURL(), 'Reading a thumbnail image', |
326 reader.error.toString())); | 345 reader.error.toString())); |
327 }.bind(this); | 346 }.bind(this); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
371 */ | 390 */ |
372 this.step = step; | 391 this.step = step; |
373 | 392 |
374 /** | 393 /** |
375 * @public {string} | 394 * @public {string} |
376 */ | 395 */ |
377 this.errorDescription = errorDescription; | 396 this.errorDescription = errorDescription; |
378 }; | 397 }; |
379 | 398 |
380 ContentMetadataProvider.Error.prototype.__proto__ = Error.prototype; | 399 ContentMetadataProvider.Error.prototype.__proto__ = Error.prototype; |
OLD | NEW |