Feat: update MIME types

Notably, this allows recognizing ZSTD files.

Fixes: #812
This commit is contained in:
Hai Zhang 2024-04-16 01:54:52 -07:00
parent 28526514f2
commit 02e689dccf
7 changed files with 3149 additions and 211 deletions

View File

@ -83,8 +83,11 @@
<data android:mimeType="application/java-archive" />
<data android:mimeType="application/rar" />
<data android:mimeType="application/zip" />
<data android:mimeType="application/zstd" />
<data android:mimeType="application/vnd.android.package-archive" />
<data android:mimeType="application/vnd.debian.binary-package" />
<data android:mimeType="application/vnd.ms-cab-compressed" />
<data android:mimeType="application/vnd.rar" />
<data android:mimeType="application/x-bzip2" />
<data android:mimeType="application/x-compress" />
<data android:mimeType="application/x-cpio" />
@ -326,6 +329,7 @@
<data android:mimeType="application/x-sh" />
<data android:mimeType="application/x-shellscript" />
<data android:mimeType="application/xml" />
<data android:mimeType="application/yaml" />
<data android:mimeType="text/*" />
</intent-filter>
</activity>

View File

@ -30,10 +30,8 @@ fun MimeType.Companion.guessFromExtension(extension: String): MimeType {
// @see /usr/share/mime/packages/freedesktop.org.xml
private val extensionToMimeTypeOverrideMap = mapOf(
// Fixes
"cab" to "application/vnd.ms-cab-compressed", // Was "application/x-cab"
"csv" to "text/csv", // Was "text/comma-separated-values"
"sh" to "application/x-sh", // Was "text/x-sh"
"otf" to "font/otf", // Was "font/ttf"
// Addition
"bz" to "application/x-bzip",
"bz2" to "application/x-bzip2",
@ -41,15 +39,12 @@ private val extensionToMimeTypeOverrideMap = mapOf(
"lzma" to "application/x-lzma",
"p7b" to "application/x-pkcs7-certificates",
"spc" to "application/x-pkcs7-certificates", // Clashes with "chemical/x-galactic-spc"
"p7c" to "application/pkcs7-mime",
"p7s" to "application/pkcs7-signature",
"ts" to "application/typescript", // Clashes with "video/mp2ts"
"py3" to "text/x-python",
"py3x" to "text/x-python",
"pyx" to "text/x-python",
"wsgi" to "text/x-python",
"yaml" to "text/x-yaml",
"yml" to "text/x-yaml",
"yml" to "application/yaml",
"asm" to "text/x-asm",
"s" to "text/x-asm",
"cs" to "text/x-csharp",
@ -95,6 +90,7 @@ private val mimeTypeToIntentMimeTypeMap = listOf(
"application/javascript" to "text/javascript",
"application/json" to "text/json",
"application/typescript" to "text/typescript",
"application/yaml" to "text/x-yaml",
"application/x-sh" to "text/x-shellscript",
"application/x-shellscript" to "text/x-shellscript",
// Allows matching generic

View File

@ -48,9 +48,10 @@ private val mimeTypeToIconMap = mapOf(
// Not in IANA list, but Mozilla and Wikipedia say so.
"application/java-archive" to MimeTypeIcon.ARCHIVE,
"application/mac-binhex40" to MimeTypeIcon.ARCHIVE,
// Not in IANA list, but AOSP MimeUtils says so.
// Not in IANA list, but AOSP MimeUtils used to say so.
"application/rar" to MimeTypeIcon.ARCHIVE,
"application/zip" to MimeTypeIcon.ARCHIVE,
"application/zstd" to MimeTypeIcon.ARCHIVE,
"application/vnd.debian.binary-package" to MimeTypeIcon.ARCHIVE,
"application/vnd.ms-cab-compressed" to MimeTypeIcon.ARCHIVE,
"application/vnd.rar" to MimeTypeIcon.ARCHIVE,
@ -97,6 +98,7 @@ private val mimeTypeToIconMap = mapOf(
"application/json" to MimeTypeIcon.CODE,
"application/typescript" to MimeTypeIcon.CODE,
"application/xml" to MimeTypeIcon.CODE,
"application/yaml" to MimeTypeIcon.CODE,
"application/x-csh" to MimeTypeIcon.CODE,
"application/x-ecmascript" to MimeTypeIcon.CODE,
"application/x-javascript" to MimeTypeIcon.CODE,
@ -141,6 +143,7 @@ private val mimeTypeToIconMap = mapOf(
"inode/directory" to MimeTypeIcon.DIRECTORY,
MimeType.DIRECTORY.value to MimeTypeIcon.DIRECTORY,
"application/rtf" to MimeTypeIcon.DOCUMENT,
"application/vnd.kde.kword" to MimeTypeIcon.DOCUMENT,
"application/vnd.oasis.opendocument.text" to MimeTypeIcon.DOCUMENT,
"application/vnd.oasis.opendocument.text-master" to MimeTypeIcon.DOCUMENT,
"application/vnd.oasis.opendocument.text-template" to MimeTypeIcon.DOCUMENT,
@ -155,6 +158,7 @@ private val mimeTypeToIconMap = mapOf(
"text/rtf" to MimeTypeIcon.DOCUMENT,
"application/epub+zip" to MimeTypeIcon.EBOOK,
"application/vnd.amazon.ebook" to MimeTypeIcon.EBOOK,
"application/vnd.amazon.mobi8-ebook" to MimeTypeIcon.EBOOK,
"application/x-cbr" to MimeTypeIcon.EBOOK,
"application/x-cbz" to MimeTypeIcon.EBOOK,
"application/x-ibooks+zip" to MimeTypeIcon.EBOOK,
@ -179,18 +183,21 @@ private val mimeTypeToIconMap = mapOf(
"application/vnd.sun.xml.draw.template" to MimeTypeIcon.IMAGE,
"application/vnd.visio" to MimeTypeIcon.IMAGE,
"application/pdf" to MimeTypeIcon.PDF,
"application/vnd.kde.kpresenter" to MimeTypeIcon.PRESENTATION,
"application/vnd.oasis.opendocument.presentation" to MimeTypeIcon.PRESENTATION,
"application/vnd.oasis.opendocument.presentation-template" to MimeTypeIcon.PRESENTATION,
"application/vnd.stardivision.impress" to MimeTypeIcon.PRESENTATION,
"application/vnd.sun.xml.impress" to MimeTypeIcon.PRESENTATION,
"application/vnd.sun.xml.impress.template" to MimeTypeIcon.PRESENTATION,
"application/x-kpresenter" to MimeTypeIcon.PRESENTATION,
"application/vnd.kde.kspread" to MimeTypeIcon.SPREADSHEET,
"application/vnd.oasis.opendocument.spreadsheet" to MimeTypeIcon.SPREADSHEET,
"application/vnd.oasis.opendocument.spreadsheet-template" to MimeTypeIcon.SPREADSHEET,
"application/vnd.stardivision.calc" to MimeTypeIcon.SPREADSHEET,
"application/vnd.sun.xml.calc" to MimeTypeIcon.SPREADSHEET,
"application/vnd.sun.xml.calc.template" to MimeTypeIcon.SPREADSHEET,
"application/x-kspread" to MimeTypeIcon.SPREADSHEET,
"application/vnd.adobe.flash.movie" to MimeTypeIcon.VIDEO,
"application/x-quicktimeplayer" to MimeTypeIcon.VIDEO,
"application/x-shockwave-flash" to MimeTypeIcon.VIDEO,
"application/msword" to MimeTypeIcon.WORD,

View File

@ -16,8 +16,11 @@ private val supportedArchiveMimeTypes = mutableListOf(
"application/java-archive",
"application/rar",
"application/zip",
"application/zstd",
"application/vnd.android.package-archive",
"application/vnd.debian.binary-package",
"application/vnd.ms-cab-compressed",
"application/vnd.rar",
"application/x-7z-compressed",
"application/x-bzip2",
"application/x-cab",

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff