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

Commit f40b954f authored by Michael Wright's avatar Michael Wright Committed by gitbuildkicker
Browse files

Catch exceptions in Vibrator to maintain compatibility

Bug: 36827833
Test: manual
Change-Id: I5ff165c4a1d7ee5c175cf4b50d4899f5e2092b5d
(cherry picked from commit 6a40713e)
parent 4a780016
Loading
Loading
Loading
Loading
+18 −6
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package android.os;
import android.app.ActivityThread;
import android.content.Context;
import android.media.AudioAttributes;
import android.util.Log;

/**
 * Class that operates the vibrator on the device.
@@ -30,6 +31,7 @@ import android.media.AudioAttributes;
 * {@link Context#getSystemService} with {@link Context#VIBRATOR_SERVICE} as the argument.
 */
public abstract class Vibrator {
    private static final String TAG = "Vibrator";

    private final String mPackageName;

@@ -90,9 +92,14 @@ public abstract class Vibrator {
     */
    @Deprecated
    public void vibrate(long milliseconds, AudioAttributes attributes) {
        try {
            // This ignores all exceptions to stay compatible with pre-O implementations.
            VibrationEffect effect =
                    VibrationEffect.createOneShot(milliseconds, VibrationEffect.DEFAULT_AMPLITUDE);
            vibrate(effect, attributes);
        } catch (IllegalArgumentException iae) {
            Log.e(TAG, "Failed to create VibrationEffect", iae);
        }
    }

    /**
@@ -150,12 +157,17 @@ public abstract class Vibrator {
     */
    @Deprecated
    public void vibrate(long[] pattern, int repeat, AudioAttributes attributes) {
        // This call needs to continue throwing ArrayIndexOutOfBoundsException for compatibility
        // purposes, whereas VibrationEffect throws an IllegalArgumentException.
        // This call needs to continue throwing ArrayIndexOutOfBoundsException but ignore all other
        // exceptions for compatibility purposes
        if (repeat < -1 || repeat >= pattern.length) {
            throw new ArrayIndexOutOfBoundsException();
        }

        try {
            vibrate(VibrationEffect.createWaveform(pattern, repeat), attributes);
        } catch (IllegalArgumentException iae) {
            Log.e(TAG, "Failed to create VibrationEffect", iae);
        }
    }

    public void vibrate(VibrationEffect vibe) {