summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/download/download_manager_unittest.cc8
-rw-r--r--net/base/platform_mime_util_linux.cc29
2 files changed, 33 insertions, 4 deletions
diff --git a/chrome/browser/download/download_manager_unittest.cc b/chrome/browser/download/download_manager_unittest.cc
index 91e0b1c..dd0cb46 100644
--- a/chrome/browser/download/download_manager_unittest.cc
+++ b/chrome/browser/download/download_manager_unittest.cc
@@ -24,10 +24,10 @@
#define TXT_EXT L".txt"
#define TAR_EXT L".tar"
#else
-#define JPEG_EXT L""
-#define HTML_EXT L""
-#define TXT_EXT L""
-#define TAR_EXT L""
+#define JPEG_EXT L".jpg"
+#define HTML_EXT L".html"
+#define TXT_EXT L".txt"
+#define TAR_EXT L".tar"
#endif
class DownloadManagerTest : public testing::Test {
diff --git a/net/base/platform_mime_util_linux.cc b/net/base/platform_mime_util_linux.cc
index 7debe35..b39fe27 100644
--- a/net/base/platform_mime_util_linux.cc
+++ b/net/base/platform_mime_util_linux.cc
@@ -38,8 +38,37 @@ bool PlatformMimeUtil::GetPlatformMimeTypeFromExtension(
return true;
}
+struct MimeToExt {
+ const char* mime_type;
+ const char* ext;
+};
+
+const struct MimeToExt mime_type_ext_map[] = {
+ {"image/jpeg", "jpg"},
+ {"image/png", "png"},
+ {"image/gif", "gif"},
+ {"text/html", "html"},
+ {"video/mp4", "mp4"},
+ {"video/mpeg", "mpg"},
+ {"audio/mpeg", "mp3"},
+ {"text/plain", "txt"},
+ {"application/pdf", "pdf"},
+ {"application/x-tar", "tar"}
+};
+
bool PlatformMimeUtil::GetPreferredExtensionForMimeType(
const std::string& mime_type, FilePath::StringType* ext) const {
+
+ for (size_t x = 0;
+ x < (sizeof(mime_type_ext_map) / sizeof(MimeToExt));
+ x++) {
+ if (mime_type_ext_map[x].mime_type == mime_type) {
+ *ext = mime_type_ext_map[x].ext;
+ return true;
+ }
+ }
+
+ // TODO(dhg): Fix this the right way by implementing whats said below.
// Unlike GetPlatformMimeTypeFromExtension, this method doesn't have a
// default list that it uses, but for now we are also returning false since
// this doesn't really matter as much under Linux.