Index: chrome/browser/resources/file_manager/js/file_type.js |
=================================================================== |
--- chrome/browser/resources/file_manager/js/file_type.js (revision 123815) |
+++ chrome/browser/resources/file_manager/js/file_type.js (working copy) |
@@ -7,63 +7,76 @@ |
*/ |
var FileType = {}; |
-FileType.types = { |
+FileType.types = [ |
// Images |
- 'jpeg': {type: 'image', name: 'IMAGE_FILE_TYPE', subtype: 'JPEG'}, |
- 'jpg': {type: 'image', name: 'IMAGE_FILE_TYPE', subtype: 'JPEG'}, |
- 'bmp': {type: 'image', name: 'IMAGE_FILE_TYPE', subtype: 'BMP'}, |
- 'gif': {type: 'image', name: 'IMAGE_FILE_TYPE', subtype: 'GIF'}, |
- 'ico': {type: 'image', name: 'IMAGE_FILE_TYPE', subtype: 'ICO'}, |
- 'png': {type: 'image', name: 'IMAGE_FILE_TYPE', subtype: 'PNG'}, |
- 'webp': {type: 'image', name: 'IMAGE_FILE_TYPE', subtype: 'WebP'}, |
+ {type: 'image', name: 'IMAGE_FILE_TYPE', subtype: 'JPEG', |
+ pattern: /\.jpe?g$/i}, |
+ {type: 'image', name: 'IMAGE_FILE_TYPE', subtype: 'BMP', |
+ pattern: /\.bmp$/i}, |
+ {type: 'image', name: 'IMAGE_FILE_TYPE', subtype: 'GIF', |
+ pattern: /\.gif$/i}, |
+ {type: 'image', name: 'IMAGE_FILE_TYPE', subtype: 'ICO', |
+ pattern: /\.ico$/i}, |
+ {type: 'image', name: 'IMAGE_FILE_TYPE', subtype: 'PNG', |
+ pattern: /\.png$/i}, |
+ {type: 'image', name: 'IMAGE_FILE_TYPE', subtype: 'WebP', |
+ pattern: /\.webp$/i}, |
// Video |
- '3gp': {type: 'video', name: 'VIDEO_FILE_TYPE', subtype: '3GP'}, |
- 'avi': {type: 'video', name: 'VIDEO_FILE_TYPE', subtype: 'AVI'}, |
- 'mov': {type: 'video', name: 'VIDEO_FILE_TYPE', subtype: 'QuickTime'}, |
- 'mp4': {type: 'video', name: 'VIDEO_FILE_TYPE', subtype: 'MPEG'}, |
- 'm4v': {type: 'video', name: 'VIDEO_FILE_TYPE', subtype: 'MPEG'}, |
- 'mpg': {type: 'video', name: 'VIDEO_FILE_TYPE', subtype: 'MPEG'}, |
- 'mpeg': {type: 'video', name: 'VIDEO_FILE_TYPE', subtype: 'MPEG'}, |
- 'mpg4': {type: 'video', name: 'VIDEO_FILE_TYPE', subtype: 'MPEG'}, |
- 'mpeg4': {type: 'video', name: 'VIDEO_FILE_TYPE', subtype: 'MPEG'}, |
- 'ogm': {type: 'video', name: 'VIDEO_FILE_TYPE', subtype: 'OGG'}, |
- 'ogv': {type: 'video', name: 'VIDEO_FILE_TYPE', subtype: 'OGG'}, |
- 'ogx': {type: 'video', name: 'VIDEO_FILE_TYPE', subtype: 'OGG'}, |
- 'webm': {type: 'video', name: 'VIDEO_FILE_TYPE', subtype: 'WebM'}, |
+ {type: 'video', name: 'VIDEO_FILE_TYPE', subtype: '3GP', |
+ pattern: /\.3gp$/i}, |
+ {type: 'video', name: 'VIDEO_FILE_TYPE', subtype: 'AVI', |
+ pattern: /\.avi$/i}, |
+ {type: 'video', name: 'VIDEO_FILE_TYPE', subtype: 'QuickTime', |
+ pattern: /\.mov$/i}, |
+ {type: 'video', name: 'VIDEO_FILE_TYPE', subtype: 'MPEG', |
+ pattern: /\.m(p4|4v|pg|peg|pg4|peg4)$/i}, |
+ {type: 'video', name: 'VIDEO_FILE_TYPE', subtype: 'OGG', |
+ pattern: /\.og(m|v|x)$/i}, |
+ {type: 'video', name: 'VIDEO_FILE_TYPE', subtype: 'WebM', |
+ pattern: /\.webm$/i}, |
// Audio |
- 'flac': {type: 'audio', name: 'AUDIO_FILE_TYPE', subtype: 'FLAC'}, |
- 'mp3': {type: 'audio', name: 'AUDIO_FILE_TYPE', subtype: 'MP3'}, |
- 'm4a': {type: 'audio', name: 'AUDIO_FILE_TYPE', subtype: 'MPEG'}, |
- 'oga': {type: 'audio', name: 'AUDIO_FILE_TYPE', subtype: 'OGG'}, |
- 'ogg': {type: 'audio', name: 'AUDIO_FILE_TYPE', subtype: 'OGG'}, |
- 'wav': {type: 'audio', name: 'AUDIO_FILE_TYPE', subtype: 'WAV'}, |
+ {type: 'audio', name: 'AUDIO_FILE_TYPE', subtype: 'FLAC', |
+ pattern: /\.flac$/i}, |
+ {type: 'audio', name: 'AUDIO_FILE_TYPE', subtype: 'MP3', |
+ pattern: /\.mp3$/i}, |
+ {type: 'audio', name: 'AUDIO_FILE_TYPE', subtype: 'MPEG', |
+ pattern: /\.m4a$/i}, |
+ {type: 'audio', name: 'AUDIO_FILE_TYPE', subtype: 'OGG', |
+ pattern: /\.og(a|g)$/i}, |
+ {type: 'audio', name: 'AUDIO_FILE_TYPE', subtype: 'WAV', |
+ pattern: /\.wav$/i}, |
// Text |
- 'pod': {type: 'text', name: 'PLAIN_TEXT_FILE_TYPE', subtype: 'POD'}, |
- 'rst': {type: 'text', name: 'PLAIN_TEXT_FILE_TYPE', subtype: 'RST'}, |
- 'txt': {type: 'text', name: 'PLAIN_TEXT_FILE_TYPE', subtype: 'TXT'}, |
- 'log': {type: 'text', name: 'PLAIN_TEXT_FILE_TYPE', subtype: 'LOG'}, |
+ {type: 'text', name: 'PLAIN_TEXT_FILE_TYPE', subtype: 'POD', |
+ pattern: /\.pod$/i}, |
+ {type: 'text', name: 'PLAIN_TEXT_FILE_TYPE', subtype: 'RST', |
+ pattern: /\.rst$/i}, |
+ {type: 'text', name: 'PLAIN_TEXT_FILE_TYPE', subtype: 'TXT', |
+ pattern: /\.txt$/i}, |
+ {type: 'text', name: 'PLAIN_TEXT_FILE_TYPE', subtype: 'LOG', |
+ pattern: /\.log$/i}, |
+ // Archive |
+ {type: 'archive', name: 'ZIP_ARCHIVE_FILE_TYPE', subtype:'ZIP', |
+ pattern: /\.zip$/i}, |
+ {type: 'archive', name: 'RAR_ARCHIVE_FILE_TYPE', subtype:'RAR', |
+ pattern: /\.rar$/i}, |
+ {type: 'archive', name: 'TAR_ARCHIVE_FILE_TYPE', subtype:'TAR', |
+ pattern: /\.tar$/i}, |
+ {type: 'archive', name: 'TAR_BZIP2_ARCHIVE_FILE_TYPE', subtype:'TBZ2', |
+ pattern: /\.(tar.bz2|tbz|tbz2)$/i}, |
+ {type: 'archive', name: 'TAR_GZIP_ARCHIVE_FILE_TYPE', subtype:'TGZ', |
+ pattern: /\.(tar.|t)gz$/i}, |
+ |
// Others |
- 'zip': {type: 'archive', name: 'ZIP_ARCHIVE_FILE_TYPE'}, |
- 'rar': {type: 'archive', name: 'RAR_ARCHIVE_FILE_TYPE'}, |
- 'tar': {type: 'archive', name: 'TAR_ARCHIVE_FILE_TYPE'}, |
- 'tar.bz2': {type: 'archive', name: 'TAR_BZIP2_ARCHIVE_FILE_TYPE'}, |
- 'tbz': {type: 'archive', name: 'TAR_BZIP2_ARCHIVE_FILE_TYPE'}, |
- 'tbz2': {type: 'archive', name: 'TAR_BZIP2_ARCHIVE_FILE_TYPE'}, |
- 'tar.gz': {type: 'archive', name: 'TAR_GZIP_ARCHIVE_FILE_TYPE'}, |
- 'tgz': {type: 'archive', name: 'TAR_GZIP_ARCHIVE_FILE_TYPE'}, |
+ {type: 'text', icon: 'pdf', name: 'PDF_DOCUMENT_FILE_TYPE', subtype: 'PDF', |
+ pattern: /\.pdf$/i}, |
+ {type: 'text', icon: 'html', name: 'HTML_DOCUMENT_FILE_TYPE', subtype: 'HTML', |
+ pattern: /\.html?$/i} |
+]; |
- 'pdf': {type: 'text', icon: 'pdf', name: 'PDF_DOCUMENT_FILE_TYPE', |
- subtype: 'PDF'}, |
- 'html': {type: 'text', icon: 'html', name: 'HTML_DOCUMENT_FILE_TYPE', |
- subtype: 'HTML'}, |
- 'htm': {type: 'text', icon: 'html', name: 'HTML_DOCUMENT_FILE_TYPE', |
- subtype: 'HTML'} |
-}; |
- |
FileType.previewArt = { |
'audio': 'images/filetype_large_audio.png', |
'folder': 'images/filetype_large_folder.png', |
@@ -73,22 +86,18 @@ |
}; |
/** |
- * Extract extension from the file name and convert it to lower case. |
+ * Get the file type object that matches a given url. |
* |
* @param {string} url |
- * @return {string} |
+ * @return {Object} The matching file type object or an empty object. |
*/ |
-FileType.getFileExtension_ = function (url) { |
- var extIndex = url.lastIndexOf('.'); |
- if (extIndex < 0) |
- return ''; |
- return url.substr(extIndex + 1).toLowerCase(); |
-}; |
- |
FileType.getType = function(url) { |
- var extension = FileType.getFileExtension_(url); |
- if (extension in FileType.types) |
- return FileType.types[extension]; |
+ var types = FileType.types; |
+ for (var i = 0; i < types.length; i++) { |
+ if (types[i].pattern.test(url)) { |
+ return types[i]; |
+ } |
+ } |
return {}; |
}; |