From a851e682723e20d652618a8590ceb75a3771b2d9 Mon Sep 17 00:00:00 2001 From: lbill Date: Mon, 24 Jul 2023 07:04:18 +0000 Subject: [PATCH] Fix no vibration when enroll init stage after receive onEnrollmentHelp Change the behavior of vibration when 1. Init stage, don't vibrate if onEnrollmentHelp invoke 2. Then next enroll progress update, should vibrate Note: This onEnrollmentHelp is invoked by FINGERPRINT_ACQUIRED_PARTIAL Test: Should vibration when the progress 1st indicating after lightly press Test: m RunSettingsRoboTests -j30 ROBOTEST_FILTER=FingerprintEnrollEnrollingTest Bug: 290723009 Change-Id: Ie056aac8b3251fb3da6dccd95254fb30628fa65e --- .../UdfpsEnrollProgressBarDrawable.java | 2 +- .../FingerprintEnrollEnrollingTest.java | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/biometrics/fingerprint/UdfpsEnrollProgressBarDrawable.java b/src/com/android/settings/biometrics/fingerprint/UdfpsEnrollProgressBarDrawable.java index aa3f77010bc..75251cf381f 100644 --- a/src/com/android/settings/biometrics/fingerprint/UdfpsEnrollProgressBarDrawable.java +++ b/src/com/android/settings/biometrics/fingerprint/UdfpsEnrollProgressBarDrawable.java @@ -202,6 +202,7 @@ public class UdfpsEnrollProgressBarDrawable extends Drawable { return; } + mShowingHelp = showingHelp; if (mShowingHelp) { if (mVibrator != null && mIsAccessibilityEnabled) { mVibrator.vibrate(Process.myUid(), mContext.getOpPackageName(), @@ -228,7 +229,6 @@ public class UdfpsEnrollProgressBarDrawable extends Drawable { } } - mShowingHelp = showingHelp; mRemainingSteps = remainingSteps; mTotalSteps = totalSteps; diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java index 0f12d1e5023..a23ededd477 100644 --- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrollingTest.java @@ -147,6 +147,23 @@ public class FingerprintEnrollEnrollingTest { verify(mVibrator, never()).vibrate(anyInt(), anyString(), any(), anyString(), any()); } + @Test + public void fingerprintUdfpsEnrollInitStage_afterOnEnrollmentHelp_shouldVibrate() { + initializeActivityFor(TYPE_UDFPS_OPTICAL); + + assertThat(getLayout().getDescriptionText()).isNotEqualTo(""); + + mActivity.configureEnrollmentStage(0 /* lottie */); + mActivity.onEnrollmentHelp(1/* FINGERPRINT_ACQUIRED_PARTIAL */, mContext.getString( + com.android.internal.R.string.fingerprint_acquired_partial)); + + verify(mVibrator, never()).vibrate(anyInt(), anyString(), any(), anyString(), any()); + + mActivity.onEnrollmentProgressChange(1, 1); + verify(mVibrator).vibrate(anyInt(), anyString(), any(), anyString(), any()); + + } + @Test public void fingerprintUdfpsOverlayEnrollment_gainFocus_shouldNotCancel() { initializeActivityFor(TYPE_UDFPS_OPTICAL);