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

Commit f8cb8930 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add isDocumentType in MediaFile and fix test case fail"

parents d59b90ac ba70ea14
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