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

Commit f0a8fb01 authored by Juan Sebastian Martinez's avatar Juan Sebastian Martinez
Browse files

Addition of a vibrate method that allows a reason to be specified.

Test: VibratorTest
Flag: NONE usage of this hidden api will be flagged by its use cases.
Bug: 355061544

Change-Id: I3c9bd409f26efdae2c3f8eedda0f4c176def1f53
parent 61d29046
Loading
Loading
Loading
Loading
+21 −1
Original line number Diff line number Diff line
@@ -497,7 +497,27 @@ public abstract class Vibrator {
     */
    @RequiresPermission(android.Manifest.permission.VIBRATE)
    public void vibrate(@NonNull VibrationEffect vibe, @NonNull VibrationAttributes attributes) {
        vibrate(Process.myUid(), mPackageName, vibe, null, attributes);
        vibrate(vibe, attributes, null);
    }

    /**
     * Vibrate with a given effect.
     *
     * <p>The app should be in the foreground for the vibration to happen. Background apps should
     * specify a ringtone, notification or alarm usage in order to vibrate.</p>
     *
     * @param vibe       {@link VibrationEffect} describing the vibration to be performed.
     * @param attributes {@link VibrationAttributes} corresponding to the vibration. For example,
     *                   specify {@link VibrationAttributes#USAGE_ALARM} for alarm vibrations or
     *                   {@link VibrationAttributes#USAGE_RINGTONE} for vibrations associated with
     *                   incoming calls.
     * @param reason     the reason for this vibration, used for debugging purposes.
     * @hide
     */
    @RequiresPermission(android.Manifest.permission.VIBRATE)
    public void vibrate(@NonNull VibrationEffect vibe,
            @NonNull VibrationAttributes attributes, @NonNull String reason) {
        vibrate(Process.myUid(), mPackageName, vibe, reason, attributes);
    }

    /**
+12 −0
Original line number Diff line number Diff line
@@ -221,6 +221,18 @@ public class VibratorTest {
        verify(mVibratorSpy).vibrate(anyInt(), anyString(), eq(effect), isNull(), eq(attributes));
    }

    @Test
    public void vibrate_withVibrationAttributesAndReason_usesGivenAttributesAndReason() {
        VibrationEffect effect = VibrationEffect.get(VibrationEffect.EFFECT_CLICK);
        VibrationAttributes attributes = new VibrationAttributes.Builder().setUsage(
                VibrationAttributes.USAGE_TOUCH).build();
        String reason = "reason";

        mVibratorSpy.vibrate(effect, attributes, reason);

        verify(mVibratorSpy).vibrate(anyInt(), anyString(), eq(effect), eq(reason), eq(attributes));
    }

    @Test
    public void vibrate_withAudioAttributes_createsVibrationAttributesWithSameUsage() {
        VibrationEffect effect = VibrationEffect.get(VibrationEffect.EFFECT_CLICK);