diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/VibratorHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/VibratorHelper.java index 324e97294f4ea..645595c1f7bf7 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/VibratorHelper.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/VibratorHelper.java @@ -23,6 +23,7 @@ import android.os.Process; import android.os.VibrationAttributes; import android.os.VibrationEffect; import android.os.Vibrator; +import android.view.View; import androidx.annotation.VisibleForTesting; @@ -151,4 +152,20 @@ public class VibratorHelper { BIOMETRIC_ERROR_VIBRATION_EFFECT, reason, HARDWARE_FEEDBACK_VIBRATION_ATTRIBUTES); } + + /** + * Perform a vibration using a view and the one-way API with flags + * @see View#performHapticFeedback(int feedbackConstant, int flags) + */ + public void performHapticFeedback(@NonNull View view, int feedbackConstant, int flags) { + view.performHapticFeedback(feedbackConstant, flags); + } + + /** + * Perform a vibration using a view and the one-way API + * @see View#performHapticFeedback(int feedbackConstant) + */ + public void performHapticFeedback(@NonNull View view, int feedbackConstant) { + view.performHapticFeedback(feedbackConstant); + } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/VibratorHelperTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/VibratorHelperTest.kt index ad908e7f80003..aab4bc361d7b6 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/VibratorHelperTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/VibratorHelperTest.kt @@ -6,6 +6,8 @@ import android.os.VibrationAttributes import android.os.VibrationEffect import android.os.Vibrator import android.testing.AndroidTestingRunner +import android.view.HapticFeedbackConstants +import android.view.View import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.util.mockito.eq @@ -33,6 +35,7 @@ class VibratorHelperTest : SysuiTestCase() { @Mock lateinit var vibrator: Vibrator @Mock lateinit var executor: Executor + @Mock lateinit var view: View @Captor lateinit var backgroundTaskCaptor: ArgumentCaptor lateinit var vibratorHelper: VibratorHelper @@ -71,6 +74,21 @@ class VibratorHelperTest : SysuiTestCase() { verifyAsync().vibrate(any(VibrationEffect::class.java)) } + @Test + fun testPerformHapticFeedback() { + val constant = HapticFeedbackConstants.CONFIRM + vibratorHelper.performHapticFeedback(view, constant) + verify(view).performHapticFeedback(eq(constant)) + } + + @Test + fun testPerformHapticFeedback_withFlags() { + val constant = HapticFeedbackConstants.CONFIRM + val flag = HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING + vibratorHelper.performHapticFeedback(view, constant, flag) + verify(view).performHapticFeedback(eq(constant), eq(flag)) + } + @Test fun testHasVibrator() { assertThat(vibratorHelper.hasVibrator()).isTrue()