Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ba70ea14 authored by Ivan Chiang's avatar Ivan Chiang
Browse files

Add isDocumentType in MediaFile and fix test case fail

Bug: 138173113
Fix: 147080627
Test: atest MediaFileTest
Change-Id: Iebb8aaf0019f29a37881ed43877047b1e8c2efff
parent fb342fcf
Loading
Loading
Loading
Loading
+78 −0
Original line number Diff line number Diff line
@@ -200,6 +200,84 @@ public class MediaFile {
        return null;
    }

    /**
     * Check whether the mime type is document or not.
     * @param mimeType the mime type to check
     * @return true, if the mimeType is matched. Otherwise, false.
     */
    public static boolean isDocumentMimeType(@Nullable String mimeType) {
        if (mimeType == null) {
            return false;
        }

        final String normalizedMimeType = normalizeMimeType(mimeType);
        if (normalizedMimeType.startsWith("text/")) {
            return true;
        }

        switch (normalizedMimeType) {
            case "application/epub+zip":
            case "application/msword":
            case "application/pdf":
            case "application/rtf":
            case "application/vnd.ms-excel":
            case "application/vnd.ms-excel.addin.macroEnabled.12":
            case "application/vnd.ms-excel.sheet.binary.macroEnabled.12":
            case "application/vnd.ms-excel.sheet.macroEnabled.12":
            case "application/vnd.ms-excel.template.macroEnabled.12":
            case "application/vnd.ms-powerpoint":
            case "application/vnd.ms-powerpoint.addin.macroEnabled.12":
            case "application/vnd.ms-powerpoint.presentation.macroEnabled.12":
            case "application/vnd.ms-powerpoint.slideshow.macroEnabled.12":
            case "application/vnd.ms-powerpoint.template.macroEnabled.12":
            case "application/vnd.ms-word.document.macroEnabled.12":
            case "application/vnd.ms-word.template.macroEnabled.12":
            case "application/vnd.oasis.opendocument.chart":
            case "application/vnd.oasis.opendocument.database":
            case "application/vnd.oasis.opendocument.formula":
            case "application/vnd.oasis.opendocument.graphics":
            case "application/vnd.oasis.opendocument.graphics-template":
            case "application/vnd.oasis.opendocument.presentation":
            case "application/vnd.oasis.opendocument.presentation-template":
            case "application/vnd.oasis.opendocument.spreadsheet":
            case "application/vnd.oasis.opendocument.spreadsheet-template":
            case "application/vnd.oasis.opendocument.text":
            case "application/vnd.oasis.opendocument.text-master":
            case "application/vnd.oasis.opendocument.text-template":
            case "application/vnd.oasis.opendocument.text-web":
            case "application/vnd.openxmlformats-officedocument.presentationml.presentation":
            case "application/vnd.openxmlformats-officedocument.presentationml.slideshow":
            case "application/vnd.openxmlformats-officedocument.presentationml.template":
            case "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":
            case "application/vnd.openxmlformats-officedocument.spreadsheetml.template":
            case "application/vnd.openxmlformats-officedocument.wordprocessingml.document":
            case "application/vnd.openxmlformats-officedocument.wordprocessingml.template":
            case "application/vnd.stardivision.calc":
            case "application/vnd.stardivision.chart":
            case "application/vnd.stardivision.draw":
            case "application/vnd.stardivision.impress":
            case "application/vnd.stardivision.impress-packed":
            case "application/vnd.stardivision.mail":
            case "application/vnd.stardivision.math":
            case "application/vnd.stardivision.writer":
            case "application/vnd.stardivision.writer-global":
            case "application/vnd.sun.xml.calc":
            case "application/vnd.sun.xml.calc.template":
            case "application/vnd.sun.xml.draw":
            case "application/vnd.sun.xml.draw.template":
            case "application/vnd.sun.xml.impress":
            case "application/vnd.sun.xml.impress.template":
            case "application/vnd.sun.xml.math":
            case "application/vnd.sun.xml.writer":
            case "application/vnd.sun.xml.writer.global":
            case "application/vnd.sun.xml.writer.template":
            case "application/x-mspublisher":
                return true;
            default:
                return false;
        }
    }

    public static boolean isExifMimeType(@Nullable String mimeType) {
        // For simplicity, assume that all image files might have EXIF data
        return isImageMimeType(mimeType);
+10 −1
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.mediaframeworktest.unit;
import static android.media.MediaFile.getFormatCode;
import static android.media.MediaFile.getMimeType;
import static android.media.MediaFile.isAudioMimeType;
import static android.media.MediaFile.isDocumentMimeType;
import static android.media.MediaFile.isImageMimeType;
import static android.media.MediaFile.isPlayListMimeType;
import static android.media.MediaFile.isVideoMimeType;
@@ -88,7 +89,15 @@ public class MediaFileTest {
        assertTrue(isPlayListMimeType(mimeMap.guessMimeTypeFromExtension("wpl")));
        assertTrue(isPlayListMimeType(mimeMap.guessMimeTypeFromExtension("m3u")));
        assertTrue(isPlayListMimeType(mimeMap.guessMimeTypeFromExtension("m3u8")));
        assertTrue(isPlayListMimeType(mimeMap.guessMimeTypeFromExtension("asf")));
    }

    @Test
    public void testDocument() throws Exception {
        assertTrue(isDocumentMimeType("text/csv"));
        assertTrue(isDocumentMimeType("text/plain"));
        assertTrue(isDocumentMimeType("application/pdf"));
        assertTrue(isDocumentMimeType("application/msword"));
        assertFalse(isDocumentMimeType("audio/mpeg"));
    }

    @Test