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

Commit aece1c1b authored by Jean-Michel Trivi's avatar Jean-Michel Trivi Committed by Android Build Coastguard Worker
Browse files

RingtoneManager: allow video ringtone URI

When checking the MIME type for the default ringtone, also
allow it to refer to video content.

Bug: 205837340
Test: see POC + atest android.media.audio.cts.RingtoneManagerTest
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:afa5db6707aa765fa92a00aa57cbe889951dc15b)
Merged-In: Iac9f27f14bae29e0fabc31e05da2357f6f4f16c7
Change-Id: Iac9f27f14bae29e0fabc31e05da2357f6f4f16c7
parent 254cf256
Loading
Loading
Loading
Loading
+6 −2
Original line number Original line Diff line number Diff line
@@ -834,9 +834,13 @@ public class RingtoneManager {
                        + " ignored: failure to find mimeType (no access from this context?)");
                        + " ignored: failure to find mimeType (no access from this context?)");
                return;
                return;
            }
            }
            if (!(mimeType.startsWith("audio/") || mimeType.equals("application/ogg"))) {
            if (!(mimeType.startsWith("audio/") || mimeType.equals("application/ogg")
                    || mimeType.equals("application/x-flac")
                    // also check for video ringtones
                    || mimeType.startsWith("video/") || mimeType.equals("application/mp4"))) {
                Log.e(TAG, "setActualDefaultRingtoneUri for URI:" + ringtoneUri
                Log.e(TAG, "setActualDefaultRingtoneUri for URI:" + ringtoneUri
                        + " ignored: associated mimeType:" + mimeType + " is not an audio type");
                        + " ignored: associated MIME type:" + mimeType
                        + " is not a recognized audio or video type");
                return;
                return;
            }
            }
        }
        }
+7 −4
Original line number Original line Diff line number Diff line
@@ -1906,7 +1906,7 @@ public class SettingsProvider extends ContentProvider {
            cacheName = Settings.System.ALARM_ALERT_CACHE;
            cacheName = Settings.System.ALARM_ALERT_CACHE;
        }
        }
        if (cacheName != null) {
        if (cacheName != null) {
            if (!isValidAudioUri(name, value)) {
            if (!isValidMediaUri(name, value)) {
                return false;
                return false;
            }
            }
            final File cacheFile = new File(
            final File cacheFile = new File(
@@ -1941,7 +1941,7 @@ public class SettingsProvider extends ContentProvider {
        }
        }
    }
    }


    private boolean isValidAudioUri(String name, String uri) {
    private boolean isValidMediaUri(String name, String uri) {
        if (uri != null) {
        if (uri != null) {
            Uri audioUri = Uri.parse(uri);
            Uri audioUri = Uri.parse(uri);
            if (Settings.AUTHORITY.equals(
            if (Settings.AUTHORITY.equals(
@@ -1959,10 +1959,13 @@ public class SettingsProvider extends ContentProvider {
                return false;
                return false;
            }
            }
            if (!(mimeType.startsWith("audio/") || mimeType.equals("application/ogg")
            if (!(mimeType.startsWith("audio/") || mimeType.equals("application/ogg")
                    || mimeType.equals("application/x-flac"))) {
                    || mimeType.equals("application/x-flac")
                    // also check for video ringtones
                    || mimeType.startsWith("video/") || mimeType.equals("application/mp4"))) {
                Slog.e(LOG_TAG,
                Slog.e(LOG_TAG,
                        "mutateSystemSetting for setting: " + name + " URI: " + audioUri
                        "mutateSystemSetting for setting: " + name + " URI: " + audioUri
                        + " ignored: associated mimeType: " + mimeType + " is not an audio type");
                        + " ignored: associated MIME type: " + mimeType
                        + " is not a recognized audio or video type");
                return false;
                return false;
            }
            }
        }
        }