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

Unified Diff: chrome/browser/resources/file_manager/js/file_type.js

Issue 9478014: Make CrOS file manager determine .tar.gz/.tar.bz2 file type properly. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 {};
};
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698