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

Commit 561d7591 authored by yumeichen's avatar yumeichen
Browse files

Check if the uri is opaque when createVibrationEffectFromSoundUri

and catch exceptions to avoid other failed cases

Flag: com.android.server.notification.notification_vibration_in_sound_uri
Test: atest VibratorHelperTest
Test: atest NotificationAttentionHelperTest
Bug: 366279084
Bug: 366386060
Bug: 366296627
Change-Id: I23465558aa0bcebf43e59d4d65c67bc452f931b0
parent ce3e6e24
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -218,10 +218,16 @@ public final class VibratorHelper {
     * @param uri {@code Uri} an uri including query parameter "vibraiton_uri"
     */
    public @Nullable VibrationEffect createVibrationEffectFromSoundUri(Uri uri) {
        if (uri == null) {
        if (uri == null || uri.isOpaque()) {
            return null;
        }

        try {
            return Utils.parseVibrationEffect(mVibrator, Utils.getVibrationUri(uri));
        } catch (Exception e) {
            Slog.e(TAG, "Failed to get vibration effect: ", e);
        }
        return null;
    }

    /** Returns if a given vibration can be played by the vibrator that does notification buzz. */
+6 −0
Original line number Diff line number Diff line
@@ -103,6 +103,12 @@ public class VibratorHelperTest extends UiServiceTestCase {
        assertNull(mVibratorHelper.createVibrationEffectFromSoundUri(Uri.EMPTY));
    }

    @Test
    public void createVibrationEffectFromSoundUri_opaqueUri() {
        Uri uri = Uri.parse("a:b#c");
        assertNull(mVibratorHelper.createVibrationEffectFromSoundUri(uri));
    }

    @Test
    public void createVibrationEffectFromSoundUri_uriWithoutRequiredQueryParameter() {
        Uri uri = Settings.System.DEFAULT_NOTIFICATION_URI;